Czy ktoś mógłby wyjaśnić, jak działają zmienne protokoły kodu, takie jak KeeLoq? Rozumiem podstawową zasadę, że za każdym razem używają innego kodu, więc nie można po prostu użyć ataku powtórkowego, ale nie rozumiem, w jaki sposób jedna strona weryfikuje poprawny kod itp.
Ponadto, w jaki sposób wykonują wstępną synchronizację, jeśli indeks do zmiennych kodów nie jest wcześniej znany / udostępniany?
Jeśli musisz użyć Keeloq jako przykładu do wyjaśnienia, to jest w porządku, ale wolałbym ogólne wyjaśnienie kroczących kodów.
Odpowiedzi:
Kody kroczące wymagają kilku części do poprawnego działania. Tutaj opiszę ogólną implementację, która wykorzystuje wszystkie części w określony sposób. Inne systemy są odmianami tego tematu, ale generalnie stosują wiele takich samych technik w podobny sposób. Zamiast próbować opisać pełną implementację i sposób jej działania od razu, opiszę prosty system i dodam złożoność, dopóki nie osiągniemy systemu kryptograficznie bezpiecznego.
Niekryptograficzny zmienny kod to po prostu nadajnik i odbiornik, które używają tego samego generatora liczb pseudolosowych (PRNG). Ten generator zawiera dwie ważne informacje: obliczenia i poprzednio wygenerowaną liczbę. Obliczenie jest ogólnie równaniem liniowej informacji zwrotnej, które można przedstawić za pomocą pojedynczej liczby. Po zasileniu PRNG poprzednim numerem i utrzymaniu tego samego numeru sprzężenia zwrotnego generowana jest określona sekwencja liczb. Sekwencja nie ma powtarzanych sekwencji, dopóki nie przejdzie przez każdą liczbę, którą może wygenerować, a następnie zaczyna się od nowa z tą samą sekwencją.
Jeśli zarówno zdalny, jak i nadajnik znają numer zwrotny i bieżący numer, wówczas gdy pilot przesyła następny numer, odbiornik może przetestować go na własnym generatorze. Jeśli pasuje, aktywuje się. Jeśli nie, przewija sekwencję, aż znajdzie numer wysłany przez pilota. Jeśli ponownie naciśniesz pilota, powinien on pasować i uaktywni się, ponieważ poprzednia transmisja zsynchronizowała już generatory liczb. Dlatego czasami trzeba dwukrotnie nacisnąć przycisk odblokowania - odbiornik lub nadajnik nie są zsynchronizowane.
To krocząca część kodu. Jeśli PRNG jest wystarczająco długi, bardzo trudno jest znaleźć numer zwrotny bez wielu liczb w sekwencji z rzędu, co jest trudne do uzyskania w normalnym użyciu. Ale to nie jest kryptograficznie bezpieczne.
Ponadto dodajesz typowe szyfrowanie. Producent pojazdu używa specjalnego tajnego klucza do nadajnika i odbiornika. W zależności od producenta może się okazać, że każdy model i rok mają inny kod, lub mogą udostępniać kod kilku modelom pojazdów i przez kilka lat. Kompromis polega na tym, że każdy z nich wymaga zapasu innego pilota, ale problem z udostępnianiem kodu w wielu modelach polega na tym, że jeśli zostanie zepsuty, więcej samochodów będzie podatnych na atak.
Za szyfrowaniem masz informacje o przycisku, wygenerowany numer PRNG i trochę informacji o numerze zwrotnym. Nie wystarczy, aby PRNG od zera, ale wystarczy, że po pewnej liczbie naciśnięć przycisków i przy pewnych wewnętrznych informacjach o ograniczonej przestrzeni numer zwrotny może obejmować (ponownie, producent, specyficzny dla linii), wtedy odbiornik może po kilku szkoleniach transmisje, określ numer opinii i rozpocznij śledzenie PRNG dla tego pilota.
Kroczący kod ma jedynie na celu powstrzymanie ataków z powtórkami. Szyfrowanie ma na celu zabezpieczenie ruchomego kodu, aby uniknąć jego złamania. Z jednym lub drugim systemem byłoby zbyt łatwo złamać. Ponieważ producent kontroluje zarówno nadajnik, jak i odbiornik, szkolenie nie obejmuje kryptografii klucza publicznego ani niczego szczególnie zaangażowanego. Zapobiega również pracy breloków na rynku wtórnym w samochodach wyposażonych w tego typu systemy.
Jednak ciągły kod nie jest nieprzepuszczalny. Stary system keeloq został skutecznie zaatakowany zaledwie kilka lat temu (po dekadzie użytkowania), dzięki czemu można znaleźć kod szyfrujący producenta, a kody zmienne można łatwiej znaleźć. Wcześniej został zaatakowany w sposób, który pozwalał ludziom zabierać pojazdy bez faktycznego łamania kodu. W odpowiedzi nowy klucz szyfrowania ma 60 bitów. Nie tak bezpieczny, jak wiele nowoczesnych systemów szyfrowania, ale wystarczająco bezpieczny, aby prawdopodobnie trwał jeszcze wiele lat, zanim się zepsuje.
źródło
Po raz pierwszy zetknąłem się z KeeLoq podczas badania układu w mechanizmie do otwierania drzwi garażowych. Microchip datasheet robi dobrą robotę wyjaśniając, jak to działa.
W skrócie:
Dodanie nowego nadajnika do bazy danych odbiorników jest niejasne, na wysokim poziomie, do metody konfiguracji polegającej na naciśnięciu przycisku w celu dodania klientów do punktu dostępu Wi-Fi. Mówi się, że odbiornik przeszedł w tryb, w którym akceptuje nowy nadajnik.
Nowy nadajnik może zostać przyjęty z informacji przekazanych w zwykłych komunikatach aktywacyjnych, jeśli odbiornik i nadajnik mają ten sam tajny identyfikator producenta. Wynika to z faktu, że 64-bitowy klucz szyfrujący pochodzi z identyfikatora producenta i informacji szeregowych odbiornika. (Patrz rozdział 7.1).
Istnieje bezpieczniejsza alternatywa: „Bezpieczna nauka”. Jest to inicjowane w specjalny sposób na nadajniku (trzy przyciski wciśnięte jednocześnie). Nadajnik wysyła specjalny pakiet: 60-bitową wartość początkową, z której pochodzi klucz szyfrujący, prawdopodobnie nie w zależności od identyfikatora producenta lub numeru seryjnego.
Gdy odbiornik nie jest w trybie uczenia, oczywiście odrzuca transmisje z nadajników, o których nie wie.
źródło