Mecanismos compatibles con Client SDK 3 de AWS CloudHSM - AWS CloudHSM

Mecanismos compatibles con Client SDK 3 de AWS CloudHSM

La biblioteca PKCS #11 admite los siguientes algoritmos para Client SDK 3 de AWS CloudHSM:

  • Cifrado y descifrado: AES-CBC, AES-CTR, AES-ECB, AES-GCM, DES3-CBC, DES3-ECB, RSA-OAEP y RSA-PKCS

  • Firma y verificación: RSA, HMAC y ECDSA; con y sin hash

  • Hash/digest: SHA1, SHA224, SHA256, SHA384 y SHA512

  • Encapsulación de claves: encapsulación de claves AES,4 AES-GCM, RSA-AES y RSA-OAEP

  • Derivación de claves: ECDH,5 SP800-108 CTR KDF

Tabla de mecanismos y funciones de la biblioteca PKCS #11

La biblioteca PKCS #11 es compatible con la versión 2.40 de la especificación PKCS #11. Para invocar una característica criptográfica con PKCS #11, llame a una función con un mecanismo determinado. En la siguiente tabla, se resumen las combinaciones de funciones y mecanismos admitidos por AWS CloudHSM.

Interpretación de la tabla de mecanismos y funciones compatibles con PKCS #11

La marca ✔ indica que AWS CloudHSM es compatible con el mecanismo para esa función. No se admiten todas las funciones posibles que se muestran en la especificación de PKCS #11. La marca ✖ indica que AWS CloudHSM todavía no es compatible con el mecanismo para esa función, aunque el estándar de PKCS #11 lo admita. Las celdas vacías indican que el estándar de PKCS #11 no admite el mecanismo para esa función.

Mecanismos y funciones compatibles con la biblioteca PKCS #11

Mecanismo

Funciones

 

Generar claves o pares de claves

Firmar y verificar

SR y VR

Resumir

Cifrar o descifrar

Derivar clave

Encapsular y desencapsular

CKM_RSA_PKCS_KEY_PAIR_GEN

 

 

 

 

 

 

CKM_RSA_X9_31_KEY_PAIR_GEN

2

 

 

 

 

 

 

CKM_RSA_X_509

 

 

 

 

 

CKM_RSA_PKCSconsulte la nota 8

  1   1

 

1

CKM_RSA_PKCS_OAEP

 

 

 

 

1

 

6

CKM_SHA1_RSA_PKCS

 

3.2

 

 

 

 

 

CKM_SHA224_RSA_PKCS

 

3.2

 

 

 

 

 

CKM_SHA256_RSA_PKCS

 

3.2

 

 

 

 

 

CKM_SHA384_RSA_PKCS

 

2,3.2

 

 

 

 

 

CKM_SHA512_RSA_PKCS

 

3.2

 

 

 

 

 

CKM_RSA_PKCS_PSS

 

1

 

 

 

 

 

CKM_SHA1_RSA_PKCS_PSS

 

3.2

 

 

 

 

 

CKM_SHA224_RSA_PKCS_PSS

 

3.2

 

 

 

 

 

CKM_SHA256_RSA_PKCS_PSS

 

3.2

 

 

 

 

 

CKM_SHA384_RSA_PKCS_PSS

 

2,3.2

 

 

 

 

 

CKM_SHA512_RSA_PKCS_PSS

 

3.2

 

 

 

 

 

CKM_EC_KEY_PAIR_GEN

 

 

 

 

 

 

CKM_ECDSA

 

1

 

 

 

 

 

CKM_ECDSA_SHA1

 

3.2

 

 

 

 

 

CKM_ECDSA_SHA224

 

3.2

 

 

 

 

 

CKM_ECDSA_SHA256

 

3.2

 

 

 

 

 

CKM_ECDSA_SHA384

 

3.2

 

 

 

 

 

CKM_ECDSA_SHA512

 

3.2

 

 

 

 

 

CKM_ECDH1_DERIVE

 

 

 

 

 

5

 

CKM_SP800_108_COUNTER_KDF

 

 

 

 

 

 

CKM_GENERIC_SECRET_KEY_GEN

 

 

 

 

 

 

CKM_AES_KEY_GEN

 

 

 

 

 

 

CKM_AES_ECB

 

 

 

 

 

CKM_AES_CTR

 

 

 

 

 

CKM_AES_CBC

 

 

 

 

3.3

 

CKM_AES_CBC_PAD

 

 

 

 

 

CKM_DES3_KEY_GENconsulte la nota 8

 

 

 

 

 

 

CKM_DES3_CBCconsulte la nota 8

 

 

 

 

3.3

 

CKM_DES3_CBC_PADconsulte la nota 8

 

 

 

 

 

CKM_DES3_ECBconsulte la nota 8

 

 

 

 

 

CKM_AES_GCM

 

 

 

 

3.3, 4

 

7.1

CKM_CLOUDHSM_AES_GCM

 

 

 

 

7.1

 

7.1

CKM_SHA_1

 

 

 

3.1

 

 

 

CKM_SHA_1_HMAC

 

3.3

 

 

 

 

 

CKM_SHA224

 

 

 

3.1

 

 

 

CKM_SHA224_HMAC

 

3.3

 

 

 

 

 

CKM_SHA256

 

 

 

3.1

 

 

 

CKM_SHA256_HMAC

 

3.3

 

 

 

 

 

CKM_SHA384

 

 

 

3.1

 

 

 

CKM_SHA384_HMAC

 

3.3

 

 

 

 

 

CKM_SHA512

 

 

 

3.1

 

 

 

CKM_SHA512_HMAC

 

3.3

 

 

 

 

 

CKM_RSA_AES_KEY_WRAP

 

 

 

 

 

 

CKM_AES_KEY_WRAP

 

 

 

 

 

 

CKM_AES_KEY_WRAP_PAD

 

 

 

 

 

 

CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD

 

 

 

 

 

 

7.1

CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD

 

 

 

 

 

 

7.1

CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD

 

 

 

 

 

 

7.1

Notas del mecanismo

  • [1] Únicamente para operaciones de una sola parte.

  • [2] Este mecanismo es funcionalmente idéntico al mecanismo CKM_RSA_PKCS_KEY_PAIR_GEN, pero ofrece más garantías en la generación de p y q.

  • [3.1] AWS CloudHSM aborda el hashing de distinta manera según el SDK de cliente. En el caso de SDK 3 de cliente, el hashing depende del tamaño de los datos y de si se utilizan operaciones de una o varias partes.

    Operaciones de una sola parte en SDK 3 de cliente

    En la tabla 3.1 se muestra el tamaño máximo del conjunto de datos para cada mecanismo de SDK 3 de cliente. El hash completo se calcula dentro del HSM. No admite tamaños de datos superiores a 16 KB.

    Tabla 3.1, tamaño máximo del conjunto de datos para operaciones de una sola parte
    Mecanismo Tamaño máximo de datos
    CKM_SHA_1 16296
    CKM_SHA224 16264
    CKM_SHA256 16296
    CKM_SHA384 16232
    CKM_SHA512 16232

    Operaciones de varias partes en SDK 3 de cliente

    Admite tamaños de datos superiores a 16 KB, pero el tamaño de los datos determina el lugar del hashing. Los búferes de datos de menos de 16 KB se codifican con un hash dentro del HSM. Los búferes de entre 16 KB y el tamaño máximo de datos de su sistema se codifican localmente en el software. Recuerde: Las funciones de hash no requieren de secretos criptográficos, por lo que puede calcularlas de forma segura fuera del HSM.

  • [3.2] AWS CloudHSM aborda el hashing de distinta manera según el SDK de cliente. En el caso de SDK 3 de cliente, el hashing depende del tamaño de los datos y de si se utilizan operaciones de una o varias partes.

    Operaciones de una sola parte en SDK 3 de cliente

    En la tabla 3.2 se muestra el tamaño máximo del conjunto de datos para cada mecanismo de SDK 3 de cliente. No admite tamaños de datos superiores a 16 KB.

    Tabla 3.2, tamaño máximo del conjunto de datos para operaciones de una sola parte
    Mecanismo Tamaño máximo de datos
    CKM_SHA1_RSA_PKCS 16296
    CKM_SHA224_RSA_PKCS 16264
    CKM_SHA256_RSA_PKCS 16296
    CKM_SHA384_RSA_PKCS 16232
    CKM_SHA512_RSA_PKCS 16232
    CKM_SHA1_RSA_PKCS_PSS 16296
    CKM_SHA224_RSA_PKCS_PSS 16264
    CKM_SHA256_RSA_PKCS_PSS 16296
    CKM_SHA384_RSA_PKCS_PSS 16232
    CKM_SHA512_RSA_PKCS_PSS 16232
    CKM_ECDSA_SHA1 16296
    CKM_ECDSA_SHA224 16264
    CKM_ECDSA_SHA256 16296
    CKM_ECDSA_SHA384 16232
    CKM_ECDSA_SHA512 16232

    Operaciones de varias partes en SDK 3 de cliente

    Admite tamaños de datos superiores a 16 KB, pero el tamaño de los datos determina el lugar del hashing. Los búferes de datos de menos de 16 KB se codifican con un hash dentro del HSM. Los búferes de entre 16 KB y el tamaño máximo de datos de su sistema se codifican localmente en el software. Recuerde: Las funciones de hash no requieren de secretos criptográficos, por lo que puede calcularlas de forma segura fuera del HSM.

  • [3.3] Cuando se opera con datos mediante cualquiera de los mecanismos siguientes, si el búfer de datos supera el tamaño máximo de datos, la operación produce un error. Para estos mecanismos, todo el procesamiento de los datos debe realizarse dentro del HSM. En la tabla siguiente, se muestra el tamaño máximo de datos establecido para cada mecanismo:

    Tabla 3.3, tamaño máximo del conjunto de datos
    Mecanismo Tamaño máximo de datos
    CKM_SHA_1_HMAC 16288
    CKM_SHA224_HMAC 16256
    CKM_SHA256_HMAC 16288
    CKM_SHA384_HMAC 16224
    CKM_SHA512_HMAC 16224
    CKM_AES_CBC 16272
    CKM_AES_GCM 16224
    CKM_CLOUDHSM_AES_GCM 16224
    CKM_DES3_CBC 16280
  • [4] Al realizar el cifrado AES-GCM, el HSM no acepta los datos del vector de inicialización (IV) de la aplicación. Debe utilizar un vector de inicialización generado. El IV de 12 bytes proporcionado por el HSM se escribe en la referencia de memoria a la que apunta el elemento pIV de la estructura de parámetros CK_GCM_PARAMS especificada por el usuario. Para asegurarse de no generar confusión en el usuario, el SDK de PKCS#11 versión 1.1.1 y posteriores obliga a que el elemento pIV apunte a un búfer puesto a cero cuando se inicializa el cifrado AES-GCM.

  • [5] Solo SDK 3 de cliente. Este mecanismo se implementa para admitir casos de descarga de SSL/TLS y solo se ejecuta parcialmente en el HSM. Antes de usar este mecanismo, consulte «Issue: ECDH key derivation is executed only partially within the HSM» en Problemas conocidos de la biblioteca PKCS #11 en AWS CloudHSM.CKM_ECDH1_DERIVE no admite la curva secp521r1 (P-521).

  • [6] Los siguientes CK_MECHANISM_TYPE y CK_RSA_PKCS_MGF_TYPE se admiten como CK_RSA_PKCS_OAEP_PARAMS para CKM_RSA_PKCS_OAEP:

    • CKM_SHA_1 con CKG_MGF1_SHA1

    • CKM_SHA224 con CKG_MGF1_SHA224

    • CKM_SHA256 con CKG_MGF1_SHA256

    • CKM_SHA384 con CKM_MGF1_SHA384

    • CKM_SHA512 con CKM_MGF1_SHA512

  • [7.1] Mecanismo definido por el proveedor. Para poder utilizar los mecanismos definidos por el proveedor de CloudHSM, las aplicaciones PKCS#11 deben incluir /opt/cloudhsm/include/pkcs11t.h durante la compilación.

    CKM_CLOUDHSM_AES_GCM: este mecanismo exclusivo es una alternativa programáticamente segura del estándar CKM_AES_GCM. Antepone el IV generado por el HSM al texto cifrado en lugar de volver a escribirlo en la estructura CK_GCM_PARAMS que se proporciona durante la inicialización del cifrado. Puede utilizar este mecanismo con las funciones C_Encrypt, C_WrapKey, C_Decrypt y C_UnwrapKey. Cuando se utiliza este mecanismo, la variable pIV de la estructura CK_GCM_PARAMS debe establecerse en NULL. Cuando se utiliza este mecanismo con C_Decrypt y C_UnwrapKey, se espera que el IV se anteponga al texto cifrado que se está desencapsulando.

    CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD: encapsulamiento de claves AES con relleno PKCS #5

    CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD: encapsulamiento de claves AES con relleno de ceros

    Para obtener más opciones de encapsulamiento de claves AES, consulte Encapsulamiento de claves con AES.

  • [8] De acuerdo con las directrices del NIST, esto no se permite en los clústeres en modo FIPS después de 2023. En el caso de los clústeres en modo no FIPS, seguirá siendo posible después de 2023. Para obtener más información, consulte Cumplimiento de la normativa FIPS 140: anulación de mecanismo 2024.