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/lib64
ou /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.
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.
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_DecryptUpdate
et 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.
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.
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) |
|
CKM_EC_KEY_PAIR_GEN | Courbes de pool de cerveaux standard(BP) |
|
CKM_EC_KEY_PAIR_GEN | Courbes Twisted Brain pool(BP) |
|
CKM_EC_KEY_PAIR_GEN | Normes relatives aux courbes SEC(Standards for Efficient Cryptography) |
|
CKM_EC_KEY_PAIR_GEN | Courbes d'Edwards |
|
CKM_EC_KEY_PAIR_GEN | Courbes d'Edwards |
|
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.
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) |
|
SLIP10 | CKM_IBM_BTC_DÉRIVER | Courbes du National Institute of Standards and Technology(NIST) |
|
SLIP10 | CKM_IBM_BTC_DÉRIVER | Normes relatives aux courbes SEC(Standards for Efficient Cryptography) |
|
SLIP10 | CKM_IBM_BTC_DÉRIVER | Courbes d'Edwards |
|
EdDSA | CKM_IBM_ED25519_SHA512 | Courbes d'Edwards |
|
Schnorr | CKM_IBM_ECDSA_OTHER | Normes relatives aux courbes SEC(Standards for Efficient Cryptography) |
|
Schnorr | CKM_IBM_ECDSA_OTHER | Courbes du National Institute of Standards and Technology(NIST) |
|
Schnorr | CKM_IBM_ECDSA_OTHER | Courbes de pool de cerveaux standard(BP) |
|
Schnorr | CKM_IBM_ECDSA_OTHER | Courbes Twisted Brain pool(BP) |
|
Schnorr | ECSG_IBM_ECSDSA_S256 |
|
|
Schnorr-Zilliqa | ECSG_IBM_ECSDSA_COMPR_MULTI |
|
Référence de l'API PKCS #11 standard
Pour consulter la documentation sur la norme PKCS #11, voir :