View a markdown version of this page

Problèmes connus liés à la bibliothèque PKCS #11 pour AWS CloudHSM - AWS CloudHSM
Problème : l'encapsulage de la clé AES dans la version 3.0.0 de la bibliothèque PKCS#11 ne valide pas les IV avant utilisationProblème : le SDK 2.0.4 et les versions antérieures de PKCS #11 utilisaient toujours l'IV par défaut 0xA6A6A6A6A6A6A6A6A6A6 pour l'encapsulage et le déballage des clés AESProblème : l'attribut CKA_DERIVE n'était pas pris en charge et n'a pas été géréProblème : l'attribut CKA_SENSITIVE n'était pas pris en charge et n'a pas été géréProblème : Le hachage et la signature en plusieurs parties ne sont pas pris en charge.Problème : C_ GenerateKeyPair ne gère pas CKA_MODUS_BITS ou CKA_PUBLIC_EXPONENT dans le modèle privé d'une manière conforme aux normesProblème : les buffers pour les opérations d'API C_Encrypt et C_Decrypt ne peuvent pas dépasser 16 Ko lors de l'utilisation du mécanisme CKM_AES_GCM Problème : la dérivation de la clé Elliptic-curve Diffie-Hellman (ECDH) est exécutée partiellement dans le HSMProblème : la vérification des signatures secp256k1 échoue sur les plates-formes EL6 telles que CentOS6 et RHEL 6Problème : une séquence incorrecte d'appels de fonction donne des résultats indéfinis au lieu d'échouerProblème : la session en lecture seule n'est pas prise en charge dans le SDK 5Problème : le fichier d'en-tête cryptoki.h est Windows-onlyProblème : C_ GetAttributeValue renvoie CKR_DEVICE_ERROR lorsqu'il est limitéProblème : la bibliothèque PKCS #11 ne réessaie pas les opérations de stockage de certificats limitées

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Problèmes connus liés à la bibliothèque PKCS #11 pour AWS CloudHSM

Les problèmes suivants ont un impact sur la bibliothèque PKCS #11 pour AWS CloudHSM.

Rubriques

Problème : l'encapsulage de la clé AES dans la version 3.0.0 de la bibliothèque PKCS#11 ne valide pas les IV avant utilisation

Si vous spécifiez un vecteur d’initialisation d'une longueur inférieure à 8 octets, celui-ci est complété par des octets imprévisibles avant utilisation.

Note

Cela a un impact sur C_WrapKey uniquement avec un mécanisme CKM_AES_KEY_WRAP.

  • Impact : Si vous spécifiez un vecteur d’initialisation d’une longueur inférieure à 8 octets dans la version 3.0.0 de la bibliothèque PKCS#11, vous risquez de ne pas pouvoir désencapsuler la clé.

  • Solutions de contournement :

    • Nous vous recommandons fortement de procéder à une mise à niveau vers la version 3.0.1 ou ultérieure de la bibliothèque PKCS#11, qui applique correctement la longueur des vecteurs d'initialisation pendant l'encapsulage des clés AES. Modifiez votre code d'encapsulage pour transmettre un vecteur d'initialisation NULL, ou spécifiez le vecteur d'initialisation par défaut de 0xA6A6A6A6A6A6A6A6. Pour plus d'informations, consultez la section IV personnalisés avec Non-Compliant longueur pour AES Key Wrap.

    • Si vous avez encapsulé des clés avec la version 3.0.0 de la bibliothèque PKCS #11 en utilisant un vecteur d'initialisation d'une longueur inférieure à 8 octets, contactez-nous pour obtenir de l'aide.

  • Statut de la résolution : ce problème a été résolu dans la version 3.0.1 de la bibliothèque PKCS #11. Pour encapsuler des clés à l'aide de l'encapsulage de clés AES, spécifiez un vecteur d'initialisation de valeur NULL ou d'une longueur égale à 8 octets.

Problème : le SDK 2.0.4 et les versions antérieures de PKCS #11 utilisaient toujours l'IV par défaut 0xA6A6A6A6A6A6A6A6A6A6 pour l'encapsulage et le déballage des clés AES

User-provided Les IV ont été ignorées en silence.

Note

Cela a un impact sur C_WrapKey uniquement avec un mécanisme CKM_AES_KEY_WRAP.

  • Impact :

    • Si vous avez utilisé le kit SDK PKCS #11 2.0.4 ou version antérieure et un vecteur d'initialisation fourni par l'utilisateur, vos clés sont encapsulées avec le vecteur d'initialisation par défaut de 0xA6A6A6A6A6A6A6A6.

    • Si vous avez utilisé le kit PKCS #11 3.0.0 ou version ultérieure et un vecteur d'initialisation fourni par l'utilisateur, vos clés sont encapsulées avec le vecteur d'initialisation fourni par l'utilisateur.

  • Solutions de contournement :

    • Pour désencapsuler des clés encapsulées avec le kit SDK PKCS #11 2.0.4 ou version antérieure, utilisez le vecteur d’initialisation par défaut de 0xA6A6A6A6A6A6A6A6.

    • Pour désencapsuler des clés encapsulées avec le kit SDK PKCS #11 3.0.0 ou version ultérieure, utilisez le vecteur d’initialisation fourni par l’utilisateur.

  • État de résolution : Nous vous recommandons fortement de modifier votre code d'encapsulage et de désencapsulage pour transmettre un vecteur d'initialisation NULL, ou de spécifier le vecteur d'initialisation par défaut de 0xA6A6A6A6A6A6A6A6.

Problème : l'attribut CKA_DERIVE n'était pas pris en charge et n'a pas été géré

  • Statut de résolution : nous avons implémenté des correctifs pour accepter CKA_DERIVE s'il a la valeur FALSE. CKA_DERIVE défini sur TRUE ne sera pas pris en charge tant que nous n'aurons pas ajouté la prise en charge de la fonction de dérivation de clés à AWS CloudHSM. Vous devez mettre à jour votre client et les kits SDK vers la version 1.1.1 ou ultérieur pour tirer parti du correctif.

Problème : l'attribut CKA_SENSITIVE n'était pas pris en charge et n'a pas été géré

  • État de résolution : nous avons implémenté les correctifs pour accepter et honorer correctement l'attribut CKA_SENSITIVE. Vous devez mettre à jour votre client et les kits SDK vers la version 1.1.1 ou ultérieur pour tirer parti du correctif.

Problème : Le hachage et la signature en plusieurs parties ne sont pas pris en charge.

  • Impact : C_DigestUpdate et C_DigestFinal ne sont pas implémentés. C_SignFinal n'est pas implémenté non plus et échoue avec l'erreur CKR_ARGUMENTS_BAD pour un tampon non-NULL.

  • Solution : hachez vos données dans votre application et utilisez-les AWS CloudHSM uniquement pour signer le hachage.

  • État de résolution : Nous corrigeons actuellement le client et les kits SDK afin qu'ils mettent en œuvre correctement le hachage en plusieurs parties. Les mises à jour seront annoncées sur le forum AWS CloudHSM et sur la page de l'historique des versions.

Problème : C_ GenerateKeyPair ne gère pas CKA_MODUS_BITS ou CKA_PUBLIC_EXPONENT dans le modèle privé d'une manière conforme aux normes

  • Impact : C_GenerateKeyPair doit renvoyer CKA_TEMPLATE_INCONSISTENT lorsque le modèle privé contient CKA_MODULUS_BITS ou CKA_PUBLIC_EXPONENT. Au lieu de cela, il génère une clé privée dont tous les champs d'utilisation sont définis sur FALSE. La clé ne peut pas être utilisée.

  • Solution : Nous recommandons que votre application vérifie les valeurs des champs d'utilisation en plus du code d'erreur.

  • État de résolution : Nous sommes en train de mettre en place des correctifs pour renvoyer le message d'erreur adéquat lorsqu'un modèle de clé privée incorrect est utilisé. La bibliothèque PKCS #11 utilisée sera annoncée sur la page d'historique des versions.

Problème : les buffers pour les opérations d'API C_Encrypt et C_Decrypt ne peuvent pas dépasser 16 Ko lors de l'utilisation du mécanisme CKM_AES_GCM

AWS CloudHSM ne prend pas en charge le AES-GCM chiffrement partitionné.

  • Impact : Vous ne pouvez pas utiliser le mécanisme CKM_AES_GCM pour chiffrer des données de plus de 16 Ko.

  • Solution : vous pouvez utiliser un autre mécanisme tel que CKM_AES_CBCCKM_AES_CBC_PAD, ou diviser vos données en morceaux et chiffrer chaque élément individuellement. AES_GCM Si vous utilisezAES_GCM, vous devez gérer la division de vos données et le cryptage ultérieur. AWS CloudHSM n'effectue pas le AES-GCM chiffrement partitionné pour vous. Notez que FIPS nécessite que le vecteur d'initialisation (IV) AES-GCM soit généré sur le HSM. Par conséquent, l'IV pour chaque élément de vos données AES-GCM cryptées sera différent.

  • État de résolution : Nous sommes en train de corriger le kit SDK afin qu'il échoue de façon explicite si le tampon de données est trop volumineux. Nous retournons CKR_MECHANISM_INVALID pour les opérations d'API C_EncryptUpdate et C_DecryptUpdate. Nous évaluons les alternatives possibles pour prendre en charge des mémoires tampons de plus grande taille sans devoir s'appuyer sur le chiffrement en plusieurs parties. Les mises à jour seront annoncées sur le AWS CloudHSM forum et sur la page d'historique des versions.

Problème : la dérivation de la clé Elliptic-curve Diffie-Hellman (ECDH) est exécutée partiellement dans le HSM

Votre clé privée EC reste dans le HSM à tout moment, mais le processus de dérivation de clés est effectué en plusieurs étapes. Par conséquent, les résultats intermédiaires de chaque étape sont disponibles sur le client.

  • Conséquence : dans le SDK client 3, la clé dérivée à l'aide du CKM_ECDH1_DERIVE mécanisme est d'abord disponible sur le client, puis importée dans le HSM. Un handle de clé est ensuite retourné à votre application.

  • Solution : si vous implémentez SSL/TLS Offload dans AWS CloudHSM, cette limitation ne pose peut-être pas de problème. Si votre application nécessite que votre clé reste dans une limite FIPS à tout moment, envisagez d'utiliser un autre protocole qui ne s'appuie pas sur la dérivation de clés ECDH.

  • État de la résolution : le SDK 5.16 prend désormais en charge l'ECDH avec une dérivation de clé qui est entièrement réalisée dans le HSM.

Problème : la vérification des signatures secp256k1 échoue sur les plates-formes EL6 telles que CentOS6 et RHEL 6

En effet, la bibliothèque PKCS #11 CloudHSM permet d'éviter un appel réseau lors de l'initialisation de l'opération de vérification en utilisant OpenSSL pour vérifier les données de courbe EC. Secp256k1 n'étant pas pris en charge par le package OpenSSL par défaut sur les plateformes EL6, l'initialisation échoue.

  • Impact : La vérification de signature Secp256k1 échoue sur les plateformes EL6. L’appel de vérification échoue avec une erreur CKR_HOST_MEMORY.

  • Solution de contournement : Nous vous conseillons d'utiliser Amazon Linux 1 ou une plateforme EL7 si votre application PKCS #11 a besoin de vérifier des signatures secp256k1. Vous pouvez également effectuer une mise à niveau vers une version du package OpenSSL qui prend en charge la courbe secp256k1.

  • État de résolution : Nous implémentons des correctifs pour revenir au HSM si la validation de courbe locale n’est pas disponible. La bibliothèque PKCS #11 mise à jour sera annoncée sur la page de l’ historique des versions.

Problème : une séquence incorrecte d'appels de fonction donne des résultats indéfinis au lieu d'échouer

  • Conséquence : si vous appelez une séquence de fonctions incorrecte, le résultat final est incorrect même si chaque appel de fonction renvoie un résultat positif. Par exemple, les données déchiffrées peuvent ne pas correspondre au texte brut d'origine ou les signatures peuvent ne pas être vérifiées. Ce problème concerne à la fois les opérations en une seule partie et en plusieurs parties.

    Les tableaux suivants présentent les séquences d'appels de fonction correctes pour les opérations PKCS #11.

    Séquences correctes pour les opérations sur une seule pièce :

    Opération Séquence correcte
    Encrypt C_EncryptInitC_Encrypt
    Decrypt C_DecryptInitC_Decrypt
    Sign (Signer) C_SignInitC_Sign
    Verify (Vérifier) C_VerifyInitC_Verify
    Trouver des objets C_FindObjectsInitC_FindObjectsC_FindObjectsFinal

    Séquences correctes pour les opérations en plusieurs parties :

    Opération Séquence correcte
    Encrypt C_EncryptInitC_EncryptUpdate (un ou plusieurs) → C_EncryptFinal
    Decrypt C_DecryptInitC_DecryptUpdate (un ou plusieurs) → C_DecryptFinal
    Sign (Signer) C_SignInitC_SignUpdate (un ou plusieurs) → C_SignFinal
    Vérification C_VerifyInitC_VerifyUpdate (un ou plusieurs) → C_VerifyFinal
  • Solution  : votre application doit, conformément à la spécification PKCS #11, utiliser la séquence correcte d'appels de fonction pour les opérations en une seule partie et en plusieurs parties, comme indiqué dans les tableaux ci-dessus. Dans ce cas, votre application ne doit pas s'appuyer sur la bibliothèque CloudHSM PKCS #11 pour renvoyer une erreur.

Problème : la session en lecture seule n'est pas prise en charge dans le SDK 5

  • Problème : le SDK 5 ne prend pas en charge l'ouverture de Read-Only sessions avecC_OpenSession.

  • Conséquence : si vous tentez d'appeler C_OpenSession sans fournir CKF_RW_SESSION, l'appel échouera avec le message d'erreur CKR_FUNCTION_FAILED.

  • Solution : Lorsque vous ouvrez une session, vous devez transmettre les indicateurs CKF_SERIAL_SESSION | CKF_RW_SESSION à l'appel de fonction C_OpenSession.

Problème : le fichier d'en-tête cryptoki.h est Windows-only

  • Problème : avec les versions 5.0.0 à 5.4.0 du SDK AWS CloudHSM client 5 sous Linux, le fichier d'en-tête /opt/cloudhsm/include/pkcs11/cryptoki.h est uniquement compatible avec les systèmes d'exploitation Windows.

  • Conséquence : vous pouvez rencontrer des problèmes lorsque vous tentez d'inclure ce fichier d'en-tête dans votre application sur les systèmes Linux-based d'exploitation.

  • État de la résolution : passez à la version 5.4.1 ou supérieure du SDK AWS CloudHSM client 5, qui inclut une Linux-compatible version de ce fichier d'en-tête.

Problème : C_ GetAttributeValue renvoie CKR_DEVICE_ERROR lorsqu'il est limité

Lorsqu'un C_GetAttributeValue appel est limité, il est renvoyé. CKR_DEVICE_ERROR Les autres opérations limitées reprennent. CKR_FUNCTION_FAILED

  • Conséquence : si votre application ne fait que réessayerCKR_FUNCTION_FAILED, elle ne réessaie pas ces requêtes limitées.

  • Solution : réessayez les opérations limitées avec un retard exponentiel à la fois sur et. CKR_DEVICE_ERROR CKR_FUNCTION_FAILED Si la limitation persiste, ajoutez d'autres HSM à votre cluster pour augmenter le taux total de lecture et d'écriture, ou réduisez votre taux de demandes. Pour de plus amples informations, veuillez consulter Limitation du HSM.

  • État de la résolution : ce problème a été résolu dans le SDK client 5.18.0. C_GetAttributeValuerenvoie désormais CKR_FUNCTION_FAILED pour les lectures limitées du magasin de certificats et des attributs clés. Passez à la version 5.18.0 ou ultérieure pour bénéficier du correctif.

Problème : la bibliothèque PKCS #11 ne réessaie pas les opérations de stockage de certificats limitées

Lorsque vous dépassez les limites de débit pour les opérations de stockage de certificats, la bibliothèque PKCS #11 ne réessaie pas automatiquement ces opérations limitées.

  • Conséquence : une opération de stockage de certificats limitée renvoie une erreur à votre application au lieu d'être réessayée automatiquement.

  • Solution : réessayez les opérations de stockage de certificats limitées dans votre application en procédant à un arrêt exponentiel. Si la limitation persiste, ajoutez d'autres HSM à votre cluster pour augmenter le taux total de lecture et d'écriture, ou réduisez votre taux de demandes. Pour de plus amples informations, veuillez consulter Limitation du HSM.

  • État de la résolution : ce problème a été résolu dans le SDK client 5.18.0. La bibliothèque PKCS #11 réessaie désormais automatiquement les opérations de stockage de certificats limitées. Passez à la version 5.18.0 ou ultérieure pour bénéficier du correctif.