Wyjaśnienie kodu kroczącego

13

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.

NickHalden
źródło
Odpowiedzi również na crypto.stackexchange.com/questions/18311/...
uchwyt

Odpowiedzi:

10

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.

Adam Davis
źródło
Ach, musiałem zapomnieć o części PRNG „bez powtarzania sekwencji”, to bardzo ważne. Jaka jest zaleta przesyłania informacji, która pozwala odbiorcy określić kod sprzężenia zwrotnego? Wydaje się, że mniej bezpieczne niż po prostu wybranie kodu zwrotnego i produkcji zarówno nadajnik i odbiornik z wiadomo ...
NickHalden
@NickHalden kod zwrotny jest inny dla każdego pilota, a klienci będą chcieli później dodać więcej pilotów lub zastąpić brakujące piloty. Jest potrzebny tylko do treningu. Niektóre nieco bardziej bezpieczne wersje wymagają określonej sekwencji naciśnięć przycisków na pilocie, zanim wyśle ​​dodatkowe informacje zwrotne, ale ogólnie cały system jest na tyle bezpieczny, że nawet jeśli złamiesz szyfrowanie, nadal potrzebujesz dużo więcej informacji trochę informacji wystarczy, aby uzyskać cały kod opinii.
Adam Davis
8

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:

  • odbiornik utrzymuje bazę danych wszystkich nadajników, wpisaną w numer seryjny.
  • każdy nadajnik jest powiązany z symetrycznym kluczem szyfrującym (64-bitowym), który znajduje się w układzie scalonym, a także w bazie danych odbiornika.
  • każdy nadajnik jest powiązany z 16-bitowym cyklicznym numerem sekwencyjnym, również przechowywanym na chipie i bazie danych.
  • gdy nadajnik jest aktywowany, zwiększa swój numer sekwencyjny modulo 65536 (zawija 16 bitów) i wysyła pakiet składający się z maski bitowej reprezentującej naciśnięte przyciski, jego numer seryjny i zaszyfrowaną wersję numeru seryjnego.
  • odbiornik pasuje do numeru seryjnego w bazie danych, wyciąga klucz i odszyfrowuje numer seryjny.
  • numer seryjny musi być nowy; nie może to być ostatnio używany numer seryjny, który chroni przed atakami powtórkowymi. (Patrz ryc. 7.3 w arkuszu danych).
  • jeśli numer seryjny zostanie zweryfikowany, wówczas odbiornik może aktywować funkcjonalność na podstawie maski bitowej, które przyciski są naciskane.
  • jeśli nowy numer seryjny jest wyprzedzony o więcej niż 16 wartości (użytkownik kilkakrotnie przypadkowo nacisnął przyciski z dala od odbiornika), konieczne jest dodatkowe uścisk dłoni w celu ponownej synchronizacji, co wymaga dodatkowego naciśnięcia przycisku. (Użytkownik wykona dodatkowe naciśnięcie przycisku, wierząc, że odbiór jest zły).

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.

Kaz
źródło