Gerar um par de chaves DSA do AWS CloudHSM usando KMU
Use o comando genDSAKeyPair na ferramenta key_mgmt_util do AWS CloudHSM para gerar um par de chaves Digital Signing Algorithm
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
genDSAKeyPair -h genDSAKeyPair -m
<modulus length>
-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
Esses exemplos mostram como usar genDSAKeyPair para criar um par de chaves DSA.
exemplo : Criar um par de chaves DSA
Esse comando cria um par de chaves DSA com um rótulo DSA
. A saída mostra que o identificador da chave pública é 19
e o identificador da chave privada é 21
.
Command:
genDSAKeyPair -m 2048 -l DSA
Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 19 private key handle: 21 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
exemplo : Criar um par de chaves DSA somente de sessão
Este comando cria um par de chaves DSA que é válido apenas na sessão atual. O comando atribui um ID exclusiva de DSA_temp_pair
, além do rótulo (não exclusivo) requerido. Você pode querer criar um par de chaves como esse para assinar e verificar um token somente de sessão. A saída mostra que o identificador da chave pública é 12
e o identificador da chave privada é 14
.
Command:
genDSAKeyPair -m 2048 -l DSA-temp -id DSA_temp_pair -sess
Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 12 private key handle: 14 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Para confirmar que o par de chaves existe apenas na sessão, use o parâmetro -sess
de findKey com o valor de 1
(true).
Command:
findKey -sess 1
Total number of keys present 2 number of keys matched from start index 0::1 12, 14 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS
exemplo : Criar um par de chaves DSA compartilhadas e não extraíveis
Esse comando cria um par de chaves DSA. A chave privada é compartilhada com outros três usuários e não pode ser exportada do HSM. Chaves públicas podem ser usadas por qualquer usuário e sempre podem ser extraídas.
Command:
genDSAKeyPair -m 2048 -l DSA -id DSA_shared_pair -nex -u 3,5,6
Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 11 private key handle: 19 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
exemplo : Criar um par de chaves com controle de quorum
Esse comando cria um par de chaves DSA com o rótulo DSA-mV2
. O comando usa o parâmetro -u
para compartilhar a chave privada com os usuários 4 e 6. Ele usa o parâmetro -m_value
para exigir um quorum de pelo menos duas aprovações para quaisquer operações criptográficas que usam a chave privada. O comando também usa o parâmetro -attest
para verificar a integridade do firmware no qual o par de chaves é gerado.
A saída mostra que o comando gera uma chave pública com o identificador de chave 12
e uma chave privada com o identificador de chave 17
e que a verificação de atestado no firmware do cluster foi aprovada.
Command:
genDSAKeyPair -m 2048 -l DSA-mV2 -m_value 2 -u 4,6 -attest
Cfm3GenerateKeyPair: returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 12 private key handle: 17 Attestation Check : [PASS] Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Este comando usa getKeyInfo na chave privada (identificador de chave 17
). A saída confirma que a chave pertence ao usuário atual (usuário 3) e que é compartilhada com os usuários 4 e 6 (e nenhum outro). A saída também mostra que a autenticação de quorum está habilitada e que o tamanho do quorum é dois.
Command:
getKeyInfo -k 17
Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS Owned by user 3 also, shared to following 2 user(s): 4 6 2 Users need to approve to use/manage this key
Parâmetros
- -h
-
Exibe a ajuda referente ao comando.
Obrigatório: Sim
- -m
-
Especifica o comprimento do módulo em bits. O único valor válido é
2048
.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