RSA Blockcipher

Servus.

RSA-Blockchiffre

Es war etwas kniffelig, aber jetzt ist es geschafft. Ich habe ein Programm für RSA Blockchiffre geschrieben. Damit ist es möglich beliebig lange Texte mit RSA zu verschlüsseln.

Das Programm nimmt einem alles ab – vorallem das rechnen :P – man muss lediglich den zu verschlüsselnden Text und die Bitgröße des Schlüsselpaares eingeben, was generiert werden soll. Wahlweise kann man auch eigene Schlüsselpaare eingeben, wenn man schon welche hat. Anschließend klickt man auf „encrypt“ zum verschlüsseln und „decrypt“ zum entschlüsseln. Man kann auch einen bereits mit dem Programm verschlüsselten Text per Email/ICQ/etc versenden und derjenige am anderen Ende der Leitung kann es mit dem Programm wieder lesbar machen. Dazu muss man allerdings das System des Schlüsseltausches verstanden haben:

Ein Schlüsselpaar besteht aus drei Komponenten: dem Public Key, dem Private Key und dem Modul. Man generiert sich mit dem Programm ein paar für sich selbst. Dazu stellt man z.b. 256 oder 512 Bit ein und klickt auf „encrypt“. Jetzt stehen oben die generierten Schlüsselkomponenten, die man abspeichert (speichern einfach mit den vorgesehenen Felder und die Buttons an der Seite ändern, je nachdem ob man für sich selbst ver-/entschlüsseln möchte, oder für den Gesprächspartner).

Den Public Key und das Modul schickt ihr eurem Gesprächspartner, er tut dasselbe mit seinen generierten Schlüsselkomponenten. (Vorsicht! Der Private Key muss geheim bleiben, außer euch selbst darf ihn NIEMAND wissen !!!)

Um jetzt eine Nachricht für euer Gegenüber zu verschlüsseln, gebt ihr links eure Nachricht ein. Anschließend gebt ihr im Feld für den Public Key, den Public Key eures Gesprächspartners ein und in das Feld für das Modul, sein Modul. Jetzt klickt auf „encrypt“ und verschickt die verschlüsselte Nachricht die nun rechts erschienen ist.

Euer gegenüber kopiert die erhaltene, verschlüsselte Nachricht in sein rechtes Feld, gibt bei den Schlüsselkomponenten seinen Private Key und sein Modul ein und klickt auf „decrypt“. Jetzt erscheint bei ihm die Nachricht, die ihr ihm geschickt habt, als Klartext im linken Feld.

Download RSA_Blockcipher

Wie funktioniert das Ganze ? Ich beschreibe mal den Weg von Klartext zum verschlüsselten und codierten Text. Als erstes hat man hat man einen ganz normalen String („test“). Dieser wird so umgewandelt, dass jeder character durch seinen entsprechenden ASCII-Wert ersetzt wird („116101115116″, t: 116, e: 101, s: 115). Da bei RSA das, was verschlüsselt wird (in diesem Fall „116101115116″) numerisch nicht größer sein darf als das Modul muss geprüft werden, ob das der Fall ist. D.h. der Text wird so zusammengefasst, dass immer eine bestimmte Anzahl von Zeichen (hier Werte aus 3 Ziffern) in einem Block stehen. Die Zeichenlänge des Blocks ist gleich der Zeichenlänge des Moduls. Sofern sich die Zeichenlänge des Moduls nicht grade durch 3 ohne Rest teilen lässt, wird der Rest des Blocks mit Nullen aufgefüllt. Bei einer Modulzeichenlänge von 5 ergibt das in unserem Fall: 00116001010011500116 (erster Block 00116 usw.)

Das entspricht einem Zeichen (á 3 Ziffern) pro Block, der Rest wird wie gesagt mit Nullen ergänzt, um eine immer gleichbleibende Blocklänge zu erhalten.

Jetzt wird jeder dieser Blöcke einzeln mit dem RSA-Verfahren verschlüsselt. Falls das Ergebnis nicht mehr gleich der Modulzeichenlänge ist, wird wieder mit Nullen aufgefüllt. Alle verschlüsselten Blöcke werden aneinander gereiht. Das ist das fertige Ergebnis der Verschlüsselung.

Bein Entschlüsseln wird dieser ganze Vorgang einfach Rückwärts wiederholt.

Das tolle an dem Ganzen ist, dass bei genügend großer Schlüssellänge (Bitsize) der verschlüsselte Text im Prinzip imun gegen Kryptoanalyse ist ! Außerdem haben Public-Key-Kryptosysteme doch generell was für sich oder ? :)

(P.S.: Das Programm ist nicht Beta-getestet, also keine Garantie auf funktionstüchtigkeit oder entstehenden Schaden. Grenzfälle können unter Umständen komische Ergebnisse liefern!)

4 Antworten zu “RSA Blockcipher”

  1. sportssedan Sagt:

    hi, das programm ist echt cool.

    Könnte ich mal den Quelltext sehen?

    Gruss

  2. schreib mich mal über icq deswegen an. (339820362)

  3. Gut Leistung. Das Programm gefällt mir. In welcher Sprache hast du das geschrieben?

Eine Antwort schreiben