Vigenèrova šifra

Kapitoly: Vigenèrova šifra, Jak prolomit Vigenèrovu šifru se znalostí délky klíče, Odhadnutí délky klíče Vigenèrovy šifry, Jak spočítat délku klíče Vigenèrovy šifry, Friedmanův test — index koincidence

Vigenèrova šifra je slavná šifra využívající více šifrových abeced, díky čemu je daleko více odolná vůči klasické frekvenční analýze.

Princip šifrování a dešifrování

Postup šifrování můžeme vysvětlit pomocí Caesarovy šifry. Klíčem Vigenèrovy šifry je libovolné slovo skládající se z písmen anglické abecedy, tj. a—z. Klíčem tak může být například slovo „bcf“. Šifrování pak probíhá tak, že si napíšeme otevřený text a hned pod něj klíč, který budeme opakovat tak dlouho, aby měl stejnou délku jako otevřený text. Pro otevřený text „dobryvecer“ by to vypadalo takto:

Otevřený text:dobryvecer
Klíč:bcfbcfbcfb

Nyní bychom všechna písmena z otevřeného textu zašifrovali pomocí Caesarovy šifry s příslušným klíčem, tj. s klíčem ve stejném sloupečku. Caesarova šifra je posunovací šifra, klíč udává, o kolik písmen máme písmeno otevřeného textu posunout, měřeno od písmene „a“. Písmeno „b“ například značí posun o jedno písmeno v abecedě „doprava“. Písmeno „d“ značí posun o tři písmena doprava. Slovo „ahoj“ bychom Caesarovou šifrou a s klíčem „b“ zašifrovali na „bipk“.

Zatímco v Caesarově šifře šifrujeme celý text jedním písmenem, ve Vigenèrově šifře typicky šifrujeme více písmeny. Šifrování textu „dobryvecer“ s klíčem „bcf“ by tak dopadlo takto:

Otevřený text:dobryvecer
Klíč:bcfbcfbcfb
Šifrový text:eqgsaafejs

První písmeno „d“ jsme šifrovali s klíčem „b“, tedy posun o jedno písmeno, proto je výsledkem písmeno „e“. Písmeno „o“ jsme šifrovali s klíčem „c“, tedy posun o dvě písmena, výsledkem je písmeno „q“. Atd.

Dešifrujeme úplně stejným způsobem, pouze místo toho, abychom posouvali písmena „doprava“, je posouváme „doleva“.

Online nástroj na šifrování a dešifrování Vigenèrovy šifry

Text:
Klíč:

Vigenèrův čtverec

Celý postup šifrování a dešifrování lze také vysvětlit na Vigenèrově čtverci, což je pomůcka, kterou můžeme během šifrování použít. Vigenèrův čtverec je tabulka, která má 26 řádků a 26 sloupců. V každém řádku je vepsána abeceda, přičemž v každém řádku je vždy posunuta o jedno písmeno:

Pokud máme takovýto Vigenèrův čtverec, šifrování by probíhalo následovně: vzali bychom písmeno z otevřeného textu a našli bychom řádek s tímto písmenem. Pak bychom vzali písmeno z klíče a našli bychom sloupeček. Písmeno ze šifrového textu by pak bylo písmeno z odpovídajícího řádku a sloupce.

V předchozím příkladě jsme šifrovali „dobryden“ s klíčem „bcf“. Najdeme tak řádek, který začíná „d“, sloupeček, který začíná „b“. V průsečíku tohoto řádku a sloupce je písmeno „e“, výsledné písmeno šifrového textu.

Při dešifrování bychom postupovali obráceně. Pokud bychom chtěli dešifrovat písmeno „e“ za použití klíče „b“, tak bychom našli sloupec „b“, v něm bychom našli řádek, který obsahuje písmeno „e“ a písmeno, které je na začátku tohoto řádku by bylo písmeno z otevřeného textu.

Hlavní síla Vigenèrovy šifry

Proč byla Vigenèrova šifra ve své době tak silná? Protože značně ztěžovala klasickou frekvenční analýzu. Například v Caesarově šifře platí, že dvě stejná písmena otevřeného textu se zašifrují na stejné písmena v šifrovém textu. Toto ale ve Vigenèrově šifře neplatí, alespoň ne vždy.

Pokud bychom zašifrovali text „Dobře dobře dobře“ s klíčem „stan“, získali bychom šifrový text „vhbew woojx dbtke“. Vidíme, že přestože otevřený text obsahuje tři stejná slova, ve výsledném šifrovém textu vypadá každé slovo úplně jinak. Prostřední slovo, „woojx“, dokonce obsahuje dvě písmena „o“, která ale vznikla z dvou různých písmen otevřeného textu: „ob“.

Volba klíče

Bezpečnost Vigenèrovy šifry velmi významně ovlivňuje volba klíče. Zatímco u Caesarovy šifry bylo jedno jaké písmeno zvolíme, pokud bylo různé od „a“, tak u Vigenèrovy šifry různé klíče vedou k různě velké bezpečnosti šifry.

  • Klíč, který se skládá jen z jednoho písmene redukuje Vigenèrovu šifru zpět na Caesarovu šifru.
  • Klíč, který se skládá z více stejných písmen, napříkad „mmm“, opět povede na Caesarovu šifru.
  • Text zašifrovaný krátkým klíčem bude velice jednoduché rozluštit.
  • Dostatečně dlouhý šifrový text, který byl zašifrovaný ne úplně krátkým klíčem (kolem padesáti znaků) bude také velice jednoduché rozluštit. Na počítači v řádu sekund.
  • Text zašifrovaný klíčem, který je zcela náhodný a je dlouhý stejně jako text samotný, bude nemožné rozluštit.