BLOB chiave del provider di base

Il provider di base e il provider esteso usano gli stessi BLOB chiave.

BLOB chiave pubblica

I BLOB delle chiavi pubbliche, digitare PUBLICKEYBLOB, vengono usati per archiviare chiavi pubbliche all'esterno di un provider di servizi di crittografia (CSP). I BLOB della chiave pubblica del provider di base hanno 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 I dati del modulo di chiave pubblica si trovano direttamente dopo la struttura RSAPUBKEY . Le dimensioni di questi dati variano a seconda delle dimensioni della chiave pubblica. Il numero di byte può essere determinato suddividendo il valore del campo bitlen RSAPUBKEY per otto.
publickeystruc Struttura PUBLICKEYSTRUC .
rsapubkey Struttura RSAPUBKEY . Il membro magico deve essere impostato su 0x31415352. Questo valore esadecimale è la codifica ASCII di RSA1.

 

Nota

I BLOB delle chiavi pubbliche non vengono crittografati. Contengono chiavi pubbliche in formato testo non crittografato .

 

BLOB chiave privata

I BLOB delle chiavi private, digitare PRIVATEKEYBLOB, vengono usati per archiviare chiavi private all'esterno di un CSP. I BLOB della chiave privata del provider di base hanno 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];

Nella tabella seguente viene descritto il componente BLOB della chiave privata.

Nota

Questi campi corrispondono ai campi descritti nella sezione 7.2 di Standard di crittografia chiave pubblica (PKCS) #1 con differenze minori.

 

Campo Descrizione
Coefficiente Coefficiente. Questo ha un valore numerico di (inverso di q) mod p.
esponente1 Esponente 1. Questo ha un valore numerico di d mod (p - 1).
esponente2 Esponente 2. Questo ha un valore numerico di d mod (q - 1).
Modulus Modulo. Questo valore ha un valore Prime1×Prime2 ed è spesso noto come n.
prime1 Numero primo 1, spesso noto come p.
prime2 Numero primo 2, spesso noto come q.
privateExponent Esponente privato, spesso noto come d.
publickeystruc Struttura PUBLICKEYSTRUC .
rsapubkey Struttura RSAPUBKEY . Il membro magico deve essere impostato su 0x32415352. Questo valore esadecimale è la codifica ASCII di RSA2.

 

Nota

I BLOB delle chiavi private non vengono 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 in una chiave di sessione. Tutto, ma la parte PUBLICKEYSTRUC del BLOB viene 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 chiave semplice

I BLOB di chiave semplice, digitare SIMPLEBLOB, vengono usati per archiviare e trasportare le chiavi di sessione all'esterno di un CSP. I BLOB semplici del provider di base vengono sempre crittografati con una chiave pubblica di scambio delle chiavi. Il membro pbData del SIMPLEBLOB è una sequenza di byte nel formato seguente.

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

La tabella seguente descrive ogni componente del membro pbData di SIMPLEBLOB.

Campo Descrizione
algid Struttura ALG_ID che specifica l'algoritmo di crittografia usato per crittografare i dati della chiave di sessione. Questo in genere ha un valore di 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 che rappresenta i dati della chiave di sessione crittografata sotto forma di un blocco di crittografia PKCS #1, tipo 2. Per informazioni su questo formato di dati, vedere Public Key Cryptography Standards (PKCS) #1, pubblicato da RSA Data Security, Inc. Questi dati sono sempre le stesse dimensioni del modulo della chiave pubblica. Ad esempio, le chiavi pubbliche generate dal provider di base Microsoft RSA possono essere di 512 bit (64 byte) in lunghezza, quindi i dati della chiave sessione crittografata sono sempre 512 bit (64 byte).
publickeystruc Struttura PUBLICKEYSTRUC .