Manuelles Austauschen von Sitzungsschlüsseln
Hinweis
Bei der in diesem Abschnitt beschriebenen Prozedur wird davon ausgegangen, dass die Benutzer (oder CryptoAPI-Clients) bereits über einen eigenen Satz von öffentlichen/privaten Schlüsselpaaren verfügen und auch die öffentlichen Schlüssel der anderen erhalten haben.
Die folgende Abbildung zeigt, wie Sie diese Prozedur verwenden, um eine verschlüsselte Nachricht zu senden.
Dieser Ansatz ist anfällig für mindestens eine gängige Angriffsform. Ein Lauscher kann Kopien einer oder mehrerer verschlüsselter Nachrichten und der verschlüsselten Schlüssel abrufen. Dann, zu einem späteren Zeitpunkt, kann der Lauscher eine dieser Nachrichten an den Empfänger senden, und der Empfänger hat keine Möglichkeit, zu wissen, dass die Nachricht nicht direkt vom ursprünglichen Absender stammt. Dieses Risiko kann durch Zeitstempel für alle Nachrichten oder durch Die Verwendung von Seriennummern verringert werden.
Die einfachste Möglichkeit, verschlüsselte Nachrichten an einen anderen Benutzer zu senden, besteht darin, die Mit einem zufälligen Sitzungsschlüssel verschlüsselte Nachricht zusammen mit dem Sitzungsschlüssel zu senden, der mit dem öffentlichen Schlüsselaustauschschlüssel des Empfängers verschlüsselt ist.
Im Folgenden sind die Schritte zum Senden eines verschlüsselten Sitzungsschlüssels aufgeführt.
So senden Sie einen verschlüsselten Sitzungsschlüssel
- Erstellen Sie mithilfe der CryptGenKey-Funktion einen zufälligen Sitzungsschlüssel.
- Verschlüsseln Sie die Nachricht mithilfe des Sitzungsschlüssels. Dieses Verfahren wird unter Datenverschlüsselung und -entschlüsselung erläutert.
- Exportieren Sie den Sitzungsschlüssel mit der Funktion CryptExportKey in ein Schlüsselblob, und geben Sie an, dass der Schlüssel mit dem öffentlichen Schlüsselaustauschschlüssel des Zielbenutzers verschlüsselt wird.
- Senden Sie sowohl die verschlüsselte Nachricht als auch das verschlüsselte Schlüssel-BLOB an den Zielbenutzer.
- Der Zielbenutzer importiert das Schlüsselblob mithilfe der CryptImportKey-Funktion in seinen CSP. Dadurch wird der Sitzungsschlüssel automatisch entschlüsselt, vorausgesetzt, der öffentliche Schlüssel des Zielbenutzers wurde in Schritt 3 angegeben.
- Der Zielbenutzer kann die Nachricht dann mithilfe des Sitzungsschlüssels entschlüsseln, indem er das unter Datenverschlüsselung und -entschlüsselung beschriebene Verfahren folgt.