Kryptografie (2) : Das Feistel-Verfahren
Nach der kurzen Einführung aus dem letzten Artikel möchte ich ein Verfahren vorstellen, welches heute noch als Basis für viele symmetrische Verschlüsselungsverfahren dient.
Das Feistel-Verfahren basiert auf die Idee, dass die Operationen Vertauschen und Ersetzen von Zeichenketten mehrfach hintereinander benutzt werden sollen.
Die Folgende Grafik soll dieses Verfahren vereinfacht darstellen
Damit das Verfahren funktioniert, benötigen wir erstmal eine Klartextnachricht der Länge N
, einen Secret-Key S
und eine Funktion F
. Der Klartext, welcher verschlüsselt werden soll, wird dabei in zwei Hälften aufgeteilt. Nun haben wir eine linke Hälfte L0
und eine rechte Hälfte R0
der Größe N/2
. Nun wird aus dem Secret-Key S
ein erster Teilschlüssel berechnet. Dieser Teilschlüssel fließt als erster Parameter in die Berechnung der Funktion F
ein. Der zweite Parameter ist das rechte Teilwort R0
.
Das Resultat dieser Funktion ist ein verschlüsseltes rechtes Teilwort, gennant R0*
. Es gilt also F(S,R0)=R0*
. Nun wird noch das Ergebnis R0*
mit dem unverschlüsselten Teilwort L0
verknüpft. Dabei wird auf den logischen Operator XOR (Exklusives Oder) zurückgegriffen.
- Exkurs XOR
Zwei ungleiche Eingaben ergeben eine 1 und zwei gleiche Eingaben ergeben eine 0.
Beispiel : (1 XOR 1) = 0 aber (0 XOR 1) = 1
Abschließend wird noch das linke Teilwort mit dem rechten Teilwort vertauscht. Danach fängt diese Prozedur wieder von vorne an. Dieser Vorgang, auch Runde genannt, wird mehrfach hintereinander ausgeführt (In dieser Grafik sind es 2 Runden). Je mehr Runden ausgeführt werden, desto sicherer ist dieses Verfahren. Allerdings dauert es dann umso länger.
Nach der letzten Runde wird noch einmal das linke mit dem rechten Teilwort vertauscht und die Verschlüsselung ist beendet. Für die Entschlüsselung wird dieses Verfahren in umgekehrter Reihenfolge durchlaufen.
Congratulations @ozelot47! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Du hast ein kleines Upvote von unserem Curation – Support – Reblog Account erhalten. Dieser wurde per Hand erteilt und nicht von einem Bot.
Wir, die Mitglieder des German Steem Bootcamps möchten die Deutsche Community stärken.
Du findest uns im Discord unter https://discord.gg/Uee9wDB