E0 (algorytm)

E0 to algorytm szyfrowania strumienia używany przez protokół Bluetooth do ochrony transmisji. Tworzy pseudolosową sekwencję, za pomocą której wykonujemy XOR z danymi. Klucz może mieć różną wielkość, ale jego długość wynosi zwykle 128 bitów .

W każdej iteracji E0 tworzy bit przy użyciu czterech rejestrów przesuwnych o różnych długościach (25, 31, 33, 39 bitów) i dwóch stanach wewnętrznych po 2 bity każdy. Przy każdym skoku zegara rejestry są przesuwane, a dwa stany są aktualizowane przy użyciu stanu bieżącego, stanu poprzedniego i wartości obecnych w rejestrach przesuwnych. Cztery bity są pobierane z czterech rejestrów przesuwnych i sumowane. Algorytm następnie wykonuje XOR pomiędzy tą sumą a wartością 2-bitowego rejestru, pierwszy otrzymany w ten sposób bit jest wyjściem do szyfrowania.

E0 jest podzielony na trzy części:

Przygotowanie stanu początkowego w Bluetooth wykorzystuje taką samą strukturę, jak tworzenie losowego strumienia bitów. Jesteśmy zatem w obecności dwóch sprzężonych E0. 132-bitowy stan początkowy jest wytwarzany przez pierwszy stopień z czterech wejść (128-bitowy klucz, 48-bitowy adres Bluetooth i 26-bitowy licznik główny). Wynik przechodzi następnie do operacji wielomianowej i otrzymujemy klucz, który przekazujemy do następnego etapu, czyli tego, który utworzy strumień używany do szyfrowania. Klucz ma zmienną wielkość, ale zawsze stanowi wielokrotność 2 (od 8 do 128 bitów). Zwykle używane jest 128 bitów. Te bity są wprowadzane do rejestrów przesuwnych drugiego stopnia. 200 bitów pseudolosowych jest następnie wytwarzanych przy użyciu 200 impulsów zegarowych z generatora, ostatnie 128 bitów jest wstawianych do rejestrów przesuwnych. To jest początkowy stan generatora przepływu.

Kryptanaliza

Kilka ataków i prób kryptoanalizy zostało przeprowadzonych na E0 i protokole Bluetooth .

W 1999 roku Miia Hermelin i Kaisa Nyberg wykazali, że E0 prawdopodobnie zostanie przerwane przy 2 64 operacjach (zamiast 2 128 ), jeśli ma wyjście teoretyczne 2 64 bity. Ten typ ataku został dodatkowo udoskonalony przez Kishana Chand Guptę i Palasha Sarkara . Scott Fluhrer z Cisco Systems zademonstrował teoretyczny atak z obliczeniem wstępnym 280 operacji i złożonością wyszukiwania kluczy rzędu 265 operacji. Dochodzi do wniosku, że maksymalne bezpieczeństwo E0 jest równoważne kluczowi 65-bitowemu, a dłuższe klucze nie poprawiają bezpieczeństwa. Optymalizuje zatem poprzedni atak spowodowany przez Golica Baginiego i Morgagniego, który wymagał 2 70 operacji.

W 2000 roku fiński Juhia Vainio zwrócił uwagę na problemy związane z niewłaściwym użyciem E0, a bardziej ogólnie na możliwe wady Bluetooth.

W 2004 roku Serge Vaudenay i Yi Lu wydali pierwsze 24-bitowe, używając statystycznego ataku na 2 35 ramek Bluetooth (jedna ramka ma długość 2745 bitów). Ostateczna złożoność odzyskiwania klucza jest rzędu 240 operacji. Następnie udoskonalają swój atak, aby osiągnąć najlepszą opublikowaną do tej pory metodę, tj. 237 dla wcześniejszych obliczeń i 239 dla faktycznego poszukiwania klucza.

Zobacz też

Linki zewnętrzne