Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Dopo aver configurato l'autenticazione quorum per il AWS CloudHSM cluster, gli utenti crittografici non possono eseguire autonomamente la gestione o l'utilizzo delle chiavi HSM se alla chiave sono associati valori di quorum. Questo argomento spiega come un utente crittografico può ottenere un token temporaneo per eseguire un'operazione di gestione o utilizzo delle chiavi HSM.
Nota
Ogni token del quorum è valido per una sola operazione. Quando l'operazione ha esito positivo, il token non è più valido e l'utente crittografico deve ottenere un nuovo token. Un token quorum è valido solo durante la sessione di accesso corrente. Se esci dalla CLI di CloudHSM o se la rete si disconnette, il token non è più valido e devi procurartene uno nuovo. È possibile utilizzare solo un token CloudHSM all'interno della CLI CloudHSM. Non puoi usarlo per autenticarti in un'altra applicazione.
L'esempio seguente mostra l'output quando un utente crittografico tenta di creare una firma con una chiave associata al quorum sull'HSM dopo la configurazione dell'autenticazione quorum. Il comando fallisce con un errore, il che significa che l'autenticazione del quorum non è Quorum Failed
riuscita:
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" }
Un utente crittografico deve completare le seguenti attività per ottenere un token temporaneo per eseguire un'operazione di gestione o utilizzo delle chiavi sull'HSM:
Fasi
Fase 1: Ottenere un token del quorum
-
Avvia CloudhSM CLI.
$
/opt/cloudhsm/bin/cloudhsm-cli interactive
-
Accedi al cluster come utente crittografico.
aws-cloudhsm >
login --username
--passwordcrypto_user1
--role crypto-userpassword123
Questo esempio accede
crypto_user1
alla CLI di CloudHSM con il ruolo.crypto-user
Sostituisci questi valori con i tuoi.{ "error_code": 0, "data": { "username": "crypto_user1", "role": "crypto-user" } }
-
Genera un token di quorum utilizzando il quorum token-sign generate comando.
Nel comando seguente,
key-usage
identifica il nome del servizio in cui utilizzerai il token che stai generando. In questo caso, il token serve per le operazioni di utilizzo delle chiavi (key-usage
servizio). Questo esempio utilizza il--filter
flag per associare il token a una chiave specifica.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" } }
Questo esempio ottiene un token quorum per l'utente crittografico con nome utente
crypto_user1
e lo salva in un file denominato.crypto_user1.token
Per utilizzare il comando di esempio, sostituisci i valori i tuoi personali:Il quorum token-sign generate comando genera un token quorum del servizio di utilizzo delle chiavi nel percorso del file specificato. È possibile ispezionare il file del token:
$
cat
</path/crypto_user1.token>
{ "version": "2.0", "service": "key-usage", "key_reference": "0x0000000000680006", "approval_data": "AAIABQAAABkAAAAAAGgABi5CDa9x9VyyRIaFbkSrHgJjcnlwdG9fdXNlcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPQBLAAAAAAAAAAAAAgAFAAAAGgAAAAAAaAAGQvd2qKY+GJj8gXo9lKuANGNyeXB0b191c2VyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc9AEsAAAAAAAAAAA==", "token": "5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=", "signatures": [] }
Il file del token comprende:
-
service: un identificatore per il servizio quorum a cui è associato il token.
-
key_reference: un identificatore per la chiave a cui è associato questo token del quorum.
-
approval_data: un token di dati non elaborati con codifica base64 generato dall'HSM.
-
token: un token con codifica base64 sottoposto ad hashing SHA-256 di approval_data
-
firme: una matrice di token firmati codificati in base64 (firme) del token non firmato. Ogni firma dell'approvatore ha la forma di un oggetto letterale JSON:
{ "username": "
<APPROVER_USERNAME>
", "role": "<APPROVER_ROLE>
", "signature": "<APPROVER_RSA2048_BIT_SIGNATURE>
" }Ogni firma viene creata in base al risultato di un approvatore che utilizza la corrispondente chiave privata RSA a 2048 bit la cui chiave pubblica è stata registrata presso l'HSM.
-
-
Convalida il nuovo token del quorum del servizio utente. Il quorum token-sign list comando conferma che il token esiste su 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
Presenta una visualizzazione aggregata del cluster del numero minimo utilizzabile di token chiave corrispondenti al nome utente, al servizio e al riferimento chiave recuperati da un singolo HSM nel cluster.Ad esempio, supponendo un cluster 2-HSM, se riceviamo due (2) token di utilizzo delle chiavi generati dall'utente
crypto_user1
per la chiave con riferimento0x0000000000680006
dal primo HSM del cluster e riceviamo un (1) token di utilizzo delle chiavi generati dall'utentecrypto_user1
per la chiave con riferimento0x0000000000680006
dall'altro HSM del cluster, visualizzeremo"minimum-token-count": 1
.
Fase 2: Ottieni firme dagli utenti che approvano le criptovalute
Un utente crittografico che ha un quorum token deve ottenere l'approvazione del token da altri cripto-utenti. Per dare la loro approvazione, gli altri utenti di crypto=-utilizzano la loro chiave di firma per firmare crittograficamente il token all'esterno dell'HSM.
Sono disponibili vari modi per firmare il token. L'esempio seguente mostra come firmare il token utilizzando OpenSSL
In questo esempio, l'utente crittografico che dispone del token (crypto-user
) necessita di almeno due (2) approvazioni. I seguenti comandi di esempio mostrano come due (2) cripto-utenti possono utilizzare OpenSSL per firmare crittograficamente il token.
-
Decodifica il token non firmato con codifica base64 e inseriscilo in un file binario:
$
echo -n '5GlgoWOlQU4fw4QIlbxkPGZVOVoDugFGuSKE/k67ncM=' | base64 -d > crypto_user1.bin
-
Usa OpenSSL e la chiave privata dell'approvatore per firmare il token unsigned del quorum binario per il servizio utente e creare un file di firma binario:
$
openssl pkeyutl -sign \ -inkey crypto_user1.key \ -pkeyopt digest:sha256 \ -keyform PEM \ -in crypto_user1.bin \ -out crypto_user1.sig.bin
-
Codifica la firma binaria in base64:
$
base64 -w0 crypto_user1.sig.bin > crypto_user1.sig.b64
-
Copia e incolla la firma codificata base64 nel file token, utilizzando il formato letterale dell'oggetto JSON specificato in precedenza per la firma dell'approvatore:
{ "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==" } ] }
Fase 3. Approvare il token sul CloudHSM; raggruppare ed eseguire un'operazione
Dopo aver ottenuto le approvazioni e le firme necessarie, un utente crittografico può fornire quel token al cluster CloudHSM insieme a un'operazione di gestione o utilizzo delle chiavi.
Assicurati che l'operazione con la chiave corrisponda al servizio di quorum appropriato associato al token quorum. Per ulteriori informazioni, consulta Servizi e tipi supportati.
Durante la transazione, il token verrà approvato all'interno del AWS CloudHSM cluster ed eseguirà l'operazione chiave richiesta. Il successo dell'operazione chiave dipende sia da un token quorum approvato valido sia da un'operazione chiave valida.
Esempio Genera una firma con il meccanismo RSA-PKCS
Nell'esempio seguente, un cripto-utente registrato crea una firma con una chiave sull'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 l'utente crittografico tenta di eseguire un'altra operazione di utilizzo della chiave HSM con lo stesso token, fallisce:
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" }
Per eseguire un'altra operazione con la chiave HSM, l'utente crittografico deve generare un nuovo token quorum, ottenere nuove firme dagli approvatori ed eseguire l'operazione chiave desiderata con l'argomento --approval per fornire il token quorum.
Usa il per verificare la disponibilità del token. quorum token-sign list Questo esempio mostra che l'utente crittografico non ha token approvati.
aws-cloudhsm >
quorum token-sign list
{ "error_code": 0, "data": { "tokens": [] } }