Szyfr z kluczem jednorazowym
Z Wikipedii, wolnej encyklopedii
Z Wikipedii, wolnej encyklopedii
Szyfr z kluczem jednorazowym (ang. one-time pad) – szyfr zaproponowany w 1917 roku przez Gilberta Vernama, którego, przy poprawnym wykorzystaniu, nie można złamać. Szyfr z kluczem jednorazowym jest dużym zbiorem o niepowtarzalnych i przypadkowych sekwencjach znaków. W pierwotnej postaci była to jednorazowa taśma perforowana do dalekopisu. Nadawca używa każdej litery z tego zbioru do zaszyfrowania jednego znaku tekstu jawnego. Szyfrowanie to dodanie modulo 26 jednego znaku tekstu jawnego i znaku jednorazowego klucza.
Metoda Vernama zapewniała prawie doskonałe zabezpieczenie treści przekazu, ale wymagała użycia dalekopisu lub maszyny szyfrującej. Trzej kryptolodzy pracujący dla niemieckiego Ministerstwa Spraw Zagranicznych – Werner Kuntze, Rudolf Schauffler i Erich Langlotz – przekształcili metodę Vernama do postaci praktyczniejszych w użyciu tzw. jednorazowych bloczków szyfrowych. Były to łączone w 50-stronicowe bloki tablice, z których każda zawierała po 48 pięciocyfrowych grup. Cyfry we wszystkich grupach na jednej stronie były zapisane w sposób zupełnie przypadkowy, bez powtórzenia żadnej z grup. Podobnie żadna strona nie była duplikatem innej. Po przekształceniu tekstu jawnego depeszy w ciąg cyfr szyfrant według ustalonego systemu wybierał określoną stronę z bloku i wykorzystywał grupy cyfr jako klucz do zaszyfrowania depeszy dodając (modulo 10) cyfry klucza i te powstałe z przekształcenia tekstu jawnego. Odbiorca, dysponując identycznym blokiem odwracał proces szyfrowania. W latach 1921–1923 takie bloki wprowadzono do użytku w niemieckiej korespondencji dyplomatycznej. Potem metoda ta stała się najpowszechniej stosowanym sposobem szyfrowania w sytuacjach, kiedy nie było możliwości użycia maszyn szyfrujących.
Istniała również wersja jednorazowych bloczków szyfrowych, w której losowe grupy składały się z liter. Używanie tej wersji było bardziej skomplikowane: trzeba było (według ustalonej reguły) zamienić litery tekstu jawnego i litery jednorazowego klucza na dwucyfrowe liczby, a następnie dodać je do siebie (modulo 26). Otrzymane liczby z powrotem przekształcano w litery[1].
W 1917 Vernam skonstruował urządzenie do łączności telegraficznej korzystającej z 32-znakowego kodu Baudota. Każdy znak kodu jest kombinacją pięciu sygnałów lub ich braku, co odpowiada bitom 1 i 0 w komputerach. Niepowtarzalny, losowy ciąg znaków klucza jest wyperforowany na taśmie papierowej i każdy bit tekstu jawnego jest dodawany modulo 2 do kolejnego bitu klucza.
Polega na tym, że każdy bit wiadomości dodajemy modulo 2 (funkcja XOR) z bitem pochodzącym z idealnego generatora losowego Taki generator można traktować jako ciąg losowy doświadczeń Bernoulliego z prawdopodobieństwem (np. rzut symetryczną monetą). Szyfrogram odczytujemy w analogiczny sposób, wykorzystując ciąg bitów wygenerowany przy szyfrowaniu:
Na podstawie twierdzenia: jeżeli dwie zmienne losowe i są niezależne i ma rozkład jednostajny nad to ma rozkład jednostajny nad otrzymujemy wiadomość zaszyfrowaną. Idealność szyfru polega na tym, że wnioskowanie o następnym bicie szyfrogramu możliwe jest jedynie z prawdopodobieństwem równym Innymi słowy nie ma żadnej metody, która pozwoliłaby powiększyć szansę zgadnięcia następnego bitu szyfrogramu nad ślepy traf.
Załóżmy, że:
Wtedy szyfr Vernama generuje ciąg bitów kryptogramu gdzie dla
Szyfrowanie polega na dodaniu litery tekstu jawnego do litery klucza
Każdy klucz używany jest tylko raz, do zaszyfrowania tylko jednej wiadomości. Klucz tworzony jest w sposób losowy, przeciwnik nie ma informacji, która może ułatwić złamanie szyfru. Po zaszyfrowaniu wiadomości nadawca niszczy strony lub taśmę perforowaną z wykorzystanym zbiorem znaków. Odbiorca dysponuje identycznym zbiorem i używa tych samych znaków zbioru do odszyfrowania każdego znaku szyfrogramu. Podobnie jak nadawca po odszyfrowaniu wiadomości niszczy zbiór znaków stanowiących klucz. Przy nadawaniu nowej wiadomości trzeba zastosować nowy zbiór znaków i nowe znaki klucza.
Szyfrowanie z kluczem jednorazowym może być rozszerzone na dane binarne. Zamiast zestawu znaków są stosowane klucze binarne.
Metoda generacji i użycia klucza kryptograficznego wymaga by:
Wykorzystanie tej metody np. w szyfrowaniu XOR, bądź w szyfrze polialfabetycznym zapewnia całkowite bezpieczeństwo wiadomości, ponieważ dla każdej pary M i C (wiadomość i tekst zaszyfrowany) istnieje pasujący do nich K (klucz), czyli znając jedynie C, możemy dopasować do niego dowolną M o tej samej długości i na ich podstawie wyliczyć pasujący K. Dzięki temu złamanie szyfru (o niezakodowanym tekście jawnym) nie jest możliwe nawet poprzez testowanie wszystkich możliwych kluczy (atak brute force).
Problem złamania OTP jest podobny do problemu związanego z rozwiązaniem równania: M + K = C w którym znane jest jedynie C. Zakładając, że przeciwnik nie ma dostępu do jednorazowego zestawu znaków stosowanego do szyfrowania wiadomości, można powiedzieć, że jest to idealnie bezpieczny algorytm utajniania. Dowolny szyfrogram może być szyfrogramem dowolnego tekstu jawnego o tej samej długości.
Praktyczną wadą algorytmu jest długość klucza, która nie może być mniejsza od długości wiadomości, jaką nadawca zamierza przesłać. Rutynowe stosowanie szyfrów z kluczem jednorazowym wymagałoby od nadawcy i odbiorcy wcześniejszego uzgodnienia ogromnego klucza (bądź ogromnego zbioru kluczy). Problem stanowi zarówno całkowicie losowe wygenerowanie klucza, jak i jego bezpieczne przekazanie drugiej stronie.
Z tego powodu algorytm z kluczem jednorazowym znajduje zastosowanie przede wszystkim w szyfrowaniu wyjątkowo tajnych informacji w kanałach o małej przepustowości. Gorąca linia między prezydentami Rosji i Stanów Zjednoczonych jest zabezpieczona właśnie za pomocą takiego szyfru[2].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.