As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Depois de configurar a autenticação de quórum para seu AWS CloudHSM cluster, os usuários de criptomoedas não poderão realizar operações de gerenciamento ou uso de chaves do HSM sozinhos se a chave tiver valores de quórum associados. Este tópico explica como um usuário de criptografia pode obter um token temporário para realizar uma operação de gerenciamento ou uso de chaves do HSM.
nota
Cada token de quorum é válido para uma operação. Quando essa operação é bem-sucedida, o token não é mais válido e o usuário criptográfico deve obter um novo token. Um token de quorum só é válido durante sua sessão de login atual. Se você sair da CLI do CloudHSM ou se a rede se desconectar, o token não será mais válido e você precisará obter um novo token. Você só pode usar um token do CloudHSM na CLI do CloudHSM. Você não pode usá-lo para se autenticar em um aplicativo diferente.
O exemplo a seguir mostra a saída quando um usuário criptográfico tenta criar uma assinatura com uma chave associada ao quórum no HSM após a configuração da autenticação de quórum. O comando falha com um Quorum Failed
erro, o que significa que a autenticação de quorum falhou:
aws-cloudhsm >
crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz
{ "error_code": 1, "data": "Quorum Failed" }
Um usuário de criptografia deve concluir as seguintes tarefas para obter um token temporário para realizar uma operação de gerenciamento ou uso de chaves no HSM:
Etapas
Etapa 1. Obter um token de quorum
-
Inicie a CLI do CloudHSM.
$
/opt/cloudhsm/bin/cloudhsm-cli interactive
-
Faça login no cluster como usuário criptográfico.
aws-cloudhsm >
login --username
--passwordcrypto_user1
--role crypto-userpassword123
Este exemplo faz
crypto_user1
login na CLI do CloudHSM com a função.crypto-user
Substitua esses valores pelos seus.{ "error_code": 0, "data": { "username": "crypto_user1", "role": "crypto-user" } }
-
Gere um token de quorum usando o quorum token-sign generate comando.
No comando a seguir,
key-usage
identifica o nome do serviço em que você usará o token que está gerando. Nesse caso, o token é para operações de uso de chaves (key-usage
serviço). Este exemplo usa o--filter
sinalizador para associar o token a uma chave específica.aws-cloudhsm >
quorum token-sign generate --service key-usage --token
</path/crypto_user1.token>
--filter attr.label=rsa-private-key-example{ "error_code": 0, "data": { "path": "/home/crypto_user1.token" } }
Este exemplo obtém um token de quorum para o usuário criptográfico com nome de usuário
crypto_user1
e salva o token em um arquivo chamado.crypto_user1.token
Para usar o exemplo de comando, substitua esses valores por seus próprios:O quorum token-sign generate comando gera um token de quorum do serviço de uso de chaves no caminho de arquivo especificado. Você pode inspecionar o arquivo de token:
$
cat
</path/crypto_user1.token>
{ "version": "2.0", "service": "key-usage", "key_reference": "0x0000000000680006", "approval_data": "AAIABQAAABkAAAAAAGgABi5CDa9x9VyyRIaFbkSrHgJjcnlwdG9fdXNlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPQBLAAAAAAAAAAAAAgAFAAAAGgAAAAAAaAAGQvd2qKY+GJj8gXo9lKuANGNyeXB0b191c2VyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc9AEsAAAAAAAAAAA==", "token": "5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=", "signatures": [] }
O caminho do arquivo consiste no seguinte:
-
serviço: um identificador do serviço de quórum ao qual o token está associado.
-
key_reference: um identificador para a chave à qual esse token de quorum está associado.
-
approval_data: um token de dados brutos codificado em base64 gerado pelo HSM.
-
token: um token codificado em base64 e com hash SHA-256 do approval_data
-
assinaturas: uma matriz de tokens assinados codificados em base64 (assinaturas) do token não assinado. Cada assinatura do aprovador está na forma de um literal de objeto JSON:
{ "username": "
<APPROVER_USERNAME>
", "role": "<APPROVER_ROLE>
", "signature": "<APPROVER_RSA2048_BIT_SIGNATURE>
" }Cada assinatura é criada a partir do resultado de um aprovador usando sua chave privada RSA de 2048 bits correspondente, cuja chave pública foi registrada no HSM.
-
-
Valide o novo token de quórum do serviço de usuário. O quorum token-sign list comando confirma que o token existe no CloudHSM.
aws-cloudhsm >
quorum token-sign list
{ "error_code": 0, "data": { "tokens": [ { "username": "crypto_user", "service": "key-usage", "key-reference": "0x0000000000680006", "minimum-token-count": 2 } ] } }
minimum-token-count
Apresenta uma visão agregada do cluster do número mínimo utilizável de tokens de chave correspondentes ao nome de usuário, serviço e referência de chave que são recuperados de um único HSM no cluster.Por exemplo, supondo um cluster de 2 HSM, se recebermos dois (2) tokens de uso de chave gerados pelo usuário
crypto_user1
para chave com referência0x0000000000680006
do primeiro HSM no cluster e recebermos um (1) token de uso de chave gerado pelo usuáriocrypto_user1
para chave com referência0x0000000000680006
do outro HSM no cluster, exibiremos."minimum-token-count": 1
Etapa 2. Obtenha assinaturas de usuários de criptomoedas aprovadores
Um usuário de criptografia que tenha um token de quorum deve obter a aprovação do token por outros usuários de criptografia. Para aprovar, os outros usuários crypto =-usam sua chave de assinatura para assinar criptograficamente o token fora do HSM.
Existem muitas maneiras diferentes de assinar o token. O exemplo a seguir mostra como assinar o token usando o OpenSSL
Neste exemplo, o usuário criptográfico que tem o token (crypto-user
) precisa de pelo menos duas (2) aprovações. Os comandos de exemplo a seguir mostram como dois (2) usuários de criptografia podem usar o OpenSSL para assinar criptograficamente o token.
-
Decodifique o token não assinado codificado em base64 e coloque-o em um arquivo binário:
$
echo -n '5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=' | base64 -d > crypto_user1.bin
-
Use o OpenSSL e a chave privada do aprovador para assinar o token não assinado de quorum binário para o serviço de usuário e criar um arquivo de assinatura binária:
$
openssl pkeyutl -sign \ -inkey crypto_user1.key \ -pkeyopt digest:sha256 \ -keyform PEM \ -in crypto_user1.bin \ -out crypto_user1.sig.bin
-
Codifique a assinatura binária em base64:
$
base64 -w0 crypto_user1.sig.bin > crypto_user1.sig.b64
-
Copie e cole a assinatura codificada em base64 no arquivo de token, usando o formato literal do objeto JSON especificado anteriormente para a assinatura do aprovador:
{ "version": "2.0", "service": "key-usage", "key_reference": "0x0000000000680006", "approval_data": "AAIABQAAABkAAAAAAGgABi5CDa9x9VyyRIaFbkSrHgJjcnlwdG9fdXNlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPQBLAAAAAAAAAAAAAgAFAAAAGgAAAAAAaAAGQvd2qKY+GJj8gXo9lKuANGNyeXB0b191c2VyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc9AEsAAAAAAAAAAA==", "token": "5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=", "signatures": [ { "username": "crypto_user1", "role": "crypto-user", "signature": "wa7aPzmGwBjcEoZ6jAzYASp841AfgOvcI27Y/tGlCj1E9DawnFw5Uf0IJT2Ca7T5XD2ThVkUi0B+dhAomdqYNl6aUUFrJyH9GBJ+E0PmA5jNVm25tzeRWBJzneTg4/zTeE2reNqrHFHicWnttQLe9jS09J1znuDGWDe0HaBKWUaz2gUInJRqmeXDsZYdSvZksrqUH5dci/RsaDE2+tGiS9g0RcIkFbsPW4HpGe2e5HVzGsqrV8O3PKlYQv6+fymfcNTTuoxKcHAkOjpl43QSuSIu2gVq7KI8mSmmWaPJL47NPjmcBVB5vdEQU+oiukaNfLJr+MoDKzAvCGDg4cDArg==" }, { "username": "crypto_user2", "role": "crypto-user", "signature": "wa7aPzmGwBjcEoZ6jAzYASp841AfgOvcI27Y/tGlCj1E9DawnFw5Uf0IJT2Ca7T5XD2ThVkUi0B+dhAomdqYNl6aUUFrJyH9GBJ+E0PmA5jNVm25tzeRWBJzneTg4/zTeE2reNqrHFHicWnttQLe9jS09J1znuDGWDe0HaBKWUaz2gUInJRqmeXDsZYdSvZksrqUH5dci/RsaDE2+tGiS9g0RcIkFbsPW4HpGe2e5HVzGsqrV8O3PKlYQv6+fymfcNTTuoxKcHAkOjpl43QSuSIu2gVq7KI8mSmmWaPJL47NPjmcBVB5vdEQU+oiukaNfLJr+MoDKzAvCGDg4cDArg==" } ] }
Etapa 3. Aprove o token no cluster do CloudHSM; e execute uma operação
Depois que um usuário de criptografia tiver as aprovações e assinaturas necessárias, ele poderá fornecer esse token ao cluster do CloudHSM junto com uma operação de gerenciamento ou uso de chaves.
Certifique-se de que a operação da chave corresponda ao serviço de quórum apropriado associado ao token de quórum. Para obter mais informações, consulte Serviços e tipos compatíveis para obter mais informações.
Durante a transação, o token será aprovado no AWS CloudHSM cluster e executará a operação de chave solicitada. O sucesso da operação-chave depende tanto de um token de quorum aprovado válido quanto de uma operação-chave válida.
exemplo Gere uma assinatura com o mecanismo RSA-PKCS
No exemplo a seguir, um usuário criptográfico conectado cria uma assinatura com uma chave no HSM:
aws-cloudhsm >
crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz --approval /path/crypto_user1.token
{ "error_code": 0, "data": { "key-reference": "0x0000000000640007", "signature": "h6hMqXacBrT3x3MXV13RXHdQno0+IQ6iy0kVrGzo23+eoWT0ZZgrSpBCu5KcuP6IYYHw9goQ5CfPf4jI1nO5m/IUJtF1A1lmcz0HjEy1CJ7ICXNReDRyeOU8m43dkJzt0OUdkbtkDJGAcxkbKHLZ02uWsGXaQ8bOKhoGwsRAHHF6nldTXquICfOHgSd4nimObKTqzUkghhJW5Ot5oUyLMYP+pZmUS38ythybney94Wj6fzYOER8v7VIY5ijQGa3LfxrjSG4aw6QijEEbno5LSf18ahEaVKmVEnDBL54tylCJBGvGsYSY9HNhuJoHPgiDL/TDd2wfvP4PaxbFRyyHaw==" } }
Se o usuário criptográfico tentar realizar outra operação de uso da chave HSM com o mesmo token, ela falhará:
aws-cloudhsm >
crypto sign rsa-pkcs --key-filter attr.label=rsa-private-key-example --hash-function sha256 --data YWJjMTIz --approval /home/crypto_user1.token
{ "error_code": 1, "data": "Quorum approval is required for this operation" }
Para realizar outra operação de chave do HSM, o usuário criptográfico deve gerar um novo token de quorum, obter novas assinaturas dos aprovadores e executar a operação-chave desejada com o argumento --approval para fornecer o token de quorum.
Use o quorum token-sign list para verificar o token disponível. Este exemplo mostra que o usuário criptográfico não tem tokens aprovados.
aws-cloudhsm >
quorum token-sign list
{ "error_code": 0, "data": { "tokens": [] } }