Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.