Compatibilidad de atributos de clave de Java con Client SDK 5 de AWS CloudHSM - AWS CloudHSM

Compatibilidad de atributos de clave de Java con Client SDK 5 de AWS CloudHSM

En este tema, se proporciona información sobre los atributos de clave de Java compatibles con Client SDK 5 del AWS CloudHSM. Este tema describe cómo puede utilizar una extensión propia para el proveedor JCE para establecer atributos de clave. Utilice esta extensión para establecer los atributos de clave admitidos y sus valores durante estas operaciones:

  • Generación de claves

  • Importación de claves

Para ver ejemplos de cómo utilizar los atributos de clave, consulte Ejemplos de código de la biblioteca de software del AWS CloudHSM de Java para Client SDK 5.

Descripción de los atributos

Los atributos de clave se utilizan para especificar qué acciones se permiten en objetos relacionados con las claves, como claves públicas, privadas o secretas. Los atributos y valores de clave se definen durante las operaciones de creación de objetos de clave.

Sin embargo, Java Cryptography Extension (JCE) no especifica cómo deben establecerse los valores de los atributos de clave, por lo que, de forma predeterminada, se permiten la mayoría de las acciones. Por el contrario, el estándar PKCS #11 define un completo conjunto de atributos con valores predeterminados más restrictivos. A partir de la versión 3.1 del proveedor JCE, AWS CloudHSM cuenta con una extensión propia que permite establecer valores más restrictivos para los atributos que se usan habitualmente.

Atributos admitidos

Puede establecer valores para los atributos que aparecen en la tabla siguiente. Es recomendable que solamente establezca valores para los atributos que desee hacer más restrictivos. Si no se especifica ningún valor, AWS CloudHSM utilizará el valor predeterminado que se indica en la tabla siguiente. Las celdas vacías de la columna «Valor predeterminado» indican que no hay ningún valor predeterminado específico asignado al atributo.

Atributo Valor predeterminado Notas
Clave simétrica Clave pública del par de claves Clave privada del par de claves
DECRYPT TRUE TRUE True indica que la clave se puede utilizar para descifrar cualquier búfer. Por lo general, esto se establece como FALSE para una clave cuya propiedad WRAP está configurada como true.
DERIVE Permite utilizar una clave para derivar otras claves.
ENCRYPT TRUE TRUE True indica que la clave se puede utilizar para cifrar cualquier búfer.
EXTRACTABLE TRUE TRUE True indica que esta clave se puede exportar fuera del HSM.
ID Un valor definido por el usuario que se utiliza para identificar la clave.
KEY_TYPE Se utiliza para identificar el tipo de clave (AES, DeSede, secreto genérico, EC o RSA).
LABEL Una cadena definida por el usuario que le permite identificar cómodamente las claves de su HSM. Para seguir las mejores prácticas, utilice una etiqueta única para cada clave para que sea más fácil encontrarla más adelante.
LOCAL Indica una clave generada por el HSM.
OBJECT_CLASS Se utiliza para identificar la clase de objeto de una clave (SecretKey, PublicKey o PrivateKey).
PRIVATE TRUE TRUE TRUE True indica que es posible que los usuarios no tengan acceso a la clave hasta que se autentiquen. Es decir, los usuarios no pueden acceder a ninguna clave de AWS CloudHSM hasta que se autentican, incluso aunque este atributo esté establecido en FALSE.
SIGN TRUE TRUE True indica que la clave se puede utilizar para firmar un resumen del mensaje. Normalmente, se utiliza el valor FALSE con las claves públicas y privadas que se han archivado.
SIZE Atributo que define el tamaño de una clave. Para obtener más información sobre los tamaños de clave compatibles, consulte Mecanismos compatibles con SDK 5 de cliente.
TOKEN FALSE FALSE FALSE

Clave permanente que se replica en todos los HSM del clúster y se incluye en las copias de seguridad. TOKEN = FALSE implica el uso de una clave efímera, que se borra automáticamente cuando se interrumpe la conexión con ese HSM o se cierra la sesión.

UNWRAP TRUE TRUE True indica que la clave se puede utilizar para desencapsular (importar) otra clave.
VERIFY TRUE TRUE True indica que la clave se puede utilizar para verificar una firma. Normalmente, se utiliza el valor FALSE con las claves privadas.
WRAP TRUE TRUE True indica que la clave se puede utilizar para encapsular otra clave. Por lo general, se utilizará el valor FALSE con las claves privadas.
WRAP_WITH_TRUSTED FALSE FALSE Si su valor es verdadero, indica que una clave solo se puede encapsular y desencapsular con claves que tengan el atributo TRUSTED establecido en true. Una vez que una clave se establece como WRAP_WITH_TRUSTED, ese atributo es de solo lectura y no se puede establecer como false. Para obtener más información sobre el encapsulamiento de claves de confianza, consulte Uso de claves de confianza para controlar el desencapsulamiento de claves.
nota

La compatibilidad con los atributos de la biblioteca PKCS #11 es más amplia. Para obtener más información, consulte Atributos de PKCS #11 admitidos.

Configuración de atributos para claves

KeyAttributesMap es un objeto similar a Java Map, que puede usar para establecer valores de atributo en los objetos de clave. Los métodos de la función KeyAttributesMap son iguales que los métodos que se utilizan para manipular mapas de Java.

Si desea establecer valores personalizados en los atributos, tiene dos opciones:

  • Utilizar los métodos que se indican en la tabla siguiente

  • Utilizar los modelos de Builder que se ilustran más adelante en este documento

Los objetos de mapa de atributos admiten los siguientes métodos para establecer atributos:

Operación Valor de retorno Método de KeyAttributesMap
Obtener el valor de un atributo de clave para una clave existente Objeto (que contiene el valor) o null

get(keyAttribute)

Rellenar el valor de un atributo de clave Valor anterior asociado con el atributo de clave o null si no había ninguna asignación de un atributo de clave

put(keyAttribute, valor)

Rellenar valores en varios atributos de clave N/A

putAll(keyAttributesMap)

Eliminar un par clave-valor del mapa de atributos

Valor anterior asociado con el atributo de clave o null si no había ninguna asignación de un atributo de clave

remove(keyAttribute)

nota

Los atributos que no se especifican explícitamente se establecen en los valores predeterminados que se indican en la tabla anterior de Atributos admitidos.

Configuración de atributos para un par de claves

Utilice la clase KeyPairAttributesMap de Java para administrar los atributos de clave de un par de claves. KeyPairAttributesMap encapsula dos objetos KeyAttributesMap: uno para una clave pública y otro para una clave privada.

Para establecer por separado atributos específicos en la clave pública y en la clave privada, puede utilizar el método put() en el objeto de mapa KeyAttributes que corresponda a esa clave. Utilice el método getPublic() para recuperar el mapa de atributos de la clave pública y utilice getPrivate() para recuperar el mapa de atributos de la clave privada. Puede rellenar el valor de varios atributos de clave a la vez tanto de pares de claves públicas como de pares de claves privadas utilizando putAll() con un mapa de atributos de pares de claves como argumento.