zu About Security #78: Hybrides Verfahren mit Signatur
Als Algorithmen sollen AES als symmetrisches und RSA als asymmetrisches
System verwendet werden. Die folgenden Aussagen gelten natürlich
entsprechend auch für alle anderen Systeme.
Die verschiedenen Funktionen werden folgendermaßen bezeichnet:
- AESver(k, m)
- ist die AES-Verschlüsselung des
Blocks m mit dem Schlüssel k,
- AESent(k, m')
- entsprechend die
AES-Entschlüsselung eines verschlüsselten Blocks m'.
- RSAver(c, m)
- ist die RSA-Verschlüsselung des
Blocks m mit dem öffentlichen Schlüssel c,
- RSAent(d, m')
- entsprechend die
RSA-Entschlüsselung eines verschlüsselten Blocks m'.
Soll die Integrität des Klartexts sichergestellt werden, sind
zusätzlich folgende Funktionen notwendig:
- RSAsign(s, m)
- signiert den Klartextblock m mit
dem geheimen Schlüssel s,
- RSAtest(t, m, MAC)
- testet die Signatur MAC
unter dem Klartext m mit dem Testschlüssel t.
Das hybride Verfahren mit Signatur läuft dann folgendermaßen ab:
- Signieren und Verschlüsseln:
- Signatur des Klartexts m mit dem geheimen
Signierschlüssel s des Senders:
RSAsign(s, m) =: MAC
- Klartext m und Signatur MAC werden
verbunden:
(m, MAC) =: M
- Erzeugung eines zufälligen Schlüssels k
für die AES-Verschlüsselung
- AES-Verschlüsselung des signierten Klartexts M mit
Schlüssel k:
AESver(k, M) =: M'
- RSA-Verschlüsselung des (geheimzuhaltenden)
Schlüssels k mit dem öffentlichen Schlüssel
c des Empfängers:
RSAver(c, k) =: k'
- Verbinden von M' und k' und Übertragung an
den Empfänger:
(M', k')
- Entschlüsseln und Testen:
- RSA-Entschlüsselung der 2. Komponente (= der
Schlüssel für AES) der empfangenen Nachricht mit dem
privaten Schlüssel des Empfängers:
RSAent(d, k') =: k
- AES-Entschlüsselung der 1. Komponente mit dem soeben
entschlüsselten Schlüssel k:
AESent(k, M') =: M = (m, MAC)
- Test der Signatur mit dem öffentlichen Testschlüssel
t des Senders:
RSAtest(t, m, MAC)