exSymKey - AWS CloudHSM

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à.

exSymKey

Il comando exSymKey nello strumento key_mgmt_util esporta una copia non crittografata di una chiave simmetrica dall'HSM e la memorizza in un file su disco. Per esportare una copia crittografata (su cui è stato eseguito il wrapping) di una chiave, usa wrapKey. Per importare una chiave di testo non crittografata, come quelle esportate da exSymKey, utilizzare imSymKey.

Durante il processo di esportazione, il comando exSymKey utilizza una chiave AES specificata (la chiave di wrapping) per effettuare il wrapping (crittografia) e quindi annullare il wrapping (decodifica) della chiave da esportare. Tuttavia, il risultato dell'operazione di esportazione è una chiave di testo non crittografato (su cui è stato annullato il wrapping) su disco.

Soltanto il proprietario della chiave, ovvero l'utente CU che ha creato la chiave, è in grado di esportarla. Gli utenti che condividono la chiave possono utilizzarla nelle operazioni di crittografia, ma non possono esportarla.

L'operazione exSymKey copia il materiale della chiave su un file specificato, ma non rimuove la chiave dall'HSM, non ne modifica gli attributi, né impedisce l'utilizzo della chiave nelle operazioni di crittografia. È possibile esportare la stessa chiave più volte.

exSymKey esporta solo le chiavi simmetriche. Per esportare le chiavi pubbliche, utilizza exportPubKey. Per esportare le chiavi private, utilizza exportPrivateKey.

Prima di eseguire un comando key_mgmt_util, devi avviare key_mgmt_util e accedere all'HSM come crypto user (CU).

Sintassi

exSymKey -h exSymKey -k <key-to-export> -w <wrapping-key> -out <key-file> [-m 4] [-wk <unwrapping-key-file> ]

Esempi

Questi esempi mostrano come utilizzare exSymKey per esportare le chiavi simmetriche di tua proprietà dai moduli HSM.

Esempio : esportazione di una chiave simmetrica 3DES

Questo comando esporta una chiave simmetrica Triple DES (3DES) (handle chiave 7). Utilizza una chiave AES esistente (handle chiave 6) sull'HSM come chiave di wrapping. Quindi scrive il testo non crittografato della chiave 3DES sul file 3DES.key.

L'output indica che la chiave 7 (la chiave 3DES) è stata sottoposta a wrapping e all'annullamento del wrapping e che è stata scritta sul file 3DES.key.

avvertimento

Anche se l'output dice che una "Chiave simmetrica wrapped" è stata scritta sul file di output, il file di output contiene una chiave di testo non crittografata (unwrapped).

Command: exSymKey -k 7 -w 6 -out 3DES.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "3DES.key"
Esempio : esportazione con una chiave di wrapping solo per la sessione

Questo esempio illustra come utilizzare una chiave che esiste solo nella sessione come chiave di wrapping. Poiché sulla chiave da esportare è stato eseguito il wrapping che è poi stato immediatamente annullato ed è stata distribuita come testo non crittografato, non è necessario conservare la chiave di wrapping.

Questa serie di comandi esporta dall'HSM una chiave AES con handle di chiave 8. Utilizza una chiave di sessione AES creata specificatamente per questo scopo.

Il primo comando utilizza genSymKey per creare una chiave AES a 256 bit. Utilizza il parametro -sess per creare una chiave che esiste solo nella sessione corrente.

L'output indica che l'HSM crea la chiave 262168.

Command: genSymKey -t 31 -s 32 -l AES-wrapping-key -sess Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 262168 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

Quindi, l'esempio verifica che la chiave 8, la chiave da esportare, sia una chiave simmetrica estraibile. Inoltre verifica che la chiave di wrapping, la chiave 262168, sia una chiave AES che esiste solo nella sessione. È possibile utilizzare il comando findKey, ma questo esempio esporta gli attributi di entrambe le chiavi su file e utilizza grep per trovare i valori di attributo rilevanti nel file.

Questi comandi utilizzano getAttribute con un valore -a di 512 (tutti) per ottenere tutti gli attributi per le chiavi 8 e 262168. Per ulteriori informazioni sugli attributi delle chiavi, vedi Riferimento per l'attributo della chiave.

getAttribute -o 8 -a 512 -out attributes/attr_8 getAttribute -o 262168 -a 512 -out attributes/attr_262168

Questi comandi utilizzano grep per verificare gli attributi della chiave da esportare (chiave 8) e la chiave di wrapping valida solo per la sessione (chiave 262168).

// Verify that the key to be exported is a symmetric key. $ grep -A 1 "OBJ_ATTR_CLASS" attributes/attr_8 OBJ_ATTR_CLASS 0x04 // Verify that the key to be exported is extractable. $ grep -A 1 "OBJ_ATTR_KEY_TYPE" attributes/attr_8 OBJ_ATTR_EXTRACTABLE 0x00000001 // Verify that the wrapping key is an AES key $ grep -A 1 "OBJ_ATTR_KEY_TYPE" attributes/attr_262168 OBJ_ATTR_KEY_TYPE 0x1f // Verify that the wrapping key is a session key $ grep -A 1 "OBJ_ATTR_TOKEN" attributes/attr_262168 OBJ_ATTR_TOKEN 0x00 // Verify that the wrapping key can be used for wrapping $ grep -A 1 "OBJ_ATTR_WRAP" attributes/attr_262168 OBJ_ATTR_WRAP 0x00000001

Infine, utilizziamo un comando exSymKey per esportare la chiave 8 utilizzando la chiave di sessione (chiave 262168) come chiave di wrapping.

Quando la sessione scade, la chiave 262168 non è più disponibile.

Command: exSymKey -k 8 -w 262168 -out aes256_H8.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "aes256_H8.key"
Esempio : utilizzo di una chiave di wrapping esterna

Questo esempio illustra come utilizzare una chiave di wrapping esterna per esportare una chiave dall'HSM.

Quando si esegue l'esportazione di una chiave dall'HSM, è necessario specificare una chiave AES nell'HSM che funga da chiave di wrapping. Per impostazione predefinita, la chiave di wrapping viene utilizzata per eseguire e annullare il wrapping della chiave da esportare. Tuttavia, è possibile utilizzare il parametro -wk per ordinare a exSymKey di utilizzare una chiave esterna in un file su disco per annullare il wrapping. Quando si esegue questa operazione, la chiave specificata dal parametro -w effettua il wrapping della chiave di destinazione e la chiave nel file specificata dal parametro -wk annulla il wrapping della chiave.

Poiché la chiave di wrapping deve essere una chiave AES, ovvero una chiave simmetrica, la chiave di wrapping nell'HSM e la chiave di unwrapping su disco devono avere lo stesso materiale chiave. Per eseguire questa operazione, è necessario importare la chiave di wrapping sull'HSM o esportare la chiave di wrapping dall'HSM prima dell'operazione di esportazione.

Questo esempio crea una chiave al di fuori dell'HSM e la importa nell'HSM. Utilizza la copia interna della chiave per effettuare il wrapping di una chiave simmetrica esportata e la copia della chiave nel file per annullare il wrapping.

Il primo comando utilizza OpenSSL per generare una chiave AES a 256 bit. Memorizza la chiave sul file aes256-forImport.key. Il comando OpenSSL non restituisce alcun output, ma è possibile utilizzare diversi comandi per confermare che l'operazione sia avvenuta con successo. Questo esempio utilizza lo strumento di (wordcount) wc, che conferma che il file contiene 32 byte di dati.

$ openssl rand -out keys/aes256-forImport.key 32 $ wc keys/aes256-forImport.key 0 2 32 keys/aes256-forImport.key

Questo comando utilizza il comando imSymKey per importare la chiave AES dal file aes256-forImport.key all'HSM. Quando il comando viene completato, la chiave esiste nell'HSM con handle 262167 e nel file aes256-forImport.key.

Command: imSymKey -f keys/aes256-forImport.key -t 31 -l aes256-imported -w 6 Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Unwrapped. Key Handle: 262167 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Questo comando utilizza la chiave in un'operazione di esportazione. Il comando utilizza exSymKey per esportare la chiave 21, una chiave AES a 192 bit. Per effettuare il wrapping della chiave, utilizza la chiave 262167, che è la copia importata nell'HSM. Per annullare il wrapping della chiave, utilizza lo stesso materiale chiave nel file aes256-forImport.key. Quando il comando viene completato, la chiave 21 viene esportata sul file aes192_h21.key.

Command: exSymKey -k 21 -w 262167 -out aes192_H21.key -wk aes256-forImport.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "aes192_H21.key"

Parametri

-h

Visualizza l'aiuto per il comando.

Campo obbligatorio: sì

-k

Specifica l'handle della chiave da esportare. Questo parametro è obbligatorio. Specifica l'handle della chiave simmetrica posseduta. Questo parametro è obbligatorio. Per trovare gli handle della chiave, utilizza il comando findKey.

Per verificare che una chiave possa essere esportata, utilizza il comando getAttribute per ottenere il valore dell'attributo OBJ_ATTR_EXTRACTABLE, che è rappresentato dalla costante 354. Inoltre, puoi esportare solo le chiavi di tua proprietà. Per trovare il proprietario di una chiave, utilizza il comando getKeyInfo.

Campo obbligatorio: sì

-w

Specifica l'handle di una chiave di wrapping. Questo parametro è obbligatorio. Per trovare gli handle della chiave, utilizza il comando findKey.

Una chiave di wrapping è una chiave nell'HSM che viene utilizzata per crittografare (eseguire il wrapping) e quindi decodificare (annullare il wrapping) della chiave da esportare. Solo le chiavi AES possono essere utilizzate come chiavi di wrapping.

Puoi usare qualsiasi chiave AES (di qualsiasi dimensione) come chiave di wrapping. Poiché la chiave di wrapping effettua e quindi annulla immediatamente il wrapping della chiave di destinazione, puoi utilizzare una chiave AES valida solo per la sessione come chiave di wrapping. Per determinare se una chiave può essere usata come chiave di wrapping, utilizza getAttribute per ottenere il valore dell'attributo OBJ_ATTR_WRAP, che è rappresentato dalla costante 262. Per creare una nuova chiave di wrapping, utilizza genSymKey per creare una chiave AES (digita 31).

Se utilizzi il parametro -wk per specificare una chiave di unwrapping esterna, la chiave di wrapping -w viene utilizzata per eseguire il wrapping della chiave durante l'esportazione, ma non per annullarlo.

Nota

La chiave 4 rappresenta una chiave interna non supportata. Ti consigliamo di utilizzare una chiave AES che crei e gestisci come chiave di wrapping.

Campo obbligatorio: sì

-output

Specifica il percorso e il nome del file di output. Quando il comando viene completato, questo file contiene la chiave esportata in testo non crittografato. Se il file già esiste, il comando lo sovrascrive senza preavviso.

Campo obbligatorio: sì

-m

Specifica il meccanismo di wrapping. L'unico valore valido è 4, che rappresenta il meccanismo NIST_AES_WRAP.

Campo obbligatorio: no

Impostazione predefinita: 4

-wk

Utilizza la chiave AES nel file specificato per annullare il wrapping della chiave esportata. Inserire il percorso e il nome di un file che contiene una chiave AES non crittografata.

Quando includi questo parametro. exSymKey utilizza la chiave nell'HSM specificata dal parametro -w per eseguire il wrapping della chiave esportata e utilizza la chiave nel file -wk per annullarne il wrapping. I valori di parametro -w e -wk devono determinare la stessa chiave di testo non crittografato.

Campo obbligatorio: no

Impostazione predefinita: utilizzo della chiave di wrapping sull'HSM per annullare il wrapping.

Argomenti correlati