Serpent Chiffre

Herkunft / Verwendung: Serpent ist eine von Ross Anderson, Eli Biham und Lars Knudsen entwickelte Blockchiffre, die als Kandidat für AES beim NIST eingereicht wurde, wo der Algorithmus es in die finale Runde schaffte. Die Schlüssellänge beträgt 256 bit.

Üblicherweise wird als Schlüssel der binäre Hashwert eines Klartext-Passwortes angegeben. Den optionalen Initialisierungsvektor mit 16 Byte Länge geben Sie durch Komma getrennt als 2. Angabe im Schlüsselfeld an. Kürzere IV werden mit Nullen rechts aufgefüllt, längere auf richtige Länge gekürzt.

Vom NIST wurde Serpent zusammen mit den Verschlüsselungsalgorithmen MARS und Twofish als einzige als hoch-sicher eingestuft. Es hat ein eher konservatives und auf Sicherheit ausgelegtes Design, dass altbewährte Mechanismen mit gewissen Sicherheitpuffern einsetzt.

Serpent weist bei Implementierung in Hardware, die als Pipeline erfolgen kann, die höchste Geschwindigkeit unter den Finalisten auf. Er ist jedoch bei Software-Implementierungen der Langsamste. Serpent ist nicht patentiert und wurde als Public-Domain-Software veröffentlicht. Es steht damit jedem zur Nutzung frei zur Verfügung.

Beschreibung des Algorithmus

Die Serpent-Verschlüsselungen arbeitet mit 128 bit großen Blöcken und einem 256 bit großem Schlüssel, der ggf. durch Padding aufgefüllt wird. Nach einer Eingangspermutation folgen 32 Runden mit binären Operationen und S-Boxen

Die genaue Spezifikation findet sich in der Publikation "Serpent: A Proposal for the Advanced Encryption Standard" der Autoren. Weitere Informationen auf der Homepage von Serpent.

Beispiel

Klartext:BeispielklartextBeispielklartext (32 Bytes, 2 Blöcke)
Schlüssel:SchokoladentorteSchokoladentorte (32 Zeichen, 256 bit, entspricht der Schlüssellänge)
Chiffrat CBC:7DF1792D 95C261C7 32940CA1 5BEA91C1 2A3FDA20 8A92110E 5264DBC7 1C5F3A6E (hex)
Chiffrat ECB:7DF1792D 95C261C7 32940CA1 5BEA91C1 7DF1792D 95C261C7 32940CA1 5BEA91C1 (hex)*

*Beachten Sie die Wiederholung im Modus ECB

Code / Chiffre online dekodieren / entschlüsseln bzw. kodieren / verschlüsseln (DeCoder / Encoder / Solver-Tool)

Die Länge des Textes sollte durch 16 (=Blocklänge) teilbar sein. Kürze Texte werden mit Nullbytes rechts aufgefüllt. Die Länge des Ergebnisses ist immer durch 16 teilbar und damit ggf. bis zu 15 Bytes länger als der Klartext.
Der Schlüssel sollte min. 32 Zeichen lang sein, besser noch ein binärer Hash mit min. 256 Bit. Kürzere Schlüssel werden durch Wiederholung) erweitert, längere auf 32 Zeichen gekürzt. Den im CBC-Modus optionalen Initialisierungsvektor (IV) mit 16 Byte Länge geben Sie durch Komma getrennt als 2. Angabe im Schlüsselfeld an. Kürzere IV werden mit Nullen rechts aufgefüllt, längere auf richtige Länge gekürzt.
Wenn Sie Texte eingeben, die nicht als Hex-Sequenz (ohne Leerzeichen) interpretiert werden können, erfolgt eine automatische Umsetzung in eine Hex-Sequenz buw. Binärdaten. Ist das Ergebnis nicht umsetzbar in druckbare ASCII-Zeichen, erfolgt eine automatische Ausgabe in Hex.



Quellen, Literaturverweise und weiterführende Links

Schmeh, Klaus: Kryptografie: Verfahren - Protokolle - Infrastrukturen, dpunkt Verlag, 5. Auflage 2013, iX-Edition, S. 139-143