Wolna encyklopedia

Szyfr Vernama - nazywany też szyfrem idealnym. Należy do grupy szyfrów wieloalfabetycznych. Gilbert Vernam w 1917 roku skonstruował maszynę, która wykorzystuje szyfr z kluczem jednokrotnym tzn. szyfr, w którym klucz jest losową sekwencją znaków i jest używany bez powtórzeń. Dzięki jego maszynie możliwe jest stosowanie szyfrów z kluczem jednokrotnym w systemach komputerowych. Urządzenie to Vernam skonstruował 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 M = m1,m2,m3,...,mn dodajemy modulo 2 (funkcja XOR) z bitem pochodzącym z idealnego generatora losowego K = k1,k2,k3,...,kn. Taki generator można traktować jako ciąg losowy n doświadczeń Bernoulliego z prawdopodobieństwem \frac12 (np. rzut symetryczną monetą ). Szyfrogram C = c1,c2,c3,...,cn odczytujemy w analogiczny sposób wykorzystując ciąg bitów wygenerowany przy szyfrowaniu:

c_i = m_i \dot\or k_i
m_i = c_i \dot\or k_i
i\in\left\{1, 2, 3, ..., n\right\}

Na podstawie twierdzenia: jeżeli dwie zmienne losowe X1 i X2 są niezależne i X2 ma rozkład jednostajny nad {0,1} to Y = X_1 \dot\or X_2 ma rozkład jednostajny nad {0,1} otrzymujemy wiadomość zaszyfrowaną. Idealność szyfru polega na tym, że wnioskowanie o następnym bicie szyfrogramu możliwe jest jedynie z prawdopodobieństwem równym \frac12. Innymi słowy nie ma żadnej metody, która pozwoliłaby powiększyć szansę zgadnięcia następnego bitu szyfrogramu nad ślepy traf.

Zasadniczą wadą szyfru Vernama jest rozmiar klucza, który jest równy długości wiadomości.

Przykład

Załóżmy, że:

Ciąg bitów tekstu jawnego: M=m_1 m_2\dots Ciąg bitów klucza:

K=k_1 k_2\dots

Wtedy szyfr Vernama generuje ciąg bitów kryptogramu

C=EK(M)=c_1c_2\dots

gdzie

c_i= (m_i + k_i) \mod {2}

dla i = 1, 2, 3\dots

Litera tekstu jawnego A (11000 w kodzie Baudota)

Litera klucza D (10010 w kodzie Baudota)

Szyfrowanie polega na dodaniu litery tekstu jawnego do litery klucza

\begin{matrix}M =& 11000 \\
K =&10010\\
EK(M)=&01010\\
\end{matrix}

Zobacz też

Źródło: „haslo,Szyfr_Vernama