RSA Tools
Das Modul einbinden
Um die interaktiven Elemente nutzen zu können, muss die Einbindung über den Meta-Tag features erfolgen:
---- Features: rsa-tools ----
Überblick über die Versionen
Im Modul gibt es drei Versionen. Standard und Lite bieten fünf Teiltools (Schlüsselerzeugung, Verschlüsselung, Entschlüsselung, Signieren, Verifizieren). Die Gallenbacher-Version bietet nur die Schlüsselerzeugung, die Verschlüsselung und die Entschlüsselung. Die Versionen unterscheiden sich in dem Verfahren, mit dem die Schlüssel erzeugt und die Nachrichten verschlüsselt werden:
| Version | Präfix | Verfahren | Schlüssel | Signatur |
|---|---|---|---|---|
| Standard | ohne Präfix | WebCrypto des Browsers: RSA-OAEP (Verschlüsselung), RSASSA-PKCS1-v1_5 (Signatur) | 2048 Bit, als Base64-Text | SHA-256-Hash des Klartextes wird mit dem privaten Schlüssel signiert und als Base64 ausgegeben |
| Lite | l- |
Eigene RSA-Implementierung mit kleinen Primzahlen (je 10 Bit) | Zahlenpaar (e,n) bzw. (d,n) | SHA-1-Hash des Klartextes (12 Zeichen) wird mit dem privaten Schlüssel verschlüsselt |
| Gallenbacher | g- |
ASYM-Kodierer aus dem Buch "Abenteuer Informatik" von Jens Gallenbacher (Codierscheibe) | Drei Buchstaben (A..Z, - und .) | keine Signatur-Funktion |
Standard-Version
Die Standard-Version nutzt die Kryptografie des Browsers (WebCrypto-API). Hier ist es nicht möglich, die Schlüssel zu vertauschen oder den entschlüsselten Hash aus einer Signatur anzusehen.
Erzeugt ein RSA-Schlüsselpaar. Der öffentliche und der private Schlüssel werden als Base64-Text ausgegeben.
<schluessel-erzeugen></schluessel-erzeugen>
Verschlüsselt den Klartext mit dem öffentlichen Schlüssel des Empfängers.
<ver-schluesseln></ver-schluesseln>
Entschlüsselt den Geheimtext mit dem eigenen privaten Schlüssel.
<ent-schluesseln></ent-schluesseln>
Erzeugt eine Signatur des Klartextes mit dem eigenen privaten Schlüssel.
<sig-nieren></sig-nieren>
Prüft die Signatur mit dem öffentlichen Schlüssel des Senders.
<veri-fizieren></veri-fizieren>
Lite-Version
Die Lite-Version rechnet vollständig in JavaScript mit kleinen Zahlen und zeigt so das Prinzip des RSA-Verfahrens. Der Klartext wird in Zweierblöcke aus ASCII-Codes umgewandelt. Jeder Block wird als sechsstellige Zahl einzeln verschlüsselt.
Erzeugt ein Schlüsselpaar aus zwei Zahlenpaaren (e,n) und (d,n).
<l-schluessel-erzeugen></l-schluessel-erzeugen>
Verschlüsselt den Klartext mit dem öffentlichen Schlüssel des Empfängers.
<l-ver-schluesseln></l-ver-schluesseln>
Entschlüsselt den Geheimtext mit dem eigenen privaten Schlüssel.
<l-ent-schluesseln></l-ent-schluesseln>
Berechnet den Hash des Klartextes und verschlüsselt ihn mit dem eigenen privaten Schlüssel.
<l-sig-nieren></l-sig-nieren>
Entschlüsselt die Signatur mit dem öffentlichen Schlüssel des Senders und vergleicht den Hash mit dem Hash des Klartextes.
<l-veri-fizieren></l-veri-fizieren>
Icons und Texte sind angepasst, damit deutlich wird, dass man auch mit dem privaten Schlüssel verschlüsseln und mit dem öffentlichen Schlüssel entschlüsseln kann.
<l-ver-schluesseln dataconfig='{
"umgekehrt": true
}'></l-ver-schluesseln>
<l-ent-schluesseln dataconfig='{
"umgekehrt": true
}'></l-ent-schluesseln>
Gallenbacher-Version
Die Gallenbacher-Version setzt die Codierscheibe aus dem Buch "Abenteuer Informatik" von Jens Gallenbacher um. Die Schlüssel bestehen aus genau drei Buchstaben. Erlaubt sind A bis Z sowie - und ., also 28 Zeichen. Der private Schlüssel wird aus dem öffentlichen berechnet. Beispiele: AZS und PCT bzw. BGF und FDB bilden jeweils ein Paar.
Erzeugt zufällig einen öffentlichen Schlüssel aus drei Buchstaben und berechnet dazu den privaten Schlüssel.
<g-schluessel-erzeugen></g-schluessel-erzeugen>
Verschlüsselt den Klartext mit dem öffentlichen Schlüssel des Empfängers.
<g-ver-schluesseln></g-ver-schluesseln>
Entschlüsselt den Geheimtext mit dem eigenen privaten Schlüssel.
<g-ent-schluesseln></g-ent-schluesseln>
Icons und Texte sind angepasst, damit deutlich wird, dass man auch mit dem privaten Schlüssel verschlüsseln und mit dem öffentlichen Schlüssel entschlüsseln kann.
<g-ver-schluesseln dataconfig='{
"umgekehrt": true
}'></g-ver-schluesseln>
<g-ent-schluesseln dataconfig='{
"umgekehrt": true
}'></g-ent-schluesseln>