Speichern eines Sitzungsschlüssels

Hinweis

In diesem Abschnitt wird davon ausgegangen, dass Benutzer über eine Reihe von Paaren aus öffentlichem und privatem Schlüssel verfügen. Anweisungen und ein Beispiel zum Erstellen von Schlüsselpaaren finden Sie unter C-Beispielprogramm: Erstellen eines Schlüsselcontainers und Generieren von Schlüsseln.

So speichern Sie einen Sitzungsschlüssel

  1. Erstellen Sie mithilfe der CryptExportKey-Funktion ein einfaches Schlüsselblob. Dadurch wird der Sitzungsschlüssel vom CSP in den Arbeitsspeicher einer Anwendung übertragen. Geben Sie an, dass ein öffentlicher Exchange-Schlüssel zum Signieren des Schlüssel-BLOB verwendet werden soll.
  2. Store das signierte Schlüsselblob auf den Datenträger. Es wird davon ausgegangen, dass alle Datenträger unsicher sind.
  3. Wenn der Schlüssel benötigt wird, lesen Sie das Schlüsselblob vom Datenträger.
  4. Importieren Sie das Schlüsselblob mithilfe der CryptImportKey-Funktion wieder in den CSP.

Ein Beispiel für das Erstellen eines Sitzungsschlüssels und das Exportieren dieses Schlüssels in ein einfaches Schlüsselblob, das in eine Datenträgerdatei geschrieben werden kann, finden Sie unter C-Beispielprogramm: Exportieren eines Sitzungsschlüssels.

Dieses Verfahren bietet nur minimale Sicherheit. Wenn der gespeicherte Sitzungsschlüssel zum Verschlüsseln von Daten zu einem späteren Zeitpunkt verwendet wird, bietet die vorherige Prozedur keine ausreichende Sicherheit.

Um die Sicherheit zu erhöhen, signieren Sie das Schlüsselblob mit einem privaten Exchange-Schlüssel, bevor es auf dem Datenträger gespeichert wird. Wenn das Schlüsselblob später vom Datenträger gelesen wird, kann seine Signatur überprüft werden, um sicherzustellen, dass das Schlüsselblob intakt ist.

Wenn das Schlüsselblob 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üsselaustauschschlüsseldes ursprünglichen Benutzers verschlüsselt werden, und dieser neue Schlüssel kann durch den ursprünglichen 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, diese leicht entschlüsseln.

Digitale Signaturen werden unter Hashes und Digitale Signaturenausführlich erläutert.