Share via


Objets BLOB clés du fournisseur de base

Le fournisseur de base et le fournisseur étendu utilisent les mêmes objets BLOB de clé.

Objets blob à clé publique

Les objets BLOB de clé publique, de type PUBLICKEYBLOB, sont utilisés pour stocker des clés publiques en dehors d’un fournisseur de services de chiffrement (CSP). Les objets BLOB de clé publique du fournisseur de base ont le format suivant.

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

Le tableau suivant décrit chaque composant de clé publique. Toutes les valeurs sont au format little endian .

Champ Description
modulo Les données de module de clé publique se trouvent directement après la structure RSAPUBKEY . La taille de ces données varie en fonction de la taille de la clé publique. Le nombre d’octets peut être déterminé en divisant la valeur du champ bitlen RSAPUBKEY par huit.
publickeystruc Structure PUBLICKEYSTRUC .
rsapubkey Structure RSAPUBKEY . Le membre magic doit être défini sur 0x31415352. Cette valeur hexadécimale est l’encodage ASCII de RSA1.

 

Notes

Les objets BLOB de clé publique ne sont pas chiffrés. Ils contiennent des clés publiques en texte clair .

 

Objets blob de clés privées

Les objets BLOB de clés privées, de type PRIVATEKEYBLOB, sont utilisés pour stocker des clés privées en dehors d’un fournisseur de solutions cloud. Les objets BLOB de clés privées du fournisseur de base ont le format suivant.

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];

Le tableau suivant décrit le composant BLOB de clé privée.

Notes

Ces champs correspondent aux champs décrits dans la section 7.2 des Normes de chiffrement à clé publique (PKCS) #1 avec des différences mineures.

 

Champ Description
Coefficient Coefficient. La valeur numérique est (inverse de q) mod p.
exposant1 Exposant 1. La valeur numérique est d mod (p – 1).
exposant2 Exposant 2. La valeur numérique est d mod (q – 1).
Modulo Module. Il a la valeur Prime1×Prime2 et est souvent appelé n.
prime1 Nombre premier 1, souvent appelé p.
prime2 Nombre premier 2, souvent appelé q.
privateExponent Exposant privé, souvent appelé d.
publickeystruc Structure PUBLICKEYSTRUC .
rsapubkey Structure RSAPUBKEY . Le membre magic doit être défini sur 0x32415352. Cette valeur hexadécimale est l’encodage ASCII de RSA2.

 

Notes

Les objets BLOB de clé privée ne sont pas chiffrés. Elles contiennent des clés privées en texte clair.

 

Lors de l’appel de CryptExportKey, le développeur peut choisir de chiffrer la clé. Le PRIVATEKEYBLOB est chiffré si le paramètre hExpKey contient un handle valide pour une clé de session. Tout, sauf la partie PUBLICKEYSTRUC de l’objet BLOB, est chiffré.

Notes

L’algorithme de chiffrement et les paramètres de clé de chiffrement ne sont pas stockés avec l’objet BLOB de clé privée. L’application doit gérer et stocker ces informations. Si zéro est passé pour hExpKey, la clé privée est exportée sans chiffrement.

 

Attention

Il est dangereux d’exporter des clés privées sans chiffrement, car elles sont alors vulnérables à l’interception et à l’utilisation par des entités non autorisées.

 

Objets BLOB de touches simples

Les objets BLOB de clés simples, de type SIMPLEBLOB, sont utilisés pour stocker et transporter des clés de session en dehors d’un fournisseur de solutions cloud. Les objets BLOB à clé simple du fournisseur de base sont toujours chiffrés avec une clé publique d’échange de clé. Le membre pbData du SIMPLEBLOB est une séquence d’octets au format suivant.

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

Le tableau suivant décrit chaque composant du membre pbData du SIMPLEBLOB.

Champ Description
algid Une structure ALG_ID qui spécifie l’algorithme de chiffrement utilisé pour chiffrer les données de clé de session. Cela a généralement une valeur de CALG_RSA_KEYX, ce qui indique que les données de clé de session ont été chiffrées avec une clé publique d’échange de clé à l’aide de l’algorithme de clé publique RSA.
Encryptedkey Séquence BYTE qui représente les données de clé de session chiffrées sous la forme d’un bloc de chiffrement PKCS #1, de type 2. Pour plus d’informations sur ce format de données, consultez les Normes de chiffrement à clé publique (PKCS) #1, publiées par RSA Data Security, Inc. Ces données ont toujours la même taille que le module de la clé publique. Par exemple, les clés publiques générées par le fournisseur de base Microsoft RSA peuvent avoir une longueur de 512 bits (64 octets), de sorte que les données de clé de session chiffrées sont également toujours de 512 bits (64 octets).
publickeystruc Structure PUBLICKEYSTRUC .