Condividi tramite


BLOB della chiave RSA/Schannel

I BLOB vengono usati con il provider RSA/Schannel per esportare le chiavi da e importare chiavi in, il provider di servizi di crittografia (CSP).

BLOB a chiave pubblica

I BLOB a chiave pubblica, digitare PUBLICKEYBLOB, vengono usati per archiviare le chiavi pubbliche. Queste chiavi vengono esportate e importate come sequenza di byte con il formato seguente.

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

La tabella seguente descrive ogni componente chiave pubblica. Tutti i valori sono in formato little-endian .

Campo Descrizione
modulo Sequenza BYTE . I dati modulo a chiave pubblica si trovano direttamente dopo la struttura RSAPUBKEY . La lunghezza di questi dati varia a seconda della lunghezza della chiave pubblica. Il numero di byte può essere determinato dividendo il valore del membro bitlen di RSAPUBKEY per otto.
publickeystruc Struttura PUBLICKEYSTRUC .
rsapubkey Struttura RSAPUBKEY . Il membro magic deve essere impostato su 0x31415352. Questo valore esadecimale è la codifica ASCII di RSA1.

 

Nota

I BLOB a chiave pubblica non sono crittografati. Contengono chiavi pubbliche in formato testo non crittografato .

 

BLOB di chiave privata

I BLOB di chiave privata, tipo PRIVATEKEYBLOB, vengono usati per archiviare coppie di chiavi pubbliche/private. Queste chiavi vengono esportate e importate come sequenza di byte con il formato seguente.

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

Se il BLOB della chiave è crittografato, tutto il resto della parte PUBLICKEYSTRUC del BLOB viene crittografato.

Nota

I parametri dell'algoritmo di crittografia e della chiave di crittografia non vengono archiviati insieme al BLOB della chiave privata. È responsabilità dell'applicazione gestire queste informazioni.

 

La tabella seguente descrive ogni componente BLOB della chiave privata.

Nota

Questi campi corrispondono ai campi descritti nella sezione 7.2 di Public Key Cryptography Standards (PKCS) #1 con differenze minime.

 

Campo Descrizione
esponente1 Sequenza BYTE . Primo esponente. Ha un valore numerico di d mod (p - 1).
esponente2 Sequenza BYTE . Secondo esponente. Ha un valore numerico di d mod (q - 1).
Coefficiente Sequenza BYTE . Coefficiente. Ha un valore numerico pari a (inversa di q) mod p.
Modulus Sequenza BYTE . Modulo. Contiene una stringa che contiene Prime1 * Prime2. È spesso noto come n.
prime1 Sequenza BYTE . Numero primo 1, spesso noto come p.
prime2 Sequenza BYTE . Numero primo 2, spesso noto come q.
publickeystruc Struttura PUBLICKEYSTRUC .
privateExponent Sequenza BYTE . Esponente privato, spesso noto come d.
rsapubkey Struttura RSAPUBKEY . Il membro magic deve essere impostato su 0x32415352. Questo valore esadecimale è la codifica ASCII di RSA2.

 

Nota

I BLOB con chiave privata non sono crittografati. Contengono chiavi private in formato testo non crittografato.

 

Quando si chiama CryptExportKey, lo sviluppatore può scegliere se crittografare la chiave. PRIVATEKEYBLOB viene crittografato se il parametro hExpKey contiene un handle valido per una chiave di sessione. Tutto, ma la parte PUBLICKEYSTRUC del BLOB è crittografata.

Nota

I parametri dell'algoritmo di crittografia e della chiave di crittografia non vengono archiviati insieme al BLOB della chiave privata. L'applicazione deve gestire e archiviare queste informazioni. Se zero viene passato per hExpKey, la chiave privata verrà esportata senza crittografia.

 

Attenzione

È pericoloso esportare chiavi private senza crittografia perché sono quindi vulnerabili all'intercettazione e all'uso da parte di entità non autorizzate.

 

BLOB con chiave semplice

I BLOB con chiave semplice, digitare SIMPLEBLOB, vengono usati per archiviare e trasportare le chiavi di sessione. Questi vengono sempre crittografati con una chiave pubblica di scambio di chiavi. Queste chiavi vengono esportate e importate come sequenza di byte con il formato seguente.

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

La tabella seguente descrive ogni componente BLOB semplice.

Campo Descrizione
algid Struttura ALG_ID . Questo specifica in genere l'algoritmo CALG_RSA_KEYX, che indica che i dati della chiave di sessione sono stati crittografati con una chiave pubblica di scambio di chiavi, usando l'algoritmo RSA Public Key.
Encryptedkey Sequenza BYTE . I dati della chiave di sessione crittografati sono sotto forma di blocco di crittografia PKCS #1, tipo 2. Per informazioni su questo formato di dati, vedere Public Key Cryptography Standards (PKCS), pubblicato da RSA Data Security, Inc.
publickeystruc Struttura PUBLICKEYSTRUC .

 

Questi dati sono sempre le stesse dimensioni del modulo della chiave pubblica. Ad esempio, le chiavi pubbliche generate dal provider di crittografia di base Microsoft sono sempre 512 bit (64 byte) in lunghezza, quindi i dati della chiave sessione crittografata sono sempre 64 byte.