Freigeben über


DSS-Anbieterschlüssel-BLOBs

BLOBs werden mit dem Digital Signature Standard (DSS)-Anbieter verwendet, um Schlüssel aus dem kryptografischen Dienstanbieter (CSP) zu exportieren und zu importieren.

BloBs für öffentliche Schlüssel

Ein DSS öffentlichen Schlüssel wird als BLOB exportiert und importiert, eine Folge von Bytes, die wie folgt strukturiert sind.

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 befinden sich im little-endian Format.

Feld Beschreibung
dsspubkey Eine DSSPUBKEY Struktur. Das magische Mitglied muss einen Wert von 0x31535344 haben. Diese hexadezimale Zahl ist die ASCII- Codierung von DSS1.
g Eine BYTE- Sequenz. Der Generator, g. Muss dieselbe Länge wie p sein. Wenn sie nicht die gleiche Länge wie p aufweist, muss sie mit 0x00 Bytes aufgefüllt werden.
p Eine BYTE- Sequenz. Das Primemodul, p. Das wichtigste Bit des wichtigsten Bytes muss auf eins festgelegt werden.
publickeystruc Eine PUBLICKEYSTRUC- Struktur.
q Eine BYTE- Sequenz. Die Länge "Prime", "q", "20 Bytes". Das wichtigste Bit des wichtigsten Bytes muss auf eins festgelegt werden.
Seedstruct Eine DSSSEED Struktur. Ausgangs- und Leistungswerte für die Überprüfung der Primes.
y Eine BYTE- Sequenz. Der öffentliche Schlüssel y. Muss dieselbe Länge wie p aufweisen. Wenn sie nicht die gleiche Länge wie p aufweist, muss sie mit 0x00 Bytes aufgefüllt werden.

 

Anmerkung

BLOBs für öffentliche Schlüssel nicht verschlüsselt sind. Sie enthalten öffentliche Schlüssel in Nur-Text- Formular.

 

Private Key BLOBs

Ein DSS-privaten Schlüssel wird wie folgt exportiert und als Folge von Bytes importiert.

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 befinden sich im little-endian Format.

Feld Beschreibung
dsspubkey Eine DSSPUBKEY Struktur. Das magische Mitglied muss auf 0x32535344 gesetzt werden. Diese hexadezimale Zahl ist die ASCII- Codierung von DSS2.
g Eine BYTE- Sequenz. Der Generator, g. Muss dieselbe Länge wie p sein. Wenn sie nicht die gleiche Länge wie p aufweist, muss sie mit 0x00 Bytes aufgefüllt werden.
publickeystruc Eine PUBLICKEYSTRUC- Struktur.
p Eine BYTE- Sequenz. Das Primemodul, p. Das wichtigste Bit des wichtigsten Bytes muss auf eins festgelegt werden.
q Eine BYTE- Sequenz. Die Primzahl q. q ist 20 Bytes lang. Das wichtigste Bit des wichtigsten Bytes muss auf eins festgelegt werden.
Seedstruct Eine DSSSEED Struktur. Ausgangs- und Leistungswerte für die Überprüfung der Primes.
x Eine BYTE- Sequenz. Der geheime Exponent x. Muss immer 20 Bytes lang sein. Wenn x kleiner als 20 Byte ist, muss sie mit 0x00 aufgefüllt werden.

 

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.