Clés RSA/Schannel
Génération et récupération de clés RSA/Schannel
RSA/ Les clés Schannel peuvent être générées en appelant la fonction CryptGenKey. L’appel à CryptGenKey nécessite un identificateur d’algorithme AT_KEYEXCHANGE passé dans le paramètre Algid .
Pour générer une paire de clés publiques/privées RSA/Schannel
- Appelez la fonction CryptAcquireContext pour obtenir un handle au fournisseur de chiffrement Microsoft RSA/Schannel.
- Appelez la fonction CryptGenKey pour générer les clés. AT_KEYEXCHANGE doivent être passés pour le paramètre Algid , et les 16 bits supérieurs du paramètre dwFlags doivent être définis sur la taille de clé souhaitée (512 bits). Un handle de structure HCRYPTKEY est retourné dans le paramètre hKey .
Pour récupérer un pointeur vers des clés utilisateur RSA/Schannel générées précédemment
- Appelez la fonction CryptAcquireContext pour obtenir un handle au fournisseur de chiffrement Microsoft RSA/Schannel.
- Appelez la fonction CryptGetUserKey , avec le paramètre dwKeySpec défini sur AT_KEYEXCHANGE.
Exportation de clés RSA/Schannel
Les clés principales peuvent être exportées dans des structures BLOB de clés simples. Cette opération doit être implémentée de la même façon que l’exportation de clés de chiffrement en blocnormales RC4 ou DES (Data Encryption Standard), comme décrit dans OBJET BLOB de clé simple. Le membre aiKeyAlg de la structure PUBLICKEYSTRUC est défini sur l’identificateur d’algorithme de la clé master (CALG_PCT1_MASTER, CALG_SSL2_MASTER, CALG_SSL3_MASTER ou CALG_TLS1_MASTER).
Si la fonction CPExportKey exporte une clé de master SSL2 et que l’indicateur CRYPT_SSL2_FALLBACK est défini, alors, pour empêcher les attaques de restauration de version, définissez les huit premiers octets du remplissage du bloc de chiffrement sur 0x03 plutôt que sur des données aléatoires.
Si la constante CRYPT_DESTROYKEY est spécifiée dans le paramètre dwFlags de la fonction CPExportKey , le fournisseur de solutions cloud détruit la clé ou le handle de clé après l’exportation de la clé. Cet indicateur est destiné à être utilisé uniquement avec les objets BLOB opaques.