Blowfish
V kryptografii je Blowfish symetrická bloková šifra s klíčem, kterou v roce 1993 vytvořil Bruce Schneier a která je od roku 1993 součástí velkého počtu šifrovacích produktů. Blowfish má dobrou míru šifrování v softwaru a do roku 2008 nebyl nalezen žádný model jeho kryptoanalytického útoku. Větší pozornosti se však nyní těší algoritmus blokové šifry AES.
Schneier vytvořil Blowfish jako univerzální algoritmus, který měl nahradit starý algoritmus DES a odstranit problémy a obtíže jiných šifrovacích algoritmů. V době, kdy byl Blowfish vydán, bylo mnoho jiných algoritmů proprietárních nebo tajných. Schneier uvedl, že "Blowfish není patentován a zůstane jím ve všech zemích. Algoritmus se tímto stává veřejným majetkem a může být volně používán kýmkoli."
Mezi hlavní rysy návrhu patří S-skříňky závislé na klíči a velmi složitý plán klíčů. Blowfish je jednou z nejrychlejších blokových šifer, kterou používá mnoho lidí, s výjimkou případů, kdy se mění klíče. Každý nový klíč je třeba předem zpracovat, což trvá stejně dlouho jako zašifrování přibližně 4 kilobajtů textu, což je ve srovnání s jinými blokovými šiframi velmi pomalé. To brání jejímu použití v některých aplikacích (například v nejmenších vestavěných systémech, jako byly první čipové karty), ale v jiných aplikacích to není problém. V jedné z aplikací je to vlastně dobře: metoda šifrování hesel používaná v OpenBSD používá algoritmus pocházející z Blowfish, který využívá pomalého rozvrhu klíčů; myšlenka spočívá v tom, že dodatečná výpočetní náročnost poskytuje ochranu proti slovníkovým útokům. Viz posilování klíčů.
Blowfish má 64bitovou velikost bloku a proměnnou délku klíče od 0 do 448 bitů Je to 16kolová Feistelova šifra a používá velké S-boxy závislé na klíči. Strukturou je podobná šifře CAST-128, která používá pevné S-boxy.
V roce 1996 Serge Vaudenay objevil útok známým textem, k jehož prolomení je třeba 28r + 1 známých otevřených textů, kde r je počet kol. Kromě toho našel také třídu slabých klíčů, které lze odhalit a prolomit stejným útokem s pouhými 24r + 1 známými otevřenými texty. Tento útok nelze použít proti běžnému Blowfishovi; předpokládá znalost S-boxů závislých na klíči. Vincent Rijmen ve svých doktorských pracích zavedl diferenciální útok druhého řádu, který dokáže prolomit čtyři kola a ne více. Stále není znám žádný způsob, jak prolomit celých 16 kol, kromě hledání hrubou silou. V roce 1996 byla v jednom z publikovaných kódů v jazyce C nalezena chyba v rozšíření znaku.
Do roku 2008 nebyla veřejně známa žádná dobrá kryptoanalýza plné verze Blowfish. V roce 2007 však Bruce Schneier poznamenal, že ačkoli se Blowfish stále používá, doporučil místo něj používat nový algoritmus Twofish.
Související stránky
- Pokročilý standard šifrování
- eSTREAM - hodnocení nových proudových šifer prováděné EU.
- Twofish
- MacGuffin
Otázky a odpovědi
Otázka: Co je to Blowfish?
A: Blowfish je symetrická bloková šifra s klíčem, kterou v roce 1993 vytvořil Bruce Schneier. Od té doby je součástí mnoha šifrovacích produktů.
Otázka: K čemu byl Blowfish vytvořen?
Odpověď: Blowfish byl vytvořen jako univerzální algoritmus, který nahradil starý algoritmus DES a odstranil problémy a obtíže jiných šifrovacích algoritmů.
Otázka: Jak dlouhý může být klíč pro Blowfish?
Odpověď: Délka klíče pro Blowfish může být od 0 do 448 bitů.
Otázka: Jaké jsou některé vlastnosti konstrukce Blowfish?
Odpověď: Mezi některé vlastnosti návrhu patří S-boxy závislé na klíči a velmi složitý plán klíče.
Otázka: Je známa nějaká kryptoanalýza plnohodnotné verze Blowfish?
Odpověď: Od roku 2008 není znám žádný způsob, jak prolomit plných 16 kol, kromě hledání hrubou silou.
Otázka: Jaký typ útoku na Blowfish objevil Serge Vaudenay?
Odpověď: Serge Vaudenay našel útok na známý text, k jehož prolomení je třeba 28r + 1 známých otevřených textů, kde r je počet kol. Našel také třídu slabých klíčů, které lze tímto útokem odhalit a prolomit pouze s 24r + 1 známými otevřenými texty.
Otázka: Doporučuje nyní Bruce Schneier používat Twofish místo Blowfish?
Odpověď: Ano, Bruce Schneier nyní doporučuje používat Twofish namísto Blowfish kvůli jeho lepším bezpečnostním opatřením ve srovnání se staršími algoritmy jako DES nebo dokonce novějšími jako AES.