Encapsulamento de chaves AES no AWS CloudHSM
Este tópico descreve as opções para o encapsulamento de chaves AES no AWS CloudHSM. O encapsulamento de chaves AES usa uma chave AES (a chave de encapsulamento) para encapsular outra chave de qualquer tipo (a chave de destino). O encapsulamento de chaves é usado para proteger chaves armazenadas ou para transmitir chaves por redes não seguras.
Algoritmos compatíveis
O AWS CloudHSM oferece três opções para o encapsulamento de chaves AES, cada uma com base em como a chave de destino é preenchida antes de ser empacotada. O preenchimento é feito automaticamente, de acordo com o algoritmo usado, quando você chama o encapsulamento de chaves. A tabela a seguir lista os algoritmos compatíveis e os detalhes associados para ajudar você a escolher um mecanismo de encapsulamento apropriado para seu aplicativo.
Algoritmo de encapsulamento de chave AES | Especificação | Tipos de chave de destino compatíveis | Esquema de preenchimento | Disponibilidade do cliente do AWS CloudHSM |
---|---|---|---|---|
Encapsulamento de chaves AES com preenchimento de zeros | RFC 5649 |
Todos | Adiciona zeros após bits de chave, se necessário, para bloquear o alinhamento | SDK 3.1 e posterior |
Encapsulamento de chaves AES sem preenchimento | RFC 3394 |
Chaves com alinhamento bloqueado, como AES e 3DES | Nenhum | SDK 3.1 e posterior |
Encapsulamento de chaves AES com preenchimento PKCS #5 | Nenhum | Todos |
Pelo menos 8 bytes são adicionados de acordo com o esquema de preenchimento PKCS #5 para bloquear o alinhamento |
Todos |
Para saber como usar os algoritmos de encapsulamento de chaves AES da tabela anterior no aplicativo, consulte Usar o encapsulamento de chaves AES no AWS CloudHSM.
Noções básicas sobre vetores de inicialização no encapsulamento de chaves AES
Antes de encapsular, o CloudHSM anexa um vetor de inicialização (IV) à chave de destino para a integridade dos dados. Cada algoritmo de encapsulamento de chaves tem restrições específicas sobre o tipo de IV permitido. Para definir o IV no AWS CloudHSM, você tem duas opções:
-
Implícito: defina o IV como NULL e o CloudHSM usará o valor padrão desse algoritmo para operações de encapsulamento e desencapsulamento (recomendado)
-
Explícito: defina o IV transmitindo o valor padrão do IV para a função de encapsulamento de chaves
Importante
É necessário entender o IV que você está usando no aplicativo. Para desencapsular a chave, é necessário fornecer o mesmo IV usado para encapsular a chave. Se você usar um IV implícito para encapsular, use um IV implícito para desencapsular. Com um IV implícito, o CloudHSM usará o valor padrão para desencapsular.
A tabela a seguir descreve valores permitidos para IVs, que o algoritmo de desencapsulamento especifica.
Algoritmo de encapsulamento de chave AES | IV implícito | IV explícito |
---|---|---|
Encapsulamento de chaves AES com preenchimento de zeros | Obrigatório Valor padrão: (IV calculado internamente com base na especificação) |
Não permitido |
Encapsulamento de chaves AES sem preenchimento | Permitido (recomendado) Valor padrão: |
Permitido Apenas este valor aceito: |
Encapsulamento de chaves AES com preenchimento PKCS #5 | Permitido (recomendado) Valor padrão: |
Permitido Apenas este valor aceito: |
Usar o encapsulamento de chaves AES no AWS CloudHSM
Encapsule e desencapsule as chaves da seguinte maneira:
-
Na biblioteca PCKS #11, selecione o mecanismo apropriado para as funções
C_WrapKey
eC_UnWrapKey
, conforme mostrado na tabela a seguir. -
Na provedor JCE, selecione a combinação apropriada de algoritmo, modo e preenchimento, implementando os métodos de criptografia
Cipher.WRAP_MODE
eCipher.UNWRAP_MODE
, conforme mostrado na tabela a seguir. -
Na CLI do CloudHSM, escolha o algoritmo apropriado na lista de algoritmos compatíveis em O comando key wrap na CLI do CloudHSM e O comando key unwrap na CLI do CloudHSM, conforme mostrado na tabela a seguir.
-
Em key_mgmt_util (KMU), use os comandos Exportar uma chave do AWS CloudHSM usando o KMU e Desencapsular uma chave do AWS CloudHSM usando o KMU com valores m apropriados, conforme mostrado na tabela a seguir.
Algoritmo de encapsulamento de chave AES | Mecanismo PKCS #11 | Método Java | Subcomando da CLI do CloudHSM | Argumento do Key Management Utility (KMU) |
---|---|---|---|---|
Encapsulamento de chaves AES com preenchimento de zeros |
|
AESWrap/ECB/ZeroPadding |
aes-zero-pad | m = 6 |
Encapsulamento de chaves AES sem preenchimento |
|
AESWrap/ECB/NoPadding |
aes-no-pad | m = 5 |
Encapsulamento de chaves AES com preenchimento PKCS #5 |
|
AESWrap/ECB/PKCS5Padding |
aes-pkcs5-pad | m = 4 |