Blowfish
Inom kryptografin är Blowfish ett symmetriskt blockchiffer med nyckel, som 1993 skapades av Bruce Schneier och som sedan 1993 har ingått (satts ihop) i ett stort antal krypteringsprodukter. Blowfish har en god krypteringsgrad i programvara och fram till 2008 har ingen kryptoanalytisk angreppsmodell för den hittats. Blockchifferalgoritmen AES har dock fått mer uppmärksamhet.
Schneier skapade Blowfish som en algoritm för allmänna ändamål, som skulle ersätta den gamla DES-algoritmen och undanröja problemen och svårigheterna med andra krypteringsalgoritmer. När Blowfish släpptes var många andra algoritmer skyddade eller hemliga. Schneier har sagt att "Blowfish saknar patent och kommer att förbli patenterad i alla länder. Algoritmen är härmed placerad i den offentliga domänen och kan användas fritt av vem som helst."
De viktigaste inslagen i konstruktionen är nyckelberoende S-boxar och ett mycket komplicerat nyckelschema. Blowfish är en av de snabbaste blockchifferna som används av många människor, utom när nycklarna byts ut. Varje ny nyckel måste förbehandlas, vilket tar samma tid som att kryptera cirka 4 kilobyte text, vilket är mycket långsamt jämfört med andra blockchiffer. Detta hindrar dess användning i vissa tillämpningar (t.ex. i de minsta inbyggda systemen som de tidiga smartkorten), men det är inget problem i andra tillämpningar. I en av tillämpningarna är det faktiskt bra: den metod för lösenordshashning som används i OpenBSD använder en algoritm som kommer från Blowfish som utnyttjar det långsamma nyckelschemat; tanken är att den extra beräkningsinsats som krävs ger skydd mot ordboksattacker. Se nyckelförstärkning.
Blowfish har en blockstorlek på 64 bitar och en variabel nyckellängd från 0 upp till 448 bitar Det är ett Feistel-chiffer med 16 rundor och använder stora nyckelberoende S-boxar. Den liknar i sin struktur CAST-128, som använder fasta S-boxar.
År 1996 fann Serge Vaudenay en attack med kända klartexter som kräver 28r + 1 kända klartexter för att brytas, där r är antalet rundor. Dessutom fann han en klass av svaga nycklar som kan upptäckas och brytas genom samma attack med endast 24r + 1 kända klartexter. Detta angrepp kan inte användas mot den vanliga Blowfish-varianten, eftersom det förutsätter att man känner till de nyckelberoende S-boxarna. Vincent Rijmen introducerade i sin doktorsavhandling en differentiell attack av andra ordningen som kan bryta fyra rundor men inte mer. Det finns fortfarande inget känt sätt att bryta alla 16 rundor, bortsett från en brutal sökning. Ett fel med teckenförlängning i en av de offentliggjorda C-koderna upptäcktes 1996.
Det finns ingen bra kryptoanalys av den fullständiga versionen av Blowfish som är offentlig känd fram till 2008. År 2007 påpekade Bruce Schneier att Blowfish fortfarande används, men att han rekommenderade att man istället använder den nya algoritmen Twofish.
Relaterade sidor
- Avancerad krypteringsstandard
- eSTREAM - En utvärdering av nya strömkrypter som genomförs av EU.
- Twofish
- MacGuffin
Frågor och svar
F: Vad är Blowfish?
S: Blowfish är ett symmetriskt blockchiffer med nyckel som skapades 1993 av Bruce Schneier. Det har ingått i många krypteringsprodukter sedan dess.
F: Vad skapades Blowfish för?
S: Blowfish skapades som en algoritm för allmänt bruk för att ersätta den gamla DES-algoritmen och för att undanröja problem och svårigheter med andra krypteringsalgoritmer.
F: Hur lång kan nyckellängden vara för Blowfish?
S: Nyckellängden för Blowfish kan variera från 0 upp till 448 bitar.
F: Vilka är några egenskaper i utformningen av Blowfish?
S: Några av konstruktionens särdrag är nyckelberoende S-boxar och ett mycket komplicerat nyckelschema.
F: Finns det någon känd kryptoanalys av den fullständiga versionen av Blowfish?
S: 2008 finns det inget känt sätt att bryta de 16 fullständiga rundorna förutom genom en brutal sökning.
Fråga: Vilken typ av angrepp hittade Serge Vaudenay mot Blowfish?
Svar: Serge Vaudenay hittade en attack med kända klartexter som kräver 28r + 1 kända klartexter för att brytas, där r är antalet rundor. Han fann också en klass av svaga nycklar som kunde upptäckas och brytas genom samma attack med endast 24r + 1 kända klartexter.
F: Rekommenderar Bruce Schneier att använda Twofish i stället för Blowfish nu?
S: Ja, Bruce Schneier rekommenderar att man använder Twofish i stället för Blowfish nu på grund av dess förbättrade säkerhetsåtgärder jämfört med äldre algoritmer som DES eller till och med nyare algoritmer som AES.