Gerar um par de chaves ECC do AWS CloudHSM usando KMU
Use o comando genECCKeyPair
na ferramenta key_mgmt_util do AWS CloudHSM para gerar um par de chaves Elliptic Curve CryptographygenECCKeyPair
, você deve especificar o identificador de curva elíptica e um rótulo para o par de chaves. Você também pode compartilhar a chave privada com outros usuários CU, criar chaves não extraíveis, chaves com controle de quorum e chaves que expiram quando a sessão termina. Quando o comando é bem-sucedido, ele retorna os identificadores de chave que o HSM atribui às chaves ECC públicas e privadas. Você pode usar os identificadores de chave para identificar as chaves para outros comandos.
Antes de executar um comando key_mgmt_util, você deve iniciar key_mgmt_util e fazer login no HSM como um usuário de criptografia (CU).
dica
Para encontrar os atributos de uma chave criada por você, como tipo, comprimento, rótulo e ID, use getAttribute. Para encontrar as chaves de um usuário específico, use getKeyInfo. Para encontrar chaves com base em seus valores de atributos, use FindKey.
Sintaxe
genECCKeyPair -h genECCKeyPair -i <EC curve id> -l <label> [-id <key ID>] [-min_srv <minimum number of servers>] [-m_value <0..8>] [-nex] [-sess] [-timeout <number of seconds> ] [-u <user-ids>] [-attest]
Exemplos
Os exemplos a seguir mostram como usar o genECCKeyPair para criar pares de chaves ECC nos seus HSMs.
exemplo : Criar e examinar um par de chaves ECC
Esse comando usa uma curva elíptica NID_secp384r1 e um rótulo ecc14
para criar um par de chaves ECC. A saída mostra que o identificador da chave privada é 262177
e o identificador da chave pública é 262179
. O rótulo aplica-se a chaves públicas e privadas.
Command:
genECCKeyPair -i 14 -l ecc14
Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 262179 private key handle: 262177 Cluster Error Status Node id 2 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Depois de gerar a chave, você pode examinar seus atributos. Use getAttribute para gravar todos os atributos (representados pela constante 512
) da nova chave privada ECC no arquivo attr_262177
.
Command:
getAttribute -o 262177 -a 512 -out attr_262177
got all attributes of size 529 attr cnt 19 Attributes dumped into attr_262177 Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS
Em seguida, use o comando cat
para visualizar o conteúdo do arquivo de atributo attr_262177
. A saída mostra que a chave é uma chave privada de curva elíptica que pode ser usada para assinar, mas não para criptografar, descriptografar, encapsular, desencapsular ou verificar. A chave é persistente e exportável.
$
cat attr_262177
OBJ_ATTR_CLASS 0x03 OBJ_ATTR_KEY_TYPE 0x03 OBJ_ATTR_TOKEN 0x01 OBJ_ATTR_PRIVATE 0x01 OBJ_ATTR_ENCRYPT 0x00 OBJ_ATTR_DECRYPT 0x00 OBJ_ATTR_WRAP 0x00 OBJ_ATTR_UNWRAP 0x00 OBJ_ATTR_SIGN 0x01 OBJ_ATTR_VERIFY 0x00 OBJ_ATTR_LOCAL 0x01 OBJ_ATTR_SENSITIVE 0x01 OBJ_ATTR_EXTRACTABLE 0x01 OBJ_ATTR_LABEL ecc2 OBJ_ATTR_ID OBJ_ATTR_VALUE_LEN 0x0000008a OBJ_ATTR_KCV 0xbbb32a OBJ_ATTR_MODULUS 044a0f9d01d10f7437d9fa20995f0cc742552e5ba16d3d7e9a65a33e20ad3e569e68eb62477a9960a87911e6121d112b698e469a0329a665eba74ee5ac55eae9f5 OBJ_ATTR_MODULUS_BITS 0x0000019f
exemplo Usar uma curva EEC inválida
Esse comando tenta criar um par de chaves ECC usando uma curva NID_X9_62_prime192v1. Como essa curva elíptica não é válida para HSMs no modo FIPS, o comando falha. A mensagem informa que um servidor no cluster não está disponível, mas isso geralmente não indica um problema com os HSMs no cluster.
Command:
genECCKeyPair -i 1 -l ecc1
Cfm3GenerateKeyPair returned: 0xb3 : HSM Error: This operation violates the current configured/FIPS policies Cluster Error Status Node id 0 and err state 0x30000085 : HSM CLUSTER ERROR: Server in cluster is unavailable
Parâmetros
- -h
-
Exibe a ajuda referente ao comando.
Obrigatório: Sim
- -i
-
Especifica o identificador da curva elíptica. Insira um identificador.
Valores válidos:
-
2: NID_X9_62_prime256v1
-
14: NID_secp384r1
-
16: NID_secp256k1
Obrigatório: Sim
-
- -l
-
Especifica o rótulo definido pelo usuário para o par de chaves. Digite uma string. O mesmo rótulo se aplica às duas chaves do par. O tamanho máximo para
label
é de 127 caracteres.É possível usar qualquer frase que ajude a identificar a chave. Como o rótulo não precisa ser exclusivo, é possível usá-lo para agrupar e categorizar chaves.
Obrigatório: Sim
- -id
-
Especifica um rótulo definido pelo usuário para o par de chaves. Digite uma string exclusiva no cluster. O padrão é uma string vazia. O ID que você especifica se aplica às duas chaves do par.
Padrão: sem valor de ID.
Obrigatório: Não
- -min_srv
-
Especifica o número mínimo de HSMs nos quais a chave importada é sincronizada antes da expiração do valor do parâmetro
-timeout
. Se a chave não for sincronizada com o número especificado de servidores na hora alocada, ela não será criada.O AWS CloudHSM sincroniza automaticamente todas as chaves com todos os HSMs no cluster. Para agilizar o processo, configure o valor de
min_srv
como menos que o número de HSMs no cluster e defina um valor de tempo limite baixo. No entanto, algumas solicitações talvez não gerem uma chave.Padrão: 1
Obrigatório: Não
- -m_value
-
Especifica o número de usuários que devem aprovar qualquer operação criptográfica que use a chave privada no par. Digite um valor de
0
até8
.Esse parâmetro estabelece um requisito de autenticação de quórum para a chave privada. O valor padrão,
0
, desativa o atributo de autenticação de quórum para a chave. Quando a autenticação de quórum está habilitada, o número especificado de usuários deve assinar um token para aprovar operações criptográficas que usam a chave privada e operações que compartilham ou descompartilham a chave privada.Para encontrar o
m_value
de uma chave, use getKeyInfo.Esse parâmetro é válido somente quando o parâmetro
-u
no comando compartilha a chave com usuários o suficiente para atender ao requisito dem_value
.Padrão: 0
Obrigatório: Não
- -nex
-
Torna a chave privada não extraível. A chave privada gerada não pode ser exportada do HSM. Chaves públicas sempre podem ser extraídas.
Padrão: as chaves pública e privada no par de chaves podem ser extraídas.
Obrigatório: Não
- -sess
-
Cria uma chave que existe apenas na sessão atual. A chave não pode ser recuperada após o término da sessão.
Use esse parâmetro quando precisar de uma chave apenas brevemente, como uma chave de empacotamento que criptografa e, em seguida, descriptografa rapidamente outra chave. Não use uma chave de sessão para criptografar dados que você talvez precise descriptografar após o término da sessão.
Para transformar uma chave de sessão em uma chave persistente (token), use setAttribute.
Padrão: a chave é persistente.
Obrigatório: Não
- -timeout
-
Especifica por quanto tempo (em segundos) o comando espera que uma chave seja sincronizada com o número de HSMs especificado pelo parâmetro
min_srv
.Este parâmetro é válido somente quando o parâmetro
min_srv
também é usado no comando.Padrão: sem limite de tempo. O comando espera indefinidamente e retorna somente quando a chave é sincronizada com o número mínimo de servidores.
Obrigatório: Não
- -u
-
Compartilha a chave privada no par com os usuários especificados. Esse parâmetro dá a outros usuários de criptografia (CUs) do HSM permissão para usar essa chave em operações de criptografia. As chaves públicas podem ser usadas por qualquer usuário sem compartilhamento.
Digite uma lista separada por vírgulas de IDs de usuário do HSM, como -
u 5,6
. Não inclua o ID do usuário atual do HSM. Para encontrar o ID do usuário de CUs no HSM, use listUsers. Em seguida, para compartilhar ou descompartilhar uma chave existente, use shareKey em cloudhsm_mgmt_util.Padrão: somente o usuário atual pode utilizar a chave importada.
Obrigatório: Não
- -attest
Executa uma verificação de integridade que verifica se o firmware no qual o cluster é executado não foi adulterado.
Padrão: sem verificação de atestado.
Obrigatório: Não