IBM Cloud Docs
Opérations de chiffrement : API PKCS #11

Opérations de chiffrement : API PKCS #11

IBM Cloud® Hyper Protect Crypto Services fournit un ensemble de fonctions de cryptographie exécutées dans un module HSM(Hardware Security Module)A physical appliance that provides on-demand encryption, key management, and key storage as a managed service. du cloud. Vous pouvez effectuer des opérations de chiffrement en accédant à une bibliothèque PKCS #11 qui est écrite dans la norme PKCS #11. PKCS #11 est une norme qui spécifie une API, nommée Cryptoki, pour les dispositifs qui contiennent des informations de chiffrement et effectuent des fonctions de chiffrement.

Pour plus d'informations sur PKCS #11, voir Présentation de PKCS #11.

Installation et configuration de la bibliothèque PKCS #11

Pour effectuer un appel d'API PKCS #11 , vous devez d'abord installer la bibliothèque PKCS #11, puis configurer les types d'utilisateur PKCS #11.

Les noms de fichier de bibliothèque utilisent la convention de dénomination : pkcs11-grep11-<**platform**>.so.<**version**>. La valeur platform est amd64 ou s390x et la valeur version correspond à la syntaxe major.minor.build standard. Après avoir téléchargé la bibliothèque, déplacez la bibliothèque dans un dossier accessible par vos applications. Par exemple, si vous exécutez votre application sous Linux®, vous pouvez déplacer la bibliothèque vers /usr/local/lib, /usr/local/lib64ou /usr/lib.

Pour accéder à l'API PKCS #11 , configurez la bibliothèque PKCS #11 en définissant le noeud final d'API et la clé d'API dans le fichier de configuration grep11client.yaml. Ensuite, initialisez la bibliothèque. Pour obtenir des instructions détaillées, voir Exécution d'opérations de chiffrement à l'aide de l'API PKCS #11.

Si vous exécutez une application Java PKCS #11 à l'aide du fournisseur SunPKCS11 sur la plateforme IBM Z (s390x), veillez à utiliser la dernière machine virtuelle Java IBM Semeru et à spécifier l'option -Xjit:noResumableTrapHandler Java lors du démarrage de votre application. Vous pouvez télécharger la dernière version s390x de la JVM IBM Semeru en remplaçant la zone de filtre Architecture par s390x sur la page IBM Semeru Runtime Downloads.

Traitement des erreurs

L'API PKCS #11 de Hyper Protect Crypto Services suit la méthode standard de l'interface PKCS #11 Cryptographic Token Interface pour le traitement des erreurs.

Vérification de la protection des clés par les unités de chiffrement

L'API PKCS #11 fonctionne avec les objets de clé générés qui peuvent être stockés, mis à jour et extraits d'un magasin de clés distant sur IBM Cloud. Comme niveau de protection supplémentaire, les objets clés qui sont stockés dans IBM Cloud peuvent également être vérifiés pour s'assurer qu'il n'y a pas d'altération.

Chaque clé symétrique générée, dérivée ou désencapsulée contient une empreinte numérique qui est stockée dans un attribut de clé appelé CKA_CHECK_VALUE. Cet attribut est une somme de contrôle de 3 octets pour l'objet clé lui-même.

Après avoir généré, dérivé ou désencapsulé un objet clé, il est conseillé de stocker séparément la valeur de la somme de contrôle initiale (contenu de l'attribut CKA_CHECK_VALUE) ainsi que tout identifiant unique de l'objet clé. Les sommes de contrôle stockées séparément peuvent alors être utilisées pour vérifier si les clés ont été manipulées ou non.

Pour vérifier une clé, effectuez une opération de chiffrement ECB d'un seul bloc d'octets nuls (0x00) en utilisant la clé à vérifier. Si les 3 premiers octets du chiffrement résultant sont identiques à la valeur de l'attribut de clé CKA_CHECK_VALUE qui est stocké localement pour la même clé, cela indique que l'objet clé n'a pas été altéré. L'attribut de clé CKA_CHECK_VALUE ne peut pas être utilisé pour obtenir une partie quelconque de la valeur de la clé.

Vous trouverez iciun exemple d'extraction des valeurs de total de contrôle pour les clés AES, DES2et DES3, ainsi que la vérification des totaux de contrôle de clé.

Liste de fonctions #11 PKCS

La norme PKCS #11 définit une API nommée Cryptoki. Le tableau ci-après répertorie et décrit les fonctions de l'API Cryptoki PKCS #11.

Toutes les fonctions PKCS #11 ne sont pas implémentées par Hyper Protect Crypto Services. La mention Yes est indiquée dans le tableau pour les fonctions qui sont implémentées.

Tableau 1. Décrit les fonctions PKCS #11 implémentées par le système dorsal de service
Catégorie Fonction PKCS #11 Implémentée ? (Oui ou Non) Description
Usage général C_Initialize Oui Initialise Cryptoki.
Usage général C_Finalize Oui Nettoie diverses ressources associées à Cryptoki.
Usage général C_GetInfo Oui Obtient des informations générales sur Cryptoki.
Usage général C_GetFunctionList Oui Obtient les points d'entrée des fonctions de la bibliothèque Cryptoki.
Gestion de jeton et d'attribut C_GetSlotList Oui Obtient une liste d'attributs dans le système.
Gestion de jeton et d'attribut C_GetSlotInfo Oui Obtient des informations sur un attribut particulier.
Gestion de jeton et d'attribut C_GetTokenInfo Oui Obtient des informations sur un jeton particulier.
Gestion de jeton et d'attribut C_WaitForSlotEvent Non Attend qu'un événement d'emplacement (insertion de jeton, retrait, etc.) se produise.
Gestion de jeton et d'attribut C_GetMechanismList Oui Obtient une liste des mécanismes pris en charge par un jeton.
Gestion de jeton et d'attribut C_GetMechanismInfo Oui Obtient des informations sur un mécanisme particulier.
Gestion de jeton et d'attribut C_InitToken Oui Initialise un jeton.
Gestion de jeton et d'attribut C_InitPIN Oui Initialise le code PIN de l'utilisateur standard.
Gestion de jeton et d'attribut C_SetPIN Oui Modifie le code PIN de l'utilisateur actuel.
Gestion de session C_OpenSession Oui Ouvre une connexion entre une application et un jeton particulier ou configure un rappel d'application pour une insertion de jeton.
Gestion de session C_CloseSession Oui Ferme une session.
Gestion de session C_CloseAllSessions Oui Ferme toutes les sessions avec un jeton.
Gestion de session C_GetSessionInfo Oui Obtient des informations sur la session.
Gestion de session C_GetOperationState Oui Obtient l'état des opérations de chiffrement d'une session.
Gestion de session C_SetOperationState Oui Définit l'état des opérations de chiffrement d'une session.
Gestion de session C_Login Oui Se connecte à un jeton.
Gestion de session C_Logout Oui Se déconnecte d'un jeton.
Gestion d'objet C_CreateObject Oui1 Crée un objet.
Gestion d'objet C_CopyObject Oui Crée une copie d'un objet.
Gestion d'objet C_DestroyObject Oui Détruit un objet.
Gestion d'objet C_GetObjectSize Oui Obtient la taille d'un objet en octets.
Gestion d'objet C_GetAttributeValue Oui Obtient une valeur d'attribut d'un objet.
Gestion d'objet C_SetAttributeValue Oui Modifie une valeur d'attribut d'un objet. Seuls les attributs booléens peuvent être modifiés.
Gestion d'objet C_FindObjectsInit Oui Initialise une opération de recherche d'objet.
Gestion d'objet C_FindObjects Oui Poursuit une opération de recherche d'objet.
Gestion d'objet C_FindObjectsFinal Oui Termine une opération de recherche d'objet.
Chiffrement C_EncryptInit Oui Initialise une opération de chiffrement.
Chiffrement C_Encrypt Oui Chiffre des données ne comportant qu'une seule partie.
Chiffrement C_EncryptUpdate Oui Poursuit une opération de chiffrement à plusieurs parties.
Chiffrement C_EncryptFinal Oui Termine une opération de chiffrement à plusieurs parties.
Déchiffrement C_DecryptInit Oui Initialise une opération de déchiffrement.
Déchiffrement C_Decrypt Oui Déchiffre des données chiffrées ne comportant qu'une seule partie.
Déchiffrement C_DecryptUpdate Oui Poursuit une opération de déchiffrement à plusieurs parties.
Déchiffrement C_DecryptFinal Oui Termine une opération de déchiffrement à plusieurs parties.
Assimilation des messages C_DigestInit Oui Initialise une opération d'assimilation de messages.
Assimilation des messages C_Digest Oui Assimile les données en une seule partie. La longueur des données d'entrée ne peut être égale à zéro et le pointeur qui pointe vers l'emplacement des données d'entrée ne peut être nul.
Assimilation des messages C_DigestUpdate Oui Poursuit une opération d'assimilation à plusieurs parties. La longueur des données d'entrée ne peut être égale à zéro et le pointeur qui pointe vers l'emplacement des données d'entrée ne peut être nul.
Assimilation des messages C_DigestKey Non Assimile une clé.
Assimilation des messages C_DigestFinal Oui Termine une opération d'assimilation à plusieurs parties.
Signature et MACing C_SignInit Oui Initialise une opération de signature.
Signature et MACing C_Sign Oui Signe des données ne comportant qu'une seule partie.
Signature et MACing C_SignUpdate Oui Poursuit une opération de signature à plusieurs parties.
Signature et MACing C_SignFinal Oui Termine une opération de signature à plusieurs parties.
Signature et MACing C_SignRecoverInit Non Initialise une opération de signature, dans laquelle les données sont récupérées depuis la signature.
Signature et MACing C_SignRecover Non Signe des données ne comportant qu'une seule partie, dans laquelle les données sont récupérées depuis la signature.
Vérification des signatures et des codes d'authentification de message C_VerifyInit Oui Initialise une opération de vérification.
Vérification des signatures et des codes d'authentification de message C_Verify Oui Vérifie une signature sur des données ne comportant qu'une seule partie.
Vérification des signatures et des codes d'authentification de message C_VerifyUpdate Oui Poursuit une opération de vérification à plusieurs parties.
Vérification des signatures et des codes d'authentification de message C_VerifyFinal Oui Termine une opération de vérification à plusieurs parties.
Vérification des signatures et des codes d'authentification de message C_VerifyRecoverInit Non Initialise une opération de vérification dans laquelle les données sont récupérées depuis la signature.
Vérification des signatures et des codes d'authentification de message C_VerifyRecover Non Vérifie une signature sur des données ne comportant qu'une seule partie, dans laquelle les données sont récupérées depuis la signature.
Fonctions cryptographiques à double usage C_DigestEncryptUpdate Oui Poursuit des opérations de chiffrement et d'assimilation à plusieurs parties.
Fonctions cryptographiques à double usage C_DecryptDigestUpdate Oui Poursuit des opérations de déchiffrement et d'assimilation à plusieurs parties.
Fonctions cryptographiques à double usage C_SignEncryptUpdate Oui Poursuit des opérations de chiffrement et de signature à plusieurs parties.
Fonctions cryptographiques à double usage C_DecryptVerifyUpdate Oui Poursuit des opérations de déchiffrement et de vérification à plusieurs parties.
Gestion des clés C_GenerateKey Oui Génère une clé secrète.
Gestion des clés C_GenerateKeyPair Oui Génère une paire de clés publiques ou privées.
Gestion des clés C_WrapKey Oui Encapsule (chiffre) une clé.
Gestion des clés C_UnwrapKey Oui Désencapsule (déchiffre) une clé.
Gestion des clés C_DeriveKey Oui Dérive une clé depuis une clé de base.
Génération de nombres aléatoires C_SeedRandom Non Ajoute un matériel initial au générateur de nombres aléatoires.
Génération de nombres aléatoires C_GenerateRandom Oui Génère des données aléatoires. La longueur des données aléatoires ne peut être égale à zéro et le pointeur qui pointe vers l'emplacement des données aléatoires ne peut être nul.
Gestion des fonctions parallèles C_GetFunctionStatus Non Fonction existante qui renvoie toujours CKR_FUNCTION_NOT_PARALLEL.
Gestion des fonctions parallèles C_CancelFunction Non Fonction existante qui renvoie toujours CKR_FUNCTION_NOT_PARALLEL.

1: L'implémentation actuelle de la fonction C_CreateObject prend en charge les objets de clé privée, les objets de clé privée, les objets de clé publique, les objets de données, les objets de certificat de clé publique X.509, les objets de certificat de clé publique WTLS et les objets de certificat d'attribut X.509.

Mécanismes pris en charge

Un mécanisme est qualifié de processus permettant d'implementer une opération de chiffrement. Il peut varier en fonction du niveau de microprogramme de la carte de chiffrement. Le tableau suivant montre les mécanismes qui sont pris en charge et comment ils se rapportent aux catégories communes de la fonction Cryptoki.

Tableau 2. Décrit les mécanismes PKCS #11 pris en charge
Groupe de fonctions Mécanismes pris en charge
Chiffrement et déchiffrement CKM_RSA_PKCS1, CKM_RSA_PKCS_OAEP1, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
Signature et vérification CKM_RSA_PKCS1, CKM_RSA_PKCS_PSS1, CKM_RSA_X9_311, CKM_SHA1_RSA_PKCS, CKM_SHA256_RSA_PKCS, CKM_SHA224_RSA_PKCS, CKM_SHA384_RSA_PKCS, CKM_SHA512_RSA_PKCS, CKM_SHA1_RSA_PKCS_PSS, CKM_SHA224_RSA_PKCS_PSS, CKM_SHA256_RSA_PKCS_PSS, CKM_SHA384_RSA_PKCS_PSS, CKM_SHA512_RSA_PKCS_PSS, CKM_SHA1_RSA_X9_31, CKM_DSA1, CKM_DSA_SHA1, CKM_ECDSA1, CKM_ECDSA_SHA1, CKM_ECDSA_SHA224, CKM_ECDSA_SHA256, CKM_ECDSA_SHA384, CKM_ECDSA_SHA512, CKM_SHA1_HMAC, CKM_SHA256_HMAC, CKM_SHA384_HMAC, CKM_SHA512_HMAC, CKM_SHA512_224_HMAC, CKM_SHA512_256_HMAC, CKM_IBM_ED25519_SHA512, CKM_IBM_ED448_SHA3, CKM_IBM_DILITHIUM2
Condensé. CKM_SHA_1, CKM_SHA224, CKM_SHA256, CKM_SHA384, CKM_SHA512, CKM_SHA512_224, CKM_SHA512_256
Générer une clé ou générer une paire de clés. CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_RSA_X9_31_KEY_PAIR_GEN, CKM_DSA_KEY_PAIR_GEN, CKM_DSA_PARAMETER_GEN, CKM_EC_KEY_PAIR_GEN (CKM_ECDSA_KEY_PAIR_GEN), CKM_DH_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_PARAMETER_GEN, CKM_GENERIC_SECRET_KEY_GEN, CKM_AES_KEY_GEN, CKM_DES2_KEY_GEN, CKM_DES3_KEY_GEN, CKM_IBM_DILITHIUM
Encapsuler et désencapsuler. CKM_RSA_PKCS, CKM_RSA_PKCS_OAEP, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
Dériver. CKM_ECDH1_DERIVE, CKM_DH_PKCS_DERIVE, CKM_DES3_ECB_ENCRYPT_DATA, CKM_SHA1_KEY_DERIVATION, CKM_SHA224_KEY_DERIVATION, CKM_SHA256_KEY_DERIVATION, CKM_SHA384_KEY_DERIVATION, CKM_SHA512_KEY_DERIVATION, CKM_IBM_BTC_DERIVE

1 : Ce mécanisme prend en charge uniquement les opérations à une seule partie qui ne sont pas en mesure d'utiliser les fonctions de mise à jour Cryptotoki, telles que C_EncryptUpdate, C_DecryptUpdateet C_DigestUpdate.

2 : Ce mécanisme n'est pas pris en charge par la carte de chiffrement IBM 4768 et n'est pas disponible pour les opérations C_SignUpdate et C_VerifyUpdate.

Attributs et types de clés pris en charge

Les attributs PKCS #11 définissent les caractéristiques d'objet qui configurent l'utilisation et l'accès d'un objet. Le tableau ci-après affiche les attributs pris en charge et leur relation avec les divers types de clé pris en charge.

Tableau 3. Attributs et types de clés pris en charge
Attribut Description Types de clé pris en charge
BASE CKA Paramètre de domaine DSA utilisé pour C_CreateObject. Base g. clés privées DSA, clés publiques DSA
CATÉGORIE_CERTIFICAT_CKA Utilisé pour indiquer si un certificat stocké est un certificat d'utilisateur pour lequel la clé privée correspondante est disponible sur le jeton ("utilisateur de jeton"), un certificat d'autorité de certification ("autorité de certification")ou un autre certificat d'entité finale ("autre entité"). La valeur par défaut est CK_CERTIFICATE_CATEGORY_UNSPECIFIED. Non applicable
TYPE_CERTIFICATION_CKA Doit être spécifié lorsque l'objet de certificat est créé avec C_CreateObject. Les types de certificat sont la clé publique X.509, le certificat de clé publique WTLS et le certificat d'attribut X.509. Non applicable
CKA_CHECK_VALUE Total de contrôle de la clé ou du certificat. Clés AES, clés DES
CKA_CLASS Classe d'objet (type) commune pour tous les objets. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
COEFFICIENT Utilisé pour C_CreatObject. Clés privées RSA
CKA_COPYABLE Si la valeur est CKA_TRUE, l'objet peut être copié à l'aide de C_CopyObject. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_DECRYPT CK_TRUE si la clé prend en charge le déchiffrement. Clés privées EC, clés privées RSA, clés privées DH, clés privées DSA, clés AES, clés DES, clés génériques
CKA_DERIVE CK_TRUE si la clé prend en charge la dérivation de clés (d'autres clés peuvent être dérivées de cette clé). La valeur par défaut est CK_FALSE. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_EC_PARAMS (CKA_ECDSA_PARAMS) Codage DER d'une valeur de paramètres ANSI X9.62. Clés privées EC, clés publiques EC
CKA_EC_POINT Codage DER d'une valeur Q ECPoint ANSI X9.62. Clés publiques EC
CKA_ENCRYPT CK_TRUE si la clé prend en charge le chiffrement. Clés publiques EC, clés publiques RSA, clés publiques DH, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_END_DATE Date de fin du certificat ou de la clé. La valeur par défaut est vide. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_EXTRACTABLE CK_TRUE si la clé peut être extraite et encapsulée. Clés privées EC, clés privées RSA, clés privées DH, clés privées DSA, clés AES, clés DES, clés génériques
CKA_EXPONENT_1 Utilisez cette option pour C_CreateObject. Exposant privé d module q-1. Clés privées RSA
CKA_EXPONENT_2 Utilisez cette option pour C_CreateObject. Coefficient CRT q-1 mod p. Clés privées RSA
CKA_HASH_DES_CLÉ_PUBLIC_ÉMETTEUR Hachage de la clé publique de l'émetteur pour un certificat. La valeur par défaut est vide. Non applicable
CKA_HASH_OF_SUT_CL_PUBLIC Hachage de la clé publique du sujet pour un certificat. La valeur par défaut est vide. Non applicable
CKA_IBM_PQC_PARAMS Paramètres de soutien pour les mécanismes de cryptographie post-quantique. Dans le cas du mécanisme de Dilithium CKM_IBM_DILITHIUM, il fournit un identificateur d'objet (OID) mobilisé qui représente la force de l'algorithme de Dilithium à utiliser. Actuellement, seule la force de Dilithium 4 round 2 est prise en charge. Clés de Dilithium
CKA_IBM_USE_AS_DATA Un objet est utilisé pour les opérations de hachage ou de dérivation de clé lorsque CK_TRUE Clés privées EC, clés publiques EC
CKA_ID Identifiant de la clé ou de la paire de clés publique ou privée. La valeur par défaut est vide. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_DONNER Codage DER du nom de l'émetteur du certificat. La valeur par défaut est vide. Non applicable
CKA_JAVA_MIDP_SECURITY_DOMAIN Domaine de sécurité MIDP Java pour un certificat. La valeur par défaut est CK_SECURITY_DOMAIN_UNSPECIFIED. Non applicable
CKA_TYPE_CLÉ Type de clé. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_LABEL Description de l'événement. La valeur par défaut est vide. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_LOCAL CK_TRUE uniquement si la clé a été générée localement (sur le jeton) avec un appel C_GenerateKey ou C_GenerateKeyPair ou créée avec un appel C_CopyObject comme une copie d'une clé ayant l'attribut CKA_LOCAL défini sur CK_TRUE. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_MODIFIABLE Défini sur CK_TRUE si l'objet peut être modifié. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_MODULUS Module n. Clés privées RSA
CKA_MODULUS_BITS Longueur en bits du module n. Clés publiques RSA
ALGORITHME_HACHAGE_NOM_CKA Définit le mécanisme utilisé pour calculer le hachage des clés publiques Subject et Issuer pour un certificat. La valeur par défaut est SHA-1. Non applicable
CKA_PRIME Paramètre de domaine DSA utilisé pour C_CreateObject. Premier p (512 à 2048 bits par pas de 64 bits). clés privées DSA, clés publiques DSA
CKA_PRIME_1 Utilisé pour C_CreateObject. Prime q. Clés privées RSA
CKA_PRIME_2 Utilisé pour C_CreateObject. Exposant privé d module p-1. Clés privées RSA
CKA_PRIVATE CK_TRUE si l'objet est un objet privé ; CK_FALSE si l'objet est un objet public. La valeur par défaut est spécifique au jeton et peut dépendre des valeurs d'autres attributs de l'objet. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_PRIVATE_EXPONENT Utilisé pour C_CreateObject. Prime p. Clés privées RSA
CKA_PUBLIC_EXPONENT Exposant public e. clés privées RSA, clés publiques RSA
INFO-KEY_CKA_PUBLIC_INFO Codage DER de SubjectPublicKeyInfo pour la clé publique. La valeur est dérivée des données de clé publique sous-jacentes et est vide par défaut. Clés publiques RSA, clés publiques EC, clés publiques Dilithium
CKA_SENSITIVE CK_TRUE si la clé est sensible. Clés privées EC, clés privées RSA, clés privées DH, clés privées DSA, clés AES, clés DES, clés génériques
NUMERO_SERI_CKA Codage DER du numéro de série du certificat. La valeur par défaut est vide. Non applicable
CKA_SIGN CK_TRUE si la clé prend en charge les signatures lorsque la signature est une annexe des données. Clés privées EC, clés privées RSA, clés privées DH, clés privées DSA, clés AES, clés DES, clés génériques
CKA_START_DATE Date de début du certificat ou de la clé. La valeur par défaut est vide. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_SUJET Codage DER du certificat ou du nom de sujet de clé. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA
CKA_SUBPRIME Paramètre de domaine DSA utilisé pour C_CreateObject. Subprime q (160 bits pour p < = 1024 bits, 224 bits ou 256 bits pour p > 1024 bits). clés privées DSA, clés publiques DSA
CKA_TOKEN CK_TRUE si l'objet est un objet de jeton ; CK_FALSE si l'objet est un objet de session. Clés privées EC, clés publiques EC, clés privées RSA, clés publiques RSA, clés privées DH, clés publiques DH, clés privées DSA, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_TRUSTED Le certificat ou la clé sont fiables pour l'application pour laquelle ils ont été créés. Clés publiques EC, clés publiques RSA, clés publiques DH, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_UNWRAP CK_TRUE si la clé prend en charge le désencapsulage (peut être utilisé pour désencapsuler d'autres clés). Clés privées EC, clés privées RSA, clés privées DH, clés privées DSA, clés AES, clés DES, clés génériques
URL_CKA URL où le certificat complet peut être obtenu. La valeur par défaut est vide. Non applicable
VALEUR CKA Octets de certificat codés ou octets de clé lors de l'utilisation de C_CreateObject. clés privées EC, clés publiques DSA, clés privées DSA, clés privées ED25519, clés privées ED448, clés AES, clés DES
CKA_VALUE_LEN Longueur en octets de la valeur de clé. Clés AES
CKA_VERIFY CK_TRUE si la clé prend en charge les vérifications pour lesquelles la signature constitue une annexe aux données Clés publiques EC, clés publiques RSA, clés publiques DH, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_WRAP CK_TRUE si la clé prend en charge l'encapsulage (peut être utilisé pour encapsuler d'autres clés). Clés publiques EC, clés publiques RSA, clés publiques DH, clés publiques DSA, clés AES, clés DES, clés génériques
CKA_WRAP_WITH_TRUSTED CK_TRUE si la clé peut être encapsulée uniquement avec une clé d'encapsulage dont la valeur pour CKA_TRUSTED est CK_TRUE. La valeur par défaut est CK_FALSE. Clés privées EC, clés privées RSA, clés privées DH, clés privées DSA, clés AES, clés DES, clés génériques
APPLICATION CKA Description de l'application qui gère l'objet (vide par défaut) Non applicable
ID_OBT_CKA Codage DER de l'identificateur d'objet indiquant le type d'objet de données (vide par défaut) Non applicable
CKA_PROPRIETAIRE Codage DER de la zone de sujet du certificat d'attribut. Distinct de l'attribut CKA_SUBJECT contenu dans les certificats CKC_X_509 car la syntaxe et le codage ASN.1 sont différents. Non applicable
CKA_AC_ISSUER Codage DER de la zone d'émetteur du certificat d'attribut. Il est distinct de l'attribut CKA_ISSUER contenu dans les certificats CKC_X_509 car la syntaxe et le codage ASN.1 sont différents. (vide par défaut) Non applicable
TYPES_ATTR Codage BER d'une séquence de valeurs d'identificateur d'objet correspondant aux types d'attribut contenus dans le certificat. Lorsqu'elle est présente, cette zone offre aux applications la possibilité de rechercher un certificat d'attribut particulier sans extraire et analyser le certificat lui-même. (vide par défaut) Non applicable

Courbes prises en charge

La bibliothèque PKCS #11 prend en charge des types de courbes limités pour certains mécanismes. Le tableau suivant répertorie les noms des courbes prises en charge pour les différents mécanismes. Le nombre dans le nom de courbe désigne le nombre de bits pris en charge.

Courbes prises en charge pour la génération de clés Elliptic Curve (EC)

Le mécanisme CKM_EC_KEY_PAIR_GEN est pris en charge lorsque vous appelez la fonction C_GenerateKeyPair pour générer des clés Elliptic Curve (EC). Les paramètres des noms de courbe doivent être spécifiés en tant qu'identificateurs d'objet (OID) à l'aide de CKA_EC_PARAMS. Vous pouvez obtenir l'ID objet en recherchant le nom de la courbe dans le référentiel d'ID objet.

Tableau 4. Types de courbe pris en charge pour la génération de clés EC
Mécanisme PKCS #11 Types de courbe pris en charge Noms de courbe pris en charge
CKM_EC_KEY_PAIR_GEN Courbes du National Institute of Standards and Technology(NIST)
  • P-192, ou secp192r1 et prime192v1.
  • P-224, ou secp224r1.
  • P-256, ou secp256r1 et prime256v1.
  • P-384, ou secp384r1.
  • P-521, ou secp521r.
CKM_EC_KEY_PAIR_GEN Courbes de pool de cerveaux standard(BP)
  • BP-160R, ou brainpoolP160r1.
  • BP-192R, ou brainpoolP192r1.
  • BP-224R ou brainpoolP224r1.
  • BP-256R, ou brainpoolP256r1.
  • BP-320R, ou brainpoolP320r1.
  • BP-384R, ou brainpoolP384r1.
  • BP-512R, ou brainpoolP512r1.
CKM_EC_KEY_PAIR_GEN Courbes Twisted Brain pool(BP)
  • BP-160T, ou brainpoolP160t1.
  • BP-192T, ou brainpoolP192t1.
  • BP-224T, ou brainpoolP224t1.
  • BP-256T, ou brainpoolP256t1.
  • BP-320T, ou brainpoolP320t1.
  • BP-384T, ou brainpoolP384t1.
  • BP-512T, ou brainpoolP512t1.
CKM_EC_KEY_PAIR_GEN Normes relatives aux courbes SEC(Standards for Efficient Cryptography)
  • secp256k1
CKM_EC_KEY_PAIR_GEN Courbes d'Edwards
  • Ed25519
CKM_EC_KEY_PAIR_GEN Courbes d'Edwards
  • Ed448

Courbes prises en charge pour le chiffrement des actifs numériques et la génération de signatures numériques

Les courbes suivantes sont prises en charge pour les mécanismes liés à l'actif numérique et à la signature numérique.

Tableau 5. Types de courbe pris en charge pour le chiffrement des actifs numériques et des signatures
Standard ou schéma Mécanisme PKCS #11 Types de courbe pris en charge Noms de courbe pris en charge
BIP32/BIP44 CKM_IBM_BTC_DÉRIVER Normes relatives aux courbes SEC(Standards for Efficient Cryptography)
  • secp256k1
SLIP10 CKM_IBM_BTC_DÉRIVER Courbes du National Institute of Standards and Technology(NIST)
  • P-256, également appelé secp256r1 et prime256v1
SLIP10 CKM_IBM_BTC_DÉRIVER Normes relatives aux courbes SEC(Standards for Efficient Cryptography)
  • secp256k1
SLIP10 CKM_IBM_BTC_DÉRIVER Courbes d'Edwards
  • Ed25519
EdDSA CKM_IBM_ED25519_SHA512 Courbes d'Edwards
  • Ed25519
Schnorr CKM_IBM_ECDSA_OTHER Normes relatives aux courbes SEC(Standards for Efficient Cryptography)
  • secp256k1
Schnorr CKM_IBM_ECDSA_OTHER Courbes du National Institute of Standards and Technology(NIST)
  • P-256, également appelé secp256r1 et prime256v1
Schnorr CKM_IBM_ECDSA_OTHER Courbes de pool de cerveaux standard(BP)
  • BP-256R, également appelé brainpoolP256r1
Schnorr CKM_IBM_ECDSA_OTHER Courbes Twisted Brain pool(BP)
  • BP-256T, également appelé brainpoolP256t1
Schnorr ECSG_IBM_ECSDSA_S256
  • secp256r1
  • secp256k1
  • BP-256R, également appelé brainpoolP256r1
  • BP-256T, également appelé brainpoolP256t1
Schnorr-Zilliqa ECSG_IBM_ECSDSA_COMPR_MULTI
  • secp256r1
  • secp256k1
  • BP-256R, également appelé brainpoolP256r1
  • BP-256T, également appelé brainpoolP256t1

Référence de l'API PKCS #11 standard

Pour consulter la documentation sur la norme PKCS #11, voir :