W i l l k o m m e n   b e i   [ www.mauspfeil.com ]
 
 



 

Wörterbuch der Bedeutung
<<Zurück
Bitte wählen Sie einen Buchstaben:
A, Ä | B | C | D | E | F | G | H | I | J | K | L | M | N | O, Ö | P | Q | R | S | T | U, Ü | V | W | X | Y | Z | 0-9

Suchen:

(Groß-/Kleinschreibung wird nicht unterschieden)

Google


Blowfish

*** Shopping-Tipp: Blowfish

{{Infobox Blockchiffre | name = Blowfish | entwickler = Bruce Schneier | datum = 1993 | schlüssellänge = 32-448 Bit (Standard 128 Bit) | blockgröße = 64 Bit | struktur = Feistelchiffre | runden = 16 | kryptoanalyse = • vier Runden von Blowfish sind anfällig für eine Differentielle Kryptoanalyse • 14 Runden sind, für eine Klasse von schwachen Schlüsseln, anfällig für eine Pseudozufalls-Permutation }} Der '''Blowfishalgorithmus''' ist ein symmetrischer Blockchiffre Blockverschlüsselungsalgorithmus und wurde 1993 von Bruce Schneier entworfen und erstmals im April 1994 in ''Doctor Dobb's Journal'' publiziert. Er wurde als „public domain“ veröffentlicht und kann frei verwendet werden.

Eigenschaften
Image:BlowfishDiagram.png right|thumbnail|Feistelnetzwerk von Blowfish Blowfish hat als Blockchiffre eine fixe Blocklänge von 64 Bit, basiert auf einem Feistelnetzwerk, welches die Umkehrbarkeit zwischen Verschlüsselung und Entschlüsselung garantiert und besitzt schlüsselabhängige S-Box S-Boxen. Die Schlüssellänge kann zwischen 32 Bit und 448 Bit betragen. Aus diesen Schlüsselbits werden vor Beginn der Ver- oder Entschlüsselung Teilschlüssel, so genannte Rundenschlüssel P1 bis P18, und die Einträge in den S-Boxen von aufsummiert 4168 Bit erzeugt. Die Abbildung zeigt den internen Aufbau von Blowfish. Die einzelnen Datenpfade sind dabei 32 Bit breit, durch die linke und rechte Hälfte ergibt sich die Blocklänge von 64 Bit. Jede sogenannte Runde – es gibt in Summe 16 Runden – besitzt XOR-Verknüpfungen mit den vorab berechneten Rundenschlüsseln P1 bis P18 und eine Funktion ''f'', in welcher schlüsselabhängige S-Boxen zum Einsatz kommen. Dabei wird ein 32 Bit breiter Eingabewert von der linken Seite eindeutig einem bestimmten 32 Bit breiten Ausgabewert auf der rechten Seite der Funktion zugeordnet. Das Ergebnis von ''f'' wird dann mit dem rechten Datenpfad XOR-Verknüpfung XOR-verknüpft. Dieses Verfahren wird für alle 16 Runden wiederholt. Am Ende werden noch die beiden Rundenschlüssel P17 und P18 der linken bzw. rechten Pfade verknüpft. Die Entschlüsselung läuft dabei exakt gleich ab, nur werden dabei alle Rundenschlüssel P1 bis P18 in umgekehrter Reihenfolge benutzt. Auf das Verfahren von Blowfish hat es seit der Veröffentlichung viele Kryptoanalyse Kryptoanalysen gegeben, und Serge Vaudenay fand einige schwache Schlüssel bei Blowfish-Implementierungen mit maximal 14 Runden. Bis heute (Stand 2006) sind keine weiteren Schwächen bekannt.

Algorithmus
Blowfish besitzt pro Runde einen P-Rundenschlüssel mit 18 mal 32 Bit und vier S-Boxen mit 256 mal 32 Bit in der Funktion ''f''. Die Initialisierung des P-Wertes und der vier S-Boxen erfolgt mit einer fixen Zeichenkette, der hexadezimalen Ziffernfolge der Zahl π (Pi). Ausgehend von diesem Startwert werden dann nach einem bestimmten Verfahren sowohl alle P-Boxen, P1 bis P18, als auch alle S-Boxen, S1 bis S4, in ihren Werten schlüsselabhängig verändert. Danach bleiben die P-Werte und die Werte in den S-Boxen so lange konstant, bis ein neuer Schlüssel gewählt wird.

Verschlüsselung
Der Algorithmus wird mit Hilfe des Schlüssels initialisiert, dazu benötigt man aber den oben erwähnten Verschlüsselungsalgorithmus. Zuerst wird der Schlüssel in 32-Bit-Blöcke aufgeteilt. Danach wird jeder Eintrag der P-Box mit den 32-Bit-Blöcken des Schlüssels XOR-verknüpft. Dabei wechseln sich die Blöcke des Schlüssels nacheinander ab. Danach wird ein Block mit 64 Nullbits verschlüsselt. Die linke und rechte Hälfte ersetzt dabei den ersten und zweiten Eintrag der P-Box. Dann wird mit dem aktuellen Stand der Geheimtext aus dem letzten Schritt verschlüsselt, und der dritte und vierte Eintrag der P-Box wird ersetzt. Dieses passiert solange, bis alle Einträge der P-Box und der vier S-Boxen ersetzt wurden. Zur Verschlüsselung werden die eingehenden 64 Bit in zwei Blöcke zu je 32 Bit, L und R, aufgeteilt. Danach läuft folgende Prozedur durch: Für alle i von 1 bis 16 L = L xor Pi R = R xor ''f''(L) vertausche L und R Anschließend: vertausche L und R R = R xor P17 L = L xor P18

Entschlüsselung
Die Entschlüsselung sieht wie folgt aus: Für alle i von 18 bis 3 L = L xor Pi R = R xor ''f''(L) vertausche L und R Anschließend: vertausche L und R R = R xor P2 L = L xor P1 Nun steht nur noch die Funktion ''f'' offen: Der eingehende 32-Bit-Wert wird in vier Teile zu je 8 Bit aufgeteilt. Danach wird aus den S-Boxen mit Hilfe dieser Werte je ein Wert entnommen und dieser dann mit den anderen addiert und XOR-verknüpft. Die Funktion gibt dann zurück: ''f''(x) = ( ( S1(x0…7) + S2(x8…15) mod 232 ) xor S3(x16…23) ) + S4(x24…31) mod 232

Beispiele
Im GNU Privacy Guard sind Blowfish und Twofish implementiert und können auf Wunsch aktiviert werden. Ein weiteres Windows-Programm (Open Source) zum Verschlüsseln von Dateien mittels Blowfish und Twofish ist [http://www.hotpixel.net Blowfish Advanced CS] ([http://www.lassekolb.info/bfacs.pdf Anleitung hierzu]; PDF).

Siehe auch
* Twofish * Bruce Schneier * Puffy (Maskottchen) Puffy, the blowfish, Maskottchen der OpenSSH

Weblinks

- Bruce Schneiers Beschreibung des Algorithmus
- S-Box und P-Box
- Blowfish PHP-Implementierung
- Blowfish JavaScript-Implementierung
- Blowfish Tcl-Implementierung, auch in der Tcllib enthalten
- Blowfish LabVIEW-Implementierung {{Navigationsleiste Symmetrische Verschlüsselungsverfahren}} Kategorie:Verschlüsselungsverfahren en:Blowfish (cipher) es:Blowfish fr:Blowfish gl:Blowfish it:Blowfish nl:Blowfish-encryptiealgoritme pl:Blowfish (kryptografia) pt:Blowfish ru:Blowfish th:โบลว์ฟิช tr:Blowfish

*** Shopping-Tipp: Blowfish




[Der Artikel zu Blowfish stammt aus dem Nachschlagewerk Wikipedia, der freien Enzyklopädie. Dort findet sich neben einer Übersicht der Autoren die Möglichkeit, den Original-Text des Artikels Blowfish zu editieren.
Die Texte von Wikipedia und dieser Seite stehen unter der GNU Free Documentation License.]

<<Zurück | Zur Startseite | Impressum | Zum Beginn dieser Seite