Freigeben über


DSS-Anbieterschlüssel-BLOBs

BLOBs werden zusammen mit dem DSS-Anbieter ( Digital Signature Standard ) verwendet, um Schlüssel aus dem Kryptografiedienstanbieter (Cryptographic Service Provider , CSP) zu exportieren und schlüssel in diese zu importieren.

Public Key-BLOBs

Ein öffentlicher DSS-Schlüssel wird exportiert und als BLOB importiert, eine Sequenz von Bytes, die wie folgt strukturiert ist.

PUBLICKEYSTRUC    publickeystruc;
DSSPUBKEY         dsspubkey;
BYTE              p[dsspubkey.bitlen/8];
BYTE              q[20];
BYTE              g[dsspubkey.bitlen/8];
BYTE              y[dsspubkey.bitlen/8];
DSSSEED           seedstruct;

In der folgenden Tabelle werden diese Komponenten beschrieben. Alle Werte haben das Little-Endian-Format .

Feld Beschreibung
dsspubkey Eine DSSPUBKEY-Struktur . Das magic-Element muss den Wert 0x31535344 haben. Diese Hexadezimalzahl ist die ASCII-Codierung von DSS1.
g Eine BYTE-Sequenz . Der Generator, g. Muss die gleiche Länge wie p haben. Wenn es nicht die gleiche Länge wie p hat, muss er mit 0x00 Bytes aufgefüllt werden.
p Eine BYTE-Sequenz . Der Primmodul, p. Das bedeutendste Bit des bedeutendsten Bytes muss auf eins festgelegt werden.
publickeystruc Eine PUBLICKEYSTRUC-Struktur .
q Eine BYTE-Sequenz . Der Prim, q, 20 Byte lang. Das bedeutendste Bit des bedeutendsten Bytes muss auf eins festgelegt werden.
seedstruct Eine DSSSEED-Struktur . Ausgangs- und Zählerwerte zum Überprüfen von Primzahlen.
Y Eine BYTE-Sequenz . Der öffentliche Schlüssel, y. Muss dieselbe Länge wie p haben. Wenn es nicht die gleiche Länge wie p hat, muss er mit 0x00 Bytes aufgefüllt werden.

 

Hinweis

Öffentliche Schlüssel-BLOBs werden nicht verschlüsselt. Sie enthalten öffentliche Schlüssel in Klartextform .

 

BLOBs für private Schlüssel

Ein privater DSS-Schlüssel wird exportiert und als Sequenz von Bytes importiert, die wie folgt strukturiert sind.

PUBLICKEYSTRUC    publickeystruc;
DSSPUBKEY         dsspubkey;
BYTE              p[dsspubkey.bitlen/8];
BYTE              q[20];
BYTE              g[dsspubkey.bitlen/8];
BYTE              x[20];
DSSSEED           seedstruct;

In der folgenden Tabelle werden die einzelnen Komponenten beschrieben. Alle Werte haben das Little-Endian-Format .

Feld Beschreibung
dsspubkey Eine DSSPUBKEY-Struktur . Das magic-Element muss auf 0x32535344 festgelegt werden. Diese Hexadezimalzahl ist die ASCII-Codierung von DSS2.
g Eine BYTE-Sequenz . Der Generator, g. Muss die gleiche Länge wie p haben. Wenn es nicht die gleiche Länge wie p hat, muss er mit 0x00 Bytes aufgefüllt werden.
publickeystruc Eine PUBLICKEYSTRUC-Struktur .
p Eine BYTE-Sequenz . Der Primmodul, p. Das bedeutendste Bit des bedeutendsten Bytes muss auf eins festgelegt werden.
q Eine BYTE-Sequenz . Die Primzahl q. q ist 20 Byte lang. Das bedeutendste Bit des bedeutendsten Bytes muss auf eins festgelegt werden.
seedstruct Eine DSSSEED-Struktur . Ausgangs- und Zählerwerte zum Überprüfen von Primzahlen.
x Eine BYTE-Sequenz . Der Geheimnis-Exponent, x. Muss immer 20 Bytes lang sein. Wenn x kleiner als 20 Byte ist, muss es mit 0x00 aufgefüllt werden.

 

Beim Aufrufen von CryptExportKey kann 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 BLOBs ist verschlüsselt.

Hinweis

Der Verschlüsselungsalgorithmus und die Verschlüsselungsschlüsselparameter werden nicht zusammen mit dem BLOB für private Schlüssel 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.

 

Achtung

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