Szyfrowanie kluczem jednorazowym (OTP)

2008-10-25 00:00:00 +0100


Klucz jednorazowy (one time pad, OTP) to klucz, który po pierwsze jest tej samej długości co szyfrowana wiadomość a po drugie jest stosowany tylko i wyłącznie raz.

Wady OTP

Wadą takiego klucza jest oczywiście jego niepraktyczność - dawniej kluczami jednorazowymi były kartki w książce kodowej, które po zaszyfrowaniu wiadomości palono. Następna wiadomość była szyfrowana następną kartką i tak dalej. Oczywiście, druga strona musiała posiadać identyczną książkę kodową.

Współcześnie kluczem jednorazowym mógłby być plik zawierający ciąg losowych bajtów wysokiej jakości (patrz testy NIST) o długości dokładnie takiej samej, jak szyfrowany plik. Dla długich plików wyraźnie widzimy niepraktyczość tego rozwiązania, zwłaszcza że losowy klucz trzeba jakoś przekazać drugiej stronie.

Kryptogram zaszyfrowany przez OTP nie posiada także ochrony integralności, może więc być po drodze zmodyfikowany. Aby taką ochronę zapewnić, trzeba wprowadzić dodatkowe mechanizmy ochrony, jeszcze bardziej komplikujące użycie takiego systemu.

Zalety OTP

Jakie zalety posiada zatem OTP? Otóż jako jedyny szyfr jest on nieprzełamywalny i, co więcej, można tego dowieść. Jeśli bowiem klucz jest losowy i ma tę samą długość co tekst oryginalny, to jak można stwierdzić czy odgadywany przez nas klucz jest poprawny? Nie da się - każdy kolejny bajt naszego klucza może być poprawny lub nie.

Porównajmy OTP do szyfrów strumieniowych. W przypadku tych pierwszych stosunkowo krótki klucz staje się "ziarnem" inicjalizującym ciąg pseudolosowych bajtów o potrzebnej długości. Czyli takiej, jak długość szyfrowanej wiadomości. Następnie każdy bajt ciągu pseudolosowego jest dodawany (np. przez XOR) do każdego bajtu wiadomości - czyli podobnie jak w OTP.

Kluczowa różnica polega na tym, że w OTP cały ciąg jest losowy, a więc całkowicie niepowtarzalny i nieprzewidywalny. W przypadku szyfru strumieniowego krótki klucz stanowi jedyny element losowości - cały generowany ciąg szyfrujący jest od niego zależny. Jest to cecha, o którą oparte jest większość ataków kryptoanalitycznych - w przypadku niestarannie zaprojektowanych szyfrów strumieniowych (lub blokowych) zależności zachodzące pomiędzy poszczególnymi bitami ciągu szyfrującego mogą ujawniać części bitów samego klucza.

Jeśli kryptoanalityk dysponuje bardzo dużą porcją zaszyfrowanego tekstu, to na tej podstawie może kawałek po kawałku odtworzyć cały klucz. We współczesnych sieciach dane przesyłane są z dużą prędkością, co ułatwia gromadzenie informacji do analizy - pamiętajmy że jeden megabajt danych, to ponad milion bitów, a w sieci 100 Mbit/sek w ciągu sekundy przesyłanych jest prawie 13 megabajtów.