

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

# Generazione delle chiavi di dati
<a name="generating-data-keys"></a>

Gli utenti autorizzati possono utilizzare l' GenerateDataKey API (e relative APIs) per richiedere un tipo specifico di chiave dati o una chiave casuale di lunghezza arbitraria. In questo argomento viene fornita una vista semplificata di questa operazione API. Per i dettagli, consulta l' GenerateDataKey APIs *AWS Key Management Service API Reference.*
+ [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
+ [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
+ [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)
+ [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)

Di seguito è riportata la sintassi di una richiesta `GenerateDataKey`.

```
{
	“EncryptionContext”: {“string” : “string”},
	“GrantTokens”: [“string”],
	“KeyId”: “string”,
	“NumberOfBytes”: “number”
}
```

La richiesta accetta i seguenti dati in formato JSON.

**KeyId**  
Identificatore della chiave utilizzato per crittografare la chiave dati. Questo valore deve identificare una chiave KMS di crittografia simmetrica.  
Questo parametro è obbligatorio.

**NumberOfBytes**  
Un numero intero che contiene il numero di byte da generare. Questo parametro è obbligatorio.  
Il chiamante deve fornire `KeySpec` o `NumberOfBytes`, ma non entrambi.

**EncryptionContext**  
(Facoltativo) Coppia nome-valore che contiene dati aggiuntivi per l'autenticazione durante i processi di crittografia e decrittografia che utilizzano la chiave.

**GrantTokens**  
(Facoltativo) Un elenco dei token di concessione che rappresentano le concessioni che forniscono autorizzazioni per generare o utilizzare una chiave. Per ulteriori informazioni sulle concessioni e i token di concessione, consultare [Autenticazione e controllo degli accessi per AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

Dopo aver autenticato il comando AWS KMS, acquisisce l'EKT attualmente attivo associato alla chiave KMS. Passa l'EKT insieme alla richiesta fornita e a qualsiasi contesto di crittografia a un HSM tramite una sessione protetta tra l' AWS KMS host e un HSM nel dominio.

L'HSM completa le seguenti operazioni:

1. Genera il materiale segreto richiesto e lo conserva nella memoria volatile.

1. Decritta l'*EKT* corrispondente all'ID chiave della chiave KMS definito nella richiesta per ottenere *HBK = Decrypt(DKi, EKT)*.

1. Genera un nonce casuale *N*.

1. Genera una chiave di crittografia derivata AES-GCM a 256 bit *K* da *HBK* e *N*.

1. Crittografa il materiale segreto *ciphertext = Encrypt(K, context, secret)*.

`GenerateDataKey`restituisce il materiale segreto in chiaro e il testo cifrato tramite il canale sicuro tra l'host e l'HSM. AWS KMS AWS KMS quindi te lo invia tramite la sessione TLS. AWS KMS non conserva il testo in chiaro o il testo cifrato. Senza il *testo cifrato*, il contesto di crittografia e l'autorizzazione a utilizzare la *chiave KMS*, il segreto non può essere restituito.

Di seguito è riportata la sintassi della risposta. 

```
{
	"CiphertextBlob": "blob",
	"KeyId": "string",
	"Plaintext": "blob"
}
```

La gestione delle chiavi di dati è lasciata allo sviluppatore dell'applicazione. Per una crittografia lato client basata sulle migliori pratiche con chiavi di AWS KMS dati (ma non coppie di chiavi di dati), puoi utilizzare. [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)

Le chiavi dati possono essere ruotate a qualsiasi frequenza. Inoltre, la chiave dati può essere crittografata nuovamente su una chiave KMS diversa o in una chiave KMS ruotata utilizzando l'operazione API `ReEncrypt`. Per i dettagli, consulta l'*AWS Key Management Service API [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)*Reference.