Implementacja dynamicznego kodu z licznikiem i tajnym kluczem w systemach radiowych

Re: kod dynamicznie zmienny





Poprzedni Następny
Wiadomość
Spis treści
From: Jacek Rafal Radzikowski <J.Radzikowski_at_nospam_itl.waw.pl>
Subject: Re: kod dynamicznie zmienny
Date: 5 Jun 2000 01:01:24 GMT


J.F. <jfox_at_nospam_poczta.onet.pl> wrote:
Jacek Rafal Radzikowski wrote:
[..]Chodzi o to aby wyslanie jeszcze raz tej samej informacji nie bylo
zdekodowane jako prawidlowy kod. Mozna np. w kod wmieszac dane z licznika
zliczajacego ilosc wyslan,
nawet powiedzialbym trzeba ...
ale co jesli przez jakis czas odbiornik nie widzi nadajnika (po za zasiegem),
Nic. Licznik 16 bitow, jak jest kod "pozniejszy" niz ostatnio odebrany
to przyjmujemy.
Ja bym dołożył jeszcze jakiś klucz.
Tzn cos innego niz identyfikator systemu?
Tak. Jakiś ciąg "znany" nadajnikowi i odbiornikowi, a nieznany
osobom postronnym.

W sensie ze np moj samochod otwiera tylko pilot wysylajacy
identyfikator 1034722 ?
nie, id nadajnika to coś zupełnie innego (zresztą i identyfikatorze
napisałem nieco niżej)

I np. liczenie MD5.
IMHO juz niepotrzebne. Jak dobrze zaszyfrujesz to po przeklamaniu
klucz/identyfikator sie nie bedzie zgadzal..
Można szyfrować, można liczyć skrót. W tym zastosowaniu obydwie operacje są
równoważne (znaczeniowo).

I do tego jeszcze np. identyfikator nadajnika.
W sensie identyfikacji ktory nadajnik uzyto do otwarcia? Moze byc cenne
I owszem. Łatwo stwierdzić kto, łatwo zablokować określony nadajnik.

W takim systemie skrót jest liczony z czwórki
(klucz,licznik,identyfikator,rozkaz), a wysyłana w eter czwórka:
(licznik,identyfikator,rozkaz,MD5(.)).
Jawnie? Czy zaszyfrowana ?
Jawnie. Niepodrabialność zapewnia tajny "klucz".

Po stronie odbiornika wykonywana jest
analogiczna operacja, przy czym licznik, identyfikator i rozkaz są brane
z odebranej ramki, a klucz a pamięci konfiguracji. Następnie skróty obliczony i
odebrany są porównywane, a polecenie przyjmowane jedynie w krzypadku, kiedy
się zgadzają.
A MD5 [sie chyba troche nie nadaje - za dluga] jest odporna na probe
znalezienia
To będzie zależeć od długości klucza. Jeśli bedzie to 16 bitów, to jego
będzie można bez trudu odgadywać w czasie rzeczywistym, nawet na niezbyt
wydajnym komputerze. Ale już przy 64 bitach może to być trudne. A przecież
klucz może mieć długość dowolną. A samo MD5 jest raczej trudno odwracalne :)

klucza na podstawie kilku probek? Ona troche co innego miala na celu ..
coś innego poza liczeniem skrótu ? a co takiego ?

Dzięki wysyłaniu identyfikatora możemy posługiwać się różnymi
nadajnikami, z różnymi kluczami.
To w zasadzie w kazdym rozwiazaniu moglo byc. Jak sie reaguje na jeden
identyfikator to mozna i 10...
Mogło. Ale tutaj identyfikator znacząco przyspiesza wyliczenia. Zamiast
sprawdzać poprawność po kolei dla n kluczy (do pierwszego trafienia),
sprawdzamy tylko ten jeden, właściwy.

Z kolei klucz zapobiega
łatwemu podszyciu się pod zarejetrowany nadajnik (licznik tego nie zapewnia.
Bo to nie licznik ma zapewniac, tylko szyfrowanie
pary (identyfikator, licznik).
Szyfrowanie na tyle dobrym algorytmem zeby nie dalo sie na pierwszy
i drugi rzut oka zauwazyc czym roznia sie kolejno wysylane kody..
Wystarczy, że wysyłane ciągi będą niepodrabialne. Chyba, że nie chcemy ujawniać
treści przesyłanych poleceń.

Znajac funkcje przeksztalcajaca każdy może wyliczyć sobie odpowiedni kod.
Ale jej nie znasz. Moze nawet i znasz - to jest powiedzmy DES, tyle ze
klucz do szyfrowania jest juz tajemnica firmy. Albo klienta...
Security by obscurity ? kiepski pomysł :) Lepiej założyć, że "napastnik"
wie wszystko o budowie kodu, a oprzeć sie na tajności jednego z parametrów.
Natomiast mniej istotne (ale nie nieważne) jest w jaki sposób zostanie
zrealizowane zabezpieczenie. Najważniejszą modyfikacją w stosunku do wersji
z licznikiem było wprowadzenie klucza. A to, czy dalej będziemy liczyć skrót
czy szyfrować, jest tylko szczegółem (dość istotnym dla bezpieczeństwa i
implementacji, ale szczegółem jeśli chodzi o sam pomysł).

Ba - przy metodach szyfrowania typu RSA nawet kradziez nadajnika
i jego "zlamanie" [a to nie jest takie proste jak klucz siedzi
w zabezpieczonym procesorku czy specjalizowanej kosci] nie pomaga
otworzyc zamka - jesli klient zdazy zdezaktywowac ten nadajnik ..
Jeśli ktoś zrobi RSA na arytmetyce 32bitowej, to wcale nie trzeba
będzie nic kraść. Po przechwyceniu transmisji klient nawet nie
zdąży zamknąć bramy, a będzie musiał wymieniać wszystkie "klucze" -
stare będą doskonale znane wszystkim zainteresowanym :)

pzdr.
j.


Poprzedni Następny
Wiadomość
Spis treści
From: "J.F." <jfox_at_nospam_poczta.onet.pl>
Subject: Re: kod dynamicznie zmienny
Date: Tue, 06 Jun 2000 07:27:48 GMT


Jacek Rafal Radzikowski wrote:
Nic. Licznik 16 bitow, jak jest kod "pozniejszy" niz ostatnio odebrany to przyjmujemy.
Ja bym dołożył jeszcze jakiś klucz.
Tzn cos innego niz identyfikator systemu?
Tak. Jakiś ciąg "znany" nadajnikowi i odbiornikowi, a nieznany osobom postronnym.

Wrecz obowiazkowo, tylko zeby sie nie pomylil z kluczem szyfrowania
uzywanym pozniej do szyfrowania. Dlatego wolalbym go nazywac
jednak identyfikatorem, ale niech na razie zostanie kluczem.

I np. liczenie MD5.
IMHO juz niepotrzebne. Jak dobrze zaszyfrujesz to po przeklamaniu
klucz/identyfikator sie nie bedzie zgadzal..
Można szyfrować, można liczyć skrót. W tym zastosowaniu obydwie operacje są
równoważne (znaczeniowo).

Tego wlasnie nie jestem pewien - patrz dalej.

W takim systemie skrót jest liczony z czwórki
(klucz,licznik,identyfikator,rozkaz), a wysyłana w eter czwórka:
(licznik,identyfikator,rozkaz,MD5(.)).
Jawnie? Czy zaszyfrowana ?
Jawnie. Niepodrabialność zapewnia tajny "klucz".

Po stronie odbiornika wykonywana jest
analogiczna operacja, przy czym licznik, identyfikator i rozkaz są brane
z odebranej ramki, a klucz a pamięci konfiguracji. Następnie skróty obliczony i
odebrany są porównywane, a polecenie przyjmowane jedynie w krzypadku, kiedy
się zgadzają.
A MD5 [sie chyba troche nie nadaje - za dluga] jest odporna na probe
znalezienia
To będzie zależeć od długości klucza. Jeśli bedzie to 16 bitów, to jego
będzie można bez trudu odgadywać w czasie rzeczywistym, nawet na niezbyt
wydajnym komputerze. Ale już przy 64 bitach może to być trudne. A przecież
klucz może mieć długość dowolną. A samo MD5 jest raczej trudno odwracalne :)

klucza na podstawie kilku probek? Ona troche co innego miala na celu ..
coś innego poza liczeniem skrótu ? a co takiego ?

Nie - ona miala na celu wlasnie liczenie skrotu. A np DES odpornosc
na lamanie. Jesli wezmiesz [nasluch] kilka wiadomosci
[klucz, id, rozkaz, licznik], o ktorych wiesz ze sie niewiele od siebie
roznia [a wrecz znasz je przed i po zaszyfrowaniu], to ciagle
znalezienie
klucza_szyfrowania jest trudne. Wiec trudno jest "wynalezc" nastepna
wiadomosc.

Jesli chodzi znalezienie klucza na podstawie znajomosci MD5 z
[[klucz, id, rozkaz, licznik], gdzie id, rozkaz i licznik znasz,
to nie jestem pewien czy jest to takie trudne - zadanie MD5 nie na tym
polegalo zeby to bylo trudne. Byc moze nawet nie trzeba klucza
szukac - moze da sie wyliczyc jak sie zmieni MD5 po zmianie kilku
bitow licznika..

Dzięki wysyłaniu identyfikatora możemy posługiwać się różnymi
nadajnikami, z różnymi kluczami.
To w zasadzie w kazdym rozwiazaniu moglo byc. Jak sie reaguje na jeden
identyfikator to mozna i 10...
Mogło. Ale tutaj identyfikator znacząco przyspiesza wyliczenia. Zamiast
sprawdzać poprawność po kolei dla n kluczy (do pierwszego trafienia),
sprawdzamy tylko ten jeden, właściwy.

Przy pomysle z szyfrowaniem problemu nie ma - po rozszyfrowaniu
mamy juz klucz i wystarczy tylko sprawdzic ,,

Znajac funkcje przeksztalcajaca każdy może wyliczyć sobie odpowiedni kod.
Ale jej nie znasz. Moze nawet i znasz - to jest powiedzmy DES, tyle ze
klucz do szyfrowania jest juz tajemnica firmy. Albo klienta...
Security by obscurity ? kiepski pomysł :)

Czasem sie sprawdza, a na pewno utrudnia hackerowi robote

Lepiej założyć, że "napastnik"
wie wszystko o budowie kodu, a oprzeć sie na tajności jednego z parametrów.

wlasnie do tego ma sluzyc klucz_szyfrowania i czesciowo klucz..

Natomiast mniej istotne (ale nie nieważne) jest w jaki sposób zostanie
zrealizowane zabezpieczenie. Najważniejszą modyfikacją w stosunku do wersji
z licznikiem było wprowadzenie klucza.

Nigdy nie sugerowalem samego licznika. Inaczej wystarczylby generator
blyskow losowych zeby trafic.

Ba - przy metodach szyfrowania typu RSA nawet kradziez nadajnika
i jego "zlamanie" [a to nie jest takie proste jak klucz siedzi
w zabezpieczonym procesorku czy specjalizowanej kosci] nie pomaga
otworzyc zamka - jesli klient zdazy zdezaktywowac ten nadajnik ..
Jeśli ktoś zrobi RSA na arytmetyce 32bitowej, to wcale nie trzeba
będzie nic kraść. Po przechwyceniu transmisji klient nawet nie
zdąży zamknąć bramy, a będzie musiał wymieniać wszystkie "klucze" -
stare będą doskonale znane wszystkim zainteresowanym :)

No, badzmy realistami - na drugi dzien :-)
Ale przy 64 bitach miesiac moze mu nie starczyc ...

J.