ου γαρ εστιν κρυπτον ο ου φανερον γενησεται ουδε αποκρυφον ο ου γνωσθησεται και εις φανερον ελθη
Wersja PL ENG Version

Szyfr Vigenère'a

  • Ogólny opis
  • Algorytm
  • Implementacja
Autorem szyfru Vigenère'a jest Włoch Giovan Battista Bellaso, który opisał go w 1553 roku w książce "La cifra del. Sig. Giovan Battista Bellaso". Nazwa tego szyfru wzięła się z błędnego i przyjętego powszechnie w XIX wieku przekonania, że jego twórcą był francuski dyplomata i alchemik Blaise de Vigenère, żyjący w XVI wieku.
Wieloalfabetowy szyfr podstawieniowy
Dzięki łatwości w posługiwaniu się i zapewnianiu dobrej jakości zabezpieczń, był popularny i używany powszechnie we wszelkiego typu zastosowaniach aż do XX wieku.

Szyfr Vigenère'a jest wieloalfabetowym szyfrem podstawieniowym. Polega więc na stosowaniu różnie zdefiniowanych podstawień dla kolejnych liter tekstu. W przeciwieństwie do niektórych szyfrów wieloalfabetowych, strony nie muszą zapamiętywać i wymieniać pomiędzy sobą wszystkich zdefiniowanych przekształceń liter alfabetu. Użyte rozwiązanie redukuje ilość informacji, które trzeba zapamiętać do zaledwie jednego sekrentego słowa (lub zdania).

Do szyfrowania i odkodowywania wykorzystuje się tablicę zawierającą w pierwszym wierszu litery alfabetu w oryginalnej kolejności, a następnie w każdym kolejnym wierszu litery alfabetu przesunięte o jedną kolejną pozycję w lewo. Tablica ta nosi łacińską nazwę tabula recta i została po raz pierwszy używa w kryptografii przez niemieckiego mnicha Johannes Trithemius.

tabula recta
tabula recta

W celu zaszyfrowania wiadomości, należy wybrać sekretne słowo kluczowe (lub kilka słów). Na jego podstawie będą wybierane wiersze z różnie przesuniętymi literami alfabetu. Kolejne litery tekstu jawnego są zastępowane przez kolejne odpowiadające im litery w wierwszach, które z kolei są wskazywane przez litery sekretnego klucza.

Przykładowo, wybierając słowo rex jako słowo kluczowe, ustala się, że pierwszą literę tekstu zaszyfruje się za pomocą wiersza r, drugą za pomocą wiersza e, a trzecią za pomocą wiersza x. Wobec tego, pierwszą literę tekstu jawnego przesunie się o 17 pozycji, drugą literę tekstu jawnego przesunie się o 4 pozycje, a trzecią literę tekstu jawnego należy przesunąć o 23 pozycje. Następnie, powtarza się litery sekretnego słowa od początku, czyli czwarta litera tekstu jawnego będzie zaszyfrowana znowu za pomocą wiersza r.

Istnieje prosta odmiana tego szyfru, nazywana wariantem Beaufort'a. Polega na tym, że w trakcie szyfrowania wiadomości używa się algorytmu do deszyfrowania, a podczas dekodowania szyfrogramu, używa się algorytmu Vigenère'a do szyfrowania. Po prostu przesuwa się litery w alfabecie w odwrotne strony niż w oryginalnym algorytmie. Trzeba zauważyć, że ten wariant szyfru Vigenère'a nie ma nic wspólnego z szyfr Beaufort'a i nie należy ich mylić.

Siła szyfru Vigenère'a

W celu złamiania zabezpieczeń szyfru Vigenère'a pierwszym krokiem jest wyznaczenie długości sekretnego klucza (czyli długości słowa lub słów użytych do zakodowania wiadomości). Poniżej przedstawiono dwie metody zgadywania długości sekretnych słów użytych do szyfrowania. Są to metody opracowane przez Kasiski'ego i Friedman'a.

Po wyznaczeniu długości klucza, analiza szyfru opiera się na badaniu częstotliwości występowania liter w szyfrogramie. Oddzielnie analizuje się wszystkie litery zaszyfrowane za pomocą różnych liter klucza. Oddzielnie sprawdzać należy litery tekstu jawnego zaszyfrowane za pomocą pierwszej litery klucza, osobno litery tekstu jawnego zaszyfrowane za pomocą drugiej litery klucza, itd. Posiadając informację o długości klucza, główne zadanie polega więc na złamaniu pewnej liczby tesktów oddzielnie zakodowanych za pomocą szyfru Cezara.

Test Kasiski'ego

Ta metoda wyznaczenia długości klucza została opracowana przez niemieckiego żołnierza, archeologa i kryptologa Friedrich'a Kasiski'ego w XIX wieku. Polega ona na przeszukiwaniu szyfrogramu w poszukiwaniu powtarzających się sekwencji takich samych znaków. Znalezienie takich sekwencji może oznaczać, że są to takie same fragmenty tekstu jawnego zakodowane za pomocą takich samych fragmentów sekretnego klucza.

Przykładowo, prawidłowość tę można zauważyć w poniższym tekście jawnym zakodowanym za pomocą sekretnego klucza:

    Klucz:NATURAENATURAENATURAENATURAE
    Tekst jawny:ALIUDESTFACEREALIUDESTDICERE
    Szyfrogram:NLBOUEWGFTWVRINLBOUEWGDBWVRI

Na podstawie analizy i pomiaru odległości pomiędzy początkami dwóch powtórzen (która w tym wypadku wynosi 14 znaków), należy podejrzewać, że klucz szyfrujący ma jedną z następujących długości: 1, 2, 7 lub 14 znaków.

Jeżeli podczas analizy szyfrogramu, udałoby się natrafić na większą liczbę powtarzających się bloków tekstu, oznaczałoby to, że sekretny klucz ma prawdopodobnie długość równą jednej z liczb, która jest wskazywana przez różne powtórzone sekwencje.

Powtórzenia takich samych sekwencji w szyfrgoramie mogą zdarzyć się również na skutek losowego mieszania się różnych liter tekstu jawnego i klucza. Im więcej powtórzeń uda się znaleźć w zakodowanym tekście, tym większe jest prawdopodobieństwo, że wynikają one faktycznie z szyfrowania takich samych fragmentów tekstu jawnego za pomocą takich samych fragmentów klucza, a nie są jedynie skutkiem zbiegu okoliczności.

Test Friedman'a

William Friedman był kryptografem w amerykańskiej armii i opracował swoją analizę długości klucza w szyfrze Vigenère'a w trzecim dziesięcioleciu XX wieku. Opierał się na wykorzystywanu indeksu koincydencji i porównywał tekst szyfrogramu z nim samym, przesuniętym względem oryginału o pewną liczbę liter.

Strona w trakcie budowy.