7.6. / GENERATORY LICZB PRAWDZIWIE LOSOWYCH 297
Generowanie strumienia
Po zainicjowaniu wektora S dalsze kroki algorytmu są już niezależne od klucza. Kolejno generowane wartości pseudolosowe (z zakresu od 0 do 255) są funkcjami wektora S; po wygenerowaniu każdej wartości wektor S jest permutowany w sposób wynikający z jego aktualnej postaci:
/* generowanie strumienia */
while (true) do //powtarzaj w nieskończoność {
i = (i + 1) mod 256;
J = (J + SCI]) mod 256;
Zamień S[i] z S[j]; t = (S [i] + S[j]) mod 256;
k = Sit] ; // kolejny wygenerowany element strumienia kluczującego
}
Wygenerowana wartość k sumowana jest (XOR) z kolejnym bajtem tekstu jawnego (w przypadku szyfrowania) lub szyfrogramu (przy deszyfracji). Logikę szyfru RC4 zilustrowano poglądowo na rysunku 7.6.
Siła RC4
Problematyka ataków na szyfr RC4 była przedmiotem wielu publikacji (między innymi [KNUT98], [MIST96], [FLUHOO], [MANT01]) i żadna z proponowanych metod nie wydaje się być realnym zagrożeniem przy rozsądnej długości klucza — rozsądnej, czyli nie mniejszej niż 128 bitów. Jednakże w pracy [FLUH01] Fluhrer, Mantin i Shamir prezentują pewne specyficzne podejście, które może okazać się zagrożeniem dla protokołu WEP odpowiedzialnego za poufność bezprzewodowych sieci LAN. Tak naprawdę jednak źródłem problemu nie jest w tym przypadku sam szyfr RC4, lecz metoda generowania jego kluczy wejściowych — zmieniając tę metodę, usuwamy całkowicie wspomniane zagrożenie. To notabene jeden z wielu przykładów na to, że trudno jest zaprojektować bezpieczną funkcję kryptograficzną i jednocześnie protokół korzystający z niej w bezpieczny sposób.
to myśli o generowaniu liczb losowych za pomocą operacji arytmetycznych, żyje w permanentnym grzechu.
— John von Neumann
ódła entropijne
Generator wartości prawdziwie losowych (TRNG — True Random Number Generator) wykorzystuje informację pochodzącą ze źródeł niedeterministycznych. Takimi źródłami mogą być wskazania przyrządów mierzących różne aspekty nieprzewidywalnych zjawisk naturalnych, jak rozpad promieniotwórczy, jonizacja,