Erweiterte Anbieterschlüssel-BLOBs

Der Basisanbieter, der starke Anbieter und der erweiterte Anbieter verwenden die gleichen Schlüssel-BLOBs.

BLOBs mit öffentlichem Schlüssel

Öffentliche Schlüssel-BLOBsvom Typ PUBLICKEYBLOB werden verwendet, um öffentliche Schlüssel außerhalb eines Kryptografiedienstanbieters (Cryptographic Service Provider, CSP) zu speichern. BLOBs mit öffentlichem Schlüssel des erweiterten Anbieters weisen das folgende Format auf.

PUBLICKEYSTRUC  publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];

In der folgenden Tabelle werden die einzelnen Komponenten des öffentlichen Schlüssels beschrieben. Alle Werte liegen im Little-Endian-Format vor.

Feld BESCHREIBUNG
modulus Die Modulusdaten des öffentlichen Schlüssels 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 bestimmt werden, indem der Wert des RSAPUBKEY-Bitlenfelds durch acht dividiert wird.
publickeystruc Eine PUBLICKEYSTRUC-Struktur.
rsapubkey Eine RSAPUBKEY-Struktur. Der Magic-Member muss auf 0x31415352 festgelegt werden. Dieser Hexadezimalwert ist die ASCII-Codierung von RSA1.

Hinweis

BLOBs mit öffentlichem Schlüssel werden nicht verschlüsselt. Sie enthalten öffentliche Schlüssel in Klartextform.

Private Schlüsselblobs

Private Schlüssel-BLOBsvom Typ PRIVATEKEYBLOB werden verwendet, um private Schlüssel außerhalb eines CSP zu speichern. BLOBs mit privatem Schlüssel des erweiterten Anbieters 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.

Hinweis

Diese Felder entsprechen den Feldern, die in Abschnitt 7.2 von Public Key Cryptography Standards (PKCS) # 1 mit geringfügigen Unterschieden beschrieben werden.

Feld BESCHREIBUNG
Koeffizient Koeffizient. Dieser weist den numerischen Wert (umkehrend von q) mod p auf.
exponent1 Exponent 1. Dieser weist den numerischen Wert d mod (p – 1) auf.
exponent2 Exponent 2. Dieser weist den numerischen Wert d mod (q – 1) auf.
Modulus Der Modulus. Dieser hat den Wert 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. Der magic-Member muss auf 0x32415352 festgelegt werden. Dieser Hexadezimalwert ist die ASCII-Codierung von RSA2.

Hinweis

Private Schlüsselblobs werden nicht verschlüsselt. Sie enthalten private Schlüssel in Klartextform.

Beim Aufrufen von CryptExportKeykann der Entwickler auswählen, ob der Schlüssel verschlüsselt werden soll. PRIVATEKEYBLOB wird verschlüsselt, wenn der hExpKey-Parameter ein gültiges Handle für einen Sitzungsschlüssel enthält. Alles außer dem PUBLICKEYSTRUC-Teil des BLOB wird verschlüsselt.

Hinweis

Der Verschlüsselungsalgorithmus und die Verschlüsselungsschlüsselparameter werden nicht zusammen mit dem BLOB des privaten Schlüssels gespeichert. Die Anwendung muss diese Informationen verwalten und speichern. Wenn 0 (null) für hExpKey übergeben wird, wird der private Schlüssel ohne Verschlüsselung exportiert.

Achtung

Es ist gefährlich, private Schlüssel ohne Verschlüsselung zu exportieren, da sie dann anfällig für abfangende und nicht autorisierte Entitäten sind.

Einfache Schlüsselblobs

Einfache Schlüssel-BLOBsvom Typ SIMPLEBLOB werden verwendet, um Sitzungsschlüssel außerhalb eines CSP zu speichern und zu transportieren. BLOBs mit einfachen Schlüsseln des erweiterten Anbieters werden immer mit einem öffentlichen Schlüssel für den Schlüsselaustauschverschlüsselt. Der pbData-Member von SIMPLEBLOB ist eine Bytefolge im folgenden Format.

PUBLICKEYSTRUC  publickeystruc;
ALG_ID algid;
BYTE encryptedkey[rsapubkey.bitlen/8];

In der folgenden Tabelle werden die einzelnen Komponenten des pbData-Members von SIMPLEBLOB beschrieben.

Feld BESCHREIBUNG
algid Eine _ ALG-ID-Struktur, die den Verschlüsselungsalgorithmus zum Verschlüsseln der Sitzungsschlüsseldaten angibt. Dieser weist in der Regel den Wert CALG _ RSA _ KEYX auf, der angibt, dass die Sitzungsschlüsseldaten mit einem öffentlichen Schlüsselaustauschschlüssel mit dem RSA-Algorithmus für öffentliche Schlüsselverschlüsselt wurden.
Encryptedkey Eine BYTE-Sequenz, die die verschlüsselten Sitzungsschlüsseldaten in Form eines PKCS # 1-Verschlüsselungsblocks vom Typ 2 darstellt. Informationen zu diesem Datenformat finden Sie unter Public Key Cryptography Standards (PKCS) # 1, veröffentlicht von RSA Data Security, Inc. Diese Daten haben immer die gleiche Größe wie der Modulus des öffentlichen Schlüssels. Beispielsweise können öffentliche Schlüssel, die vom Microsoft RSA-Basisanbieter generiert werden, eine Länge von 512 Bits (64 Bytes) haben, sodass die verschlüsselten Sitzungsschlüsseldaten ebenfalls immer 512 Bits (64 Bytes) haben.
publickeystruc Eine PUBLICKEYSTRUC-Struktur.

Informationen zum Basisanbieter und den Schlüssel-BLOBs des erweiterten Anbieters finden Sie unter Basisanbieterschlüssel-BLOBs.