Blowfish-encryptiealgoritme
In de cryptografie is Blowfish een versleutelde, symmetrische blokcodering, gemaakt in 1993 door Bruce Schneier en sinds 1993 opgenomen (samengevoegd) in een groot aantal encryptieproducten. Blowfish heeft een goede vercijferingssnelheid in software en tot 2008 is er geen cryptanalytisch aanvalsmodel van gevonden. Het AES-blokcoderingsalgoritme heeft nu echter meer aandacht.
Schneier maakte Blowfish als een algoritme voor algemeen gebruik, ter vervanging van het oude DES-algoritme en om de problemen en moeilijkheden van andere encryptie-algoritmen weg te nemen. Op het moment dat Blowfish werd uitgebracht, waren veel andere algoritmen eigendomsrechtelijk beschermd, of waren het geheimen. Schneier heeft gezegd: "Blowfish is niet geoctrooieerd, en zal dat in alle landen blijven. Het algoritme wordt hierbij in het publieke domein geplaatst, en kan vrijelijk door iedereen worden gebruikt."
De belangrijkste kenmerken van het ontwerp zijn onder andere sleutelafhankelijke S-boxen en een zeer complex sleutelschema. Blowfish is een van de snelste blokcijfers die door veel mensen worden gebruikt, behalve bij het wisselen van toetsen. Elke nieuwe sleutel moet worden voorbewerkt, wat dezelfde tijd kost als het versleutelen van ongeveer 4 kilobyte tekst, wat erg langzaam is in vergelijking met andere blokcijfers. Dit stopt het gebruik ervan in bepaalde toepassingen (zoals in de kleinste embedded systemen zoals de vroege smartcards), maar het is geen probleem in andere toepassingen. In één van de applicaties is het eigenlijk goed: de password-hashing methode die in OpenBSD gebruikt wordt, gebruikt een algoritme dat afkomstig is van Blowfish dat gebruik maakt van het trage sleutelschema; het idee is dat de extra benodigde rekeninspanning bescherming biedt tegen woordenboekaanvallen. Zie sleutelversterking.
Blowfish heeft een 64-bits blokgrootte en een variabele sleutellengte van 0 tot 448 bits Het is een 16-ronde Feistel-cijfer en maakt gebruik van grote sleutel-afhankelijke S-boxen. De structuur is vergelijkbaar met die van CAST-128, die gebruik maakt van vaste S-boxen.
In 1996, Serge Vaudenay vond een bekende-klaartekst aanval die 28r + 1 bekende plaintexts nodig heeft om te breken, waarbij r het aantal rondes is. Bovendien vond hij ook een klasse van zwakke toetsen die kunnen worden gedetecteerd en gebroken door dezelfde aanval met slechts 24r + 1 bekende plaintexts. Deze aanval kan niet worden gebruikt tegen de gewone Blowfish; het veronderstelt kennis van de sleutel-afhankelijke S-boxen. Vincent Rijmen introduceerde in zijn Ph.D.-papieren een tweede-orde-differentiaalaanval die vier ronden kan breken en niet meer. Toch is er geen bekende manier om de volledige 16 ronden te breken, afgezien van een brute krachtmeting. In 1996 is er een teken-extensiebug in een van de gepubliceerde C-codes gevonden.
Er is geen goede cryptoanalyse op de volledige versie van Blowfish bekend tot 2008. Echter, in 2007 merkte Bruce Schneier op dat terwijl Blowfish nog steeds in gebruik is, hij adviseerde om in plaats daarvan het nieuwe Twofish-algoritme te gebruiken.
Gerelateerde pagina's
- Geavanceerde coderingsnorm
- eSTREAM - Een evaluatie van nieuwe stroomtarieven die door de EU wordt uitgevoerd.
- Tweevoudig
- MacGuffin
Vragen en antwoorden
V: Wat is Blowfish?
A: Blowfish is een symmetrisch blokcijfer met een sleutel dat in 1993 werd gecreëerd door Bruce Schneier. Het is sindsdien opgenomen in vele encryptieproducten.
V: Waar is Blowfish voor gemaakt?
A: Blowfish is gemaakt als een algoritme voor algemeen gebruik om het oude DES-algoritme te vervangen en de problemen en moeilijkheden van andere encryptie-algoritmen weg te nemen.
V: Hoe lang kan de sleutellengte zijn voor Blowfish?
A: De sleutellengte voor Blowfish kan variëren van 0 tot 448 bits.
V: Wat zijn enkele kenmerken van het ontwerp van Blowfish?
A: Enkele kenmerken van het ontwerp zijn sleutelafhankelijke S-boxen en een zeer complex sleutelschema.
V: Is er een cryptoanalyse bekend van de volledige-ronde-versie van Blowfish?
A: Vanaf 2008 is er geen bekende manier om de volledige 16 rondes te breken, behalve een brute-force zoektocht.
V: Welk type aanval vond Serge Vaudenay tegen Blowfish?
A: Serge Vaudenay vond een aanval met bekende tekst die 28r + 1 bekende klaarteksten nodig heeft om te breken, waarbij r het aantal rondes is. Hij vond ook een klasse van zwakke sleutels die door deze zelfde aanval met slechts 24r + 1 bekende plaintexts konden worden opgespoord en gebroken.
V: Adviseert Bruce Schneier nu het gebruik van Twofish in plaats van Blowfish?
A: Ja, Bruce Schneier raadt aan om nu Twofish te gebruiken in plaats van Blowfish vanwege de verbeterde beveiligingsmaatregelen in vergelijking met oudere algoritmen zoals DES of zelfs nieuwere zoals AES.