Type d’objet BLOB opaque

Les objets BLOB opaques, également appelés OPAQUEKEYBLOBs, sont utilisés pour stocker les clés de session dans un format spécifique au fournisseur, tel que Schannel. Ils contiennent le matériel de clé de base et toutes les informations d' État actuelles. Cela comprend des informations telles que la valeur Salt, le vecteur d’initialisationet la table clé. Le format des objets BLOB opaques n’est pas publié. Chaque fournisseur de services de chiffrement détermine son propre format d’objet BLOB.

Étant donné qu’une clé est exportée dans un objet BLOB opaque dans un format spécifique au CSP, elle ne peut être importée que dans le CSP à partir duquel elle a été exportée à l’origine.

Lorsque deux processus sont impliqués, chaque processus appelle CryptAcquireContext indépendamment. Chaque processus obtient un handle vers un conteneur de clé. Il est possible que les deux processus aient des handles vers le même conteneur de clé. Un processus crée les clés et les exporte dans des objets BLOB opaques, puis transmet les objets BLOB au deuxième processus. Le deuxième processus importe les clés de l’objet BLOB dans son conteneur de clé.

Si un fournisseur de services de chiffrement de matériel ne prend pas en charge l’exportation des clés, l’objet BLOB peut uniquement contenir l’index d’un registre de clés, ou un nom similaire. Dans ce cas, le reste de la procédure est ignoré.

<secure process>
cbBlob = sizeof(rgbBlob);
CryptExportKey(
          hKey, 
          0, 
          OPAQUEKEYBLOB, 
          0, 
          rgbBlob, 
          &cbBlob);
hKey = 0;

<BLOB is transferred to other process>

<user process>
CryptImportKey(
            hProv, 
            pbBlob, 
            cbBlob, 
            0, 
            0, 
            &hKey);