Speichern eines Sitzungsschlüssels
Hinweis
In diesem Abschnitt wird davon ausgegangen, dass Benutzer über eine Reihe öffentlicher/privater Schlüsselpaare verfügen. Anweisungen und ein Beispiel zum Erstellen von Schlüsselpaaren finden Sie im C-Programmbeispiel: Erstellen eines Schlüsselcontainers und Generieren von Schlüsseln.
So speichern Sie einen Sitzungsschlüssel
- Erstellen Sie ein einfaches Schlüssel-BLOB mithilfe der CryptExportKey-Funktion. Dadurch wird der Sitzungsschlüssel vom CSP in den Speicherplatz einer Anwendung übertragen. Geben Sie an, dass ein öffentlicher Austauschschlüssel zum Signieren des Schlüssel-BLOBs verwendet wird.
- Speichern Sie das signierte Schlüssel-BLOB auf dem Datenträger. Es wird davon ausgegangen, dass alle Datenträger nicht sicher sind.
- Wenn der Schlüssel benötigt wird, lesen Sie das Schlüssel-BLOB vom Datenträger aus.
- Importieren Sie das Schlüssel-BLOB mithilfe der CryptImportKey-Funktion wieder in das CSP.
Ein Beispiel für das Erstellen eines Sitzungsschlüssels und das Exportieren dieses Schlüssels in ein einfaches Schlüssel-BLOB, das in eine Datenträgerdatei geschrieben werden kann, finden Sie unter C-Programmbeispiel: Exportieren eines Sitzungsschlüssels.
Dieses Verfahren bietet nur minimale Sicherheit. Wenn der gespeicherte Sitzungsschlüssel verwendet wird, um Daten zu einem späteren Zeitpunkt zu verschlüsseln, bietet das vorangehende Verfahren keine ausreichende Sicherheit.
Um eine höhere Sicherheit zu gewährleisten, signieren Sie das Schlüssel-BLOB mit einem privaten Austauschschlüssel, bevor er auf dem Datenträger gespeichert wird. Wenn das Schlüssel-BLOB später vom Datenträger gelesen wird, kann seine Signatur überprüft werden, um sicherzustellen, dass das Schlüssel-BLOB intakt ist.
Wenn das Schlüssel-BLOB nicht signiert ist, kann jeder Benutzer mit Zugriff auf den Datenträger oder andere Medien, auf denen der Schlüssel gespeichert ist, einen neuen Sitzungsschlüssel erstellen.
Der neue Sitzungsschlüssel kann mit dem öffentlichen Schlüssel und Austauschschlüssel des ursprünglichen Benutzers verschlüsselt werden, und dieser neue Schlüssel kann durch das Original ersetzt werden. Wenn der Benutzer unwissentlich den ersetzten Sitzungsschlüssel zum Verschlüsseln von Dateien und Nachrichten verwendet hat, könnte die Person, die den Ersatzschlüssel erstellt hat, sie leicht entschlüsseln.
Digitale Signaturen werden unter Hashes und digitale Signaturen ausführlich erläutert.