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.