Szyfr Vigenère’a
Szyfr Vigenère’a to słynny szyfr wykorzystujący wiele alfabetów szyfrowych, dzięki czemu jest znacznie bardziej odporny na klasyczną analizę częstotliwości.
Zasada szyfrowania i deszyfrowania
Sposób szyfrowania wyjaśnimy za pomocą szyfru Cezara. Kluczem szyfru Vigenère’a jest dowolne słowo złożone z liter alfabetu angielskiego, czyli a—z. Kluczem może być na przykład słowo „bcf”. Szyfrowanie polega na tym, że zapisujemy tekst jawny, a tuż pod nim klucz, który powtarzamy tak długo, aż będzie tak samo długi jak tekst jawny. Ponieważ alfabet angielski nie ma polskich znaków diakrytycznych, pomijamy je i słowo „dobry wieczór” zapisujemy jako „dobrywieczor”. Dla tekstu jawnego „dobrywieczor” wyglądałoby to tak:
| Tekst jawny: | d | o | b | r | y | w | i | e | c | z | o | r |
| Klucz: | b | c | f | b | c | f | b | c | f | b | c | f |
Teraz wszystkie litery tekstu jawnego zaszyfrujemy szyfrem Cezara z odpowiednim kluczem, czyli z kluczem z tej samej kolumny. Szyfr Cezara jest szyfrem przesuwającym, a klucz mówi, o ile liter mamy przesunąć literę tekstu jawnego, licząc od litery „a”. Litera „b” oznacza na przykład przesunięcie o jedną literę alfabetu „w prawo”. Litera „d” oznacza przesunięcie o trzy litery w prawo. Słowo „czesc” zaszyfrowalibyśmy szyfrem Cezara z kluczem „b” jako „daftd”.
W szyfrze Cezara szyfrujemy cały tekst jedną literą, a w szyfrze Vigenère’a zwykle szyfrujemy kilkoma literami. Szyfrowanie tekstu „dobrywieczor” kluczem „bcf” wyglądałoby więc tak:
| Tekst jawny: | d | o | b | r | y | w | i | e | c | z | o | r |
| Klucz: | b | c | f | b | c | f | b | c | f | b | c | f |
| Szyfrogram: | e | q | g | s | a | b | j | g | h | a | q | w |
Pierwszą literę „d” szyfrowaliśmy kluczem „b”, czyli przesunięciem o jedną literę, dlatego wynikiem jest litera „e”. Literę „o” szyfrowaliśmy kluczem „c”, czyli przesunięciem o dwie litery, wynikiem jest litera „q”. I tak dalej.
Deszyfrujemy dokładnie tak samo, tylko zamiast przesuwać litery „w prawo”, przesuwamy je „w lewo”.
Narzędzie online do szyfrowania i deszyfrowania szyfrem Vigenère’a
Kwadrat Vigenère’a
Cały proces szyfrowania i deszyfrowania można też wyjaśnić na kwadracie Vigenère’a, czyli pomocy, której możemy użyć podczas szyfrowania. Kwadrat Vigenère’a to tabela z 26 wierszami i 26 kolumnami. W każdym wierszu jest wpisany alfabet, przy czym w każdym kolejnym wierszu jest przesunięty o jedną literę:
Mając taki kwadrat Vigenère’a, szyfrowalibyśmy następująco: bierzemy literę z tekstu jawnego i znajdujemy wiersz z tą literą. Potem bierzemy literę z klucza i znajdujemy kolumnę. Literą szyfrogramu jest litera z odpowiedniego wiersza i kolumny.
W poprzednim przykładzie szyfrowaliśmy „dobrywieczor” kluczem „bcf”. Znajdujemy więc wiersz, który zaczyna się od „d”, i kolumnę, która zaczyna się od „b”. W przecięciu tego wiersza i kolumny jest litera „e”, czyli wynikowa litera szyfrogramu.
Przy deszyfrowaniu postępowalibyśmy odwrotnie. Gdybyśmy chcieli odszyfrować literę „e” kluczem „b”, znaleźlibyśmy kolumnę „b”, w niej wiersz zawierający literę „e”, a litera na początku tego wiersza byłaby literą tekstu jawnego.
Główna siła szyfru Vigenère’a
Dlaczego szyfr Vigenère’a był w swoich czasach tak mocny? Ponieważ znacznie utrudniał klasyczną analizę częstotliwości. Na przykład w szyfrze Cezara dwie jednakowe litery tekstu jawnego zawsze zamieniają się na te same litery szyfrogramu. W szyfrze Vigenère’a tak nie jest, a przynajmniej nie zawsze.
Gdybyśmy zaszyfrowali tekst „Brawo brawo brawo” kluczem „stan”, otrzymalibyśmy szyfrogram „tkajg urnoh bespo”. Widzimy, że chociaż tekst jawny zawiera trzy takie same słowa, w szyfrogramie każde słowo wygląda zupełnie inaczej.
Wybór klucza
Bezpieczeństwo szyfru Vigenère’a bardzo silnie zależy od wyboru klucza. W szyfrze Cezara było obojętne, jaką literę wybierzemy, o ile była różna od „a”, a w szyfrze Vigenère’a różne klucze dają różny poziom bezpieczeństwa.
- Klucz złożony tylko z jednej litery sprowadza szyfr Vigenère’a z powrotem do szyfru Cezara.
- Klucz złożony z kilku jednakowych liter, na przykład „mmm”, także prowadzi do szyfru Cezara.
- Tekst zaszyfrowany krótkim kluczem będzie bardzo łatwo rozszyfrować.
- Dostatecznie długi szyfrogram zaszyfrowany niezbyt krótkim kluczem (około pięćdziesięciu znaków) będzie również bardzo łatwo rozszyfrować. Na komputerze w ciągu sekund.
- Tekst zaszyfrowany kluczem, który jest zupełnie losowy i jest tak samo długi jak sam tekst, będzie niemożliwy do rozszyfrowania.