Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Basisanbieter und der erweiterte Anbieter verwenden dieselben Schlüssel-BLOBs.
BloBs für öffentliche Schlüssel
BLOBs für öffentliche Schlüssel, typ PUBLICKEYBLOB, werden verwendet, um öffentlichen Schlüssel außerhalb eines kryptografischen Dienstanbieters (CSP) zu speichern. Öffentliche Schlüssel-BLOBs des Basisanbieters weisen das folgende Format auf.
PUBLICKEYSTRUC publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
In der folgenden Tabelle werden die einzelnen Öffentlichen Schlüsselkomponenten beschrieben. Alle Werte befinden sich im little-endian Format.
Feld | Beschreibung |
---|---|
Modul | Die Daten des öffentlichen Schlüsselmoduls befinden sich direkt nach der RSAPUBKEY Struktur. Die Größe dieser Daten variiert je nach Größe des öffentlichen Schlüssels. Die Anzahl der Bytes kann durch Dividieren des Werts des RSAPUBKEY-Bitlen- Felds durch acht bestimmt werden. |
publickeystruc | Eine PUBLICKEYSTRUC- Struktur. |
rsapubkey | Eine RSAPUBKEY- Struktur. Das magische Mitglied muss auf 0x31415352 festgelegt werden. Dieser Hexadezimalwert ist die ASCII- Codierung von RSA1. |
Anmerkung
BloBs für öffentliche Schlüssel sind nicht verschlüsselt. Sie enthalten öffentliche Schlüssel in Nur-Text- Formular.
Private Key BLOBs
PRIVATE Key BLOBs, typ PRIVATEKEYBLOB, werden verwendet, um privaten Schlüssel außerhalb eines CSP zu speichern. Private Schlüssel-BLOBs des Basisanbieters weisen das folgende Format auf.
PUBLICKEYSTRUC publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
BYTE prime1[rsapubkey.bitlen/16];
BYTE prime2[rsapubkey.bitlen/16];
BYTE exponent1[rsapubkey.bitlen/16];
BYTE exponent2[rsapubkey.bitlen/16];
BYTE coefficient[rsapubkey.bitlen/16];
BYTE privateExponent[rsapubkey.bitlen/8];
In der folgenden Tabelle wird die BLOB-Komponente des privaten Schlüssels beschrieben.
Anmerkung
Diese Felder entsprechen den In Abschnitt 7.2 von Public Key Cryptography Standards (PKCS) Nr. 1 mit geringfügigen Unterschieden beschriebenen Feldern.
Feld | Beschreibung |
---|---|
Koeffizient | Koeffizient. Dies hat einen numerischen Wert von (Umkehrung von q) mod p. |
exponent1 | Exponent 1. Dies hat einen numerischen Wert von d mod (p – 1). |
exponent2 | Exponent 2. Dies hat einen numerischen Wert von d mod (q – 1). |
Modul | Das Modul. Dies hat einen Wert von Prime1×Prime2 und wird häufig als n bezeichnet. |
prime1 | Primzahl 1, häufig als p bezeichnet. |
Prime2 | Primzahl 2, häufig als q bezeichnet. |
privateExponent | Privater Exponent, häufig als d bezeichnet. |
publickeystruc | Eine PUBLICKEYSTRUC- Struktur. |
rsapubkey | Eine RSAPUBKEY- Struktur. Das magische Mitglied muss auf 0x32415352 festgelegt werden. Dieser Hexadezimalwert ist die ASCII- Codierung von RSA2. |
Anmerkung
Private Schlüssel-BLOBs sind nicht verschlüsselt. Sie enthalten private Schlüssel in Nur-Text-Form.
Beim Aufrufen CryptExportKeykann der Entwickler auswählen, ob der Schlüssel verschlüsselt werden soll. Die PRIVATEKEYBLOB- wird verschlüsselt, wenn der hExpKey Parameter ein gültiges Handle für einen Sitzungsschlüssel enthält. Alles, aber die PUBLICKEYSTRUC Teil des BLOB verschlüsselt ist.
Anmerkung
Der Verschlüsselungsalgorithmus und die Verschlüsselungsschlüsselparameter werden nicht zusammen mit dem PRIVATEN SCHLÜSSEL-BLOB gespeichert. Die Anwendung muss diese Informationen verwalten und speichern. Wenn Null für hExpKey-übergeben wird, wird der private Schlüssel ohne Verschlüsselung exportiert.
Vorsicht
Es ist gefährlich, private Schlüssel ohne Verschlüsselung zu exportieren, da sie dann anfällig für abfangen und von nicht autorisierten Entitäten verwendet werden.
Simple Key BLOBs
Simple key BLOBs, typ SIMPLEBLOB, werden verwendet, um Sitzungsschlüssel außerhalb eines CSP zu speichern und zu transportieren. Einfache Schlüssel-BLOBs des Basisanbieters werden immer mit einem Schlüsselaustausch public keyverschlüsselt. Das pbData- Mitglied der SIMPLEBLOB- ist eine Folge von Bytes im folgenden Format.
PUBLICKEYSTRUC publickeystruc;
ALG_ID algid;
BYTE encryptedkey[rsapubkey.bitlen/8];
In der folgenden Tabelle werden die einzelnen Komponenten des pbData- Mitglieds der SIMPLEBLOB-beschrieben.
Feld | Beschreibung |
---|---|
algid | Eine ALG_ID Struktur, die den Verschlüsselungsalgorithmus angibt, der zum Verschlüsseln der Sitzungsschlüsseldaten verwendet wird. Dies weist in der Regel einen Wert von CALG_RSA_KEYX auf, der angibt, dass die Sitzungsschlüsseldaten mit einem öffentlichen Schlüsselaustauschschlüssel verschlüsselt wurden, indem der RSA Public Key-Algorithmusverwendet wird. |
verschlüsselter Schlüssel | Eine BYTE- Sequenz, die die verschlüsselten Sitzungsschlüsseldaten in Form eines PKCS #1-Verschlüsselungsblocks darstellt. Informationen zu diesem Datenformat finden Sie in den Public Key Cryptography Standards (PKCS) #1, veröffentlicht von RSA Data Security, Inc. Diese Daten sind immer die gleiche Größe wie der Modulus des öffentlichen Schlüssels. Beispielsweise können öffentliche Schlüssel, die vom Microsoft RSA Base Provider generiert werden, 512 Bit (64 Bytes) lang sein, sodass die verschlüsselten Sitzungsschlüsseldaten auch immer 512 Bit (64 Bytes) sind. |
publickeystruc | Eine PUBLICKEYSTRUC- Struktur. |