Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Fase 3: crittografare il materiale delle chiavi

Modalità Focus
Fase 3: crittografare il materiale delle chiavi - AWS Key Management Service

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

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 scaricato la chiave pubblica e il token di importazione, esegue la crittografia del materiale della chiave utilizzando la chiave pubblica scaricata e l'algoritmo di wrapping specificato. Se devi sostituire la chiave pubblica o il token di importazione oppure modificare l'algoritmo di wrapping, devi scaricare una nuova chiave pubblica e un nuovo token di importazione. Per informazioni sulle chiavi pubbliche e sugli algoritmi di wrapping AWS KMS supportati, vedere Selezione di una specifica della chiave pubblica di wrapping e. Selezione di un algoritmo di wrapping

Il materiale delle chiavi deve essere in formato binario. Per informazioni dettagliate, consulta Requisiti per il materiale della chiave importato.

Nota

Per le coppie di chiavi asimmetriche, crittografa e importa solo la chiave privata. AWS KMS ricava la chiave pubblica dalla chiave privata.

La seguente combinazione NON è supportata: materiale della chiave ECC_NIST_P521, specifica della chiave di wrapping pubblica RSA_2048 e algoritmo di wrapping RSAES_OAEP_SHA_*.

Non puoi eseguire il wrapping del materiale della chiave ECC_NIST_P521 direttamente con una chiave di wrapping pubblica RSA_2048. Usa una chiave di wrapping più grande o un algoritmo di wrapping RSA_AES_KEY_WRAP_SHA_*.

Gli algoritmi di wrapping RSA_AES_KEY_WRAP_SHA_256 e RSA_AES_KEY_WRAP_SHA_1 non sono supportati nelle regioni della Cina.

Di solito, è possibile crittografare il materiale delle chiavi quando viene esportato dal modulo di sicurezza hardware (HSM) o dal sistema di gestione delle chiavi. Per informazioni su come esportare il materiale delle chiavi in formato binario, consulta la documentazione per il tuo HSM o per il sistema di gestione delle chiavi. È anche possibile consultare la sezione seguente che fornisce un proof of concept sull'utilizzo di OpenSSL.

Quando crittografi il materiale della chiave, usa lo stesso algoritmo di wrapping specificato quando hai scaricato la chiave pubblica e il token di importazione. Per trovare l'algoritmo di wrapping specificato, consulta l'evento di registro per la richiesta associata. CloudTrail GetParametersForImport

Genera il materiale della chiave per i test

I comandi OpenSSL indicati di seguito generano il materiale della chiave di ogni tipo supportato per i test. Questi esempi vengono forniti solo a scopo di test e proof-of-concept dimostrazioni. Per i sistemi di produzione, usa un metodo più sicuro per generare e memorizzare il materiale della chiave, ad esempio un modulo di sicurezza hardware o un sistema di gestione delle chiavi.

Per convertire le chiavi private delle coppie di chiavi asimmetriche in formato con codifica DER, reindirizza il comando di generazione del materiale della chiave sul comando openssl pkcs8 seguente. Il parametro topk8 indica a OpenSSL di accettare una chiave privata come input e restituire una chiave in formato PKCS #8. (Il comportamento predefinito è l'opposto.)

openssl pkcs8 -topk8 -outform der -nocrypt

I comandi indicati di seguito generano il materiale della chiave per ogni tipo di chiave supportato.

  • Chiavi di crittografia simmetrica (32 byte)

    Questo comando genera una chiave simmetrica a 256 bit (stringa casuale di 32 byte) e la salva nel file PlaintextKeyMaterial.bin. Non è necessario codificare questo materiale della chiave.

    openssl rand -out PlaintextKeyMaterial.bin 32

    Solo nelle regioni cinesi, devi generare una chiave simmetrica a 128 bit (stringa casuale di 16 byte).

    openssl rand -out PlaintextKeyMaterial.bin 16
  • Chiavi HMAC

    Questo comando genera una stringa di byte casuale della dimensione specificata. Non è necessario codificare questo materiale della chiave.

    La lunghezza della chiave HMAC deve corrispondere alla lunghezza definita dalle specifiche della chiave KMS. Ad esempio, se la chiave KMS è HMAC_384, devi importare una chiave a 384 bit (48 byte).

    openssl rand -out HMAC_224_PlaintextKey.bin 28 openssl rand -out HMAC_256_PlaintextKey.bin 32 openssl rand -out HMAC_384_PlaintextKey.bin 48 openssl rand -out HMAC_512_PlaintextKey.bin 64
  • Chiavi private RSA

    openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_2048_PrivateKey.der openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:3072 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_3072_PrivateKey.der openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_4096_PrivateKey.der
  • Chiavi private EEC

    openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P256_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-384 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P384_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-521 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P521_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:secp256k1 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_SECG_P256K1_PrivateKey.der
  • SM2 chiavi private (solo regioni della Cina)

    openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 | openssl pkcs8 -topk8 -outform der -nocrypt > SM2_PrivateKey.der

Esempio di crittografia del materiale della chiave con OpenSSL

Gli esempi seguenti descrivono l'utilizzo di OpenSSL per crittografare il materiale della chiave con la chiave pubblica scaricata. Per crittografare il materiale chiave utilizzando una chiave SM2 pubblica (solo regioni della Cina), usa la SM2OfflineOperationHelperclasse. Per ulteriori informazioni sui principali tipi di materiali supportati da ciascun algoritmo di wrapping, consulta. Selezione di un algoritmo di wrapping

Importante

Questo esempio è solo una dimostrazione di proof of concept. Per i sistemi di produzione, utilizzare un metodo più sicuro (ad esempio un sistema di gestione delle chiavi commerciale o HSM) per generare e memorizzare il materiale delle chiavi.

La seguente combinazione NON è supportata: materiale della chiave ECC_NIST_P521, specifica della chiave di wrapping pubblica RSA_2048 e algoritmo di wrapping RSAES_OAEP_SHA_*.

Non puoi eseguire il wrapping del materiale della chiave ECC_NIST_P521 direttamente con una chiave di wrapping pubblica RSA_2048. Usa una chiave di wrapping più grande o un algoritmo di wrapping RSA_AES_KEY_WRAP_SHA_*.

RSAES_OAEP_SHA_1

AWS KMS supporta RSAES_OAEP_SHA_1 per chiavi di crittografia simmetriche (SYMMETRIC_DEFAULT), chiavi private a curva ellittica (ECC), chiavi private e chiavi HMAC. SM2

RSAES_OAEP_SHA_1 non è supportato per le chiavi private RSA. Inoltre, non puoi utilizzare una chiave di wrapping pubblica RSA_2048 con un algoritmo di wrapping RSAES_OAEP_SHA_* per eseguire il wrapping di una chiave privata ECC_NIST_P521 (secp521r1). Devi utilizzare una chiave di wrapping più grande o un algoritmo di wrapping RSA_AES_KEY_WRAP.

Nell'esempio seguente il materiale della chiave viene criptato con la chiave pubblica scaricata e l'algoritmo di wrapping RSAES_OAEP_SHA_1, quindi viene salvato nel file EncryptedKeyMaterial.bin.

In questo esempio:

  • WrappingPublicKey.bin è il file che contiene la chiave pubblica di wrapping scaricata.

  • PlaintextKeyMaterial.bin è il file che contiene il materiale della chiave da crittografare, ad esempio PlaintextKeyMaterial.bin, HMAC_384_PlaintextKey.bin o ECC_NIST_P521_PrivateKey.der.

$ openssl pkeyutl \ -encrypt \ -in PlaintextKeyMaterial.bin \ -out EncryptedKeyMaterial.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha1
RSAES_OAEP_SHA_256

AWS KMS supporta RSAES_OAEP_SHA_256 per chiavi di crittografia simmetriche (SYMMETRIC_DEFAULT), chiavi private a curva ellittica (ECC), chiavi private e chiavi HMAC. SM2

RSAES_OAEP_SHA_256 non è supportato per le chiavi private RSA. Inoltre, non puoi utilizzare una chiave di wrapping pubblica RSA_2048 con un algoritmo di wrapping RSAES_OAEP_SHA_* per eseguire il wrapping di una chiave privata ECC_NIST_P521 (secp521r1). Devi utilizzare una chiave pubblica più grande o un algoritmo di wrapping RSA_AES_KEY_WRAP.

Nell'esempio seguente, il materiale della chiave viene criptato con la chiave pubblica scaricata e l'algoritmo di wrapping RSAES_OAEP_SHA_256, quindi viene salvato nel file EncryptedKeyMaterial.bin.

In questo esempio:

  • WrappingPublicKey.bin è il file che contiene la chiave di wrapping pubblica scaricata. Se hai scaricato la chiave pubblica dalla console, questo file è denominato wrappingKey_KMS key_key_ID_timestamp (ad esempio wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909).

  • PlaintextKeyMaterial.bin è il file che contiene il materiale della chiave da crittografare, ad esempio PlaintextKeyMaterial.bin, HMAC_384_PlaintextKey.bin o ECC_NIST_P521_PrivateKey.der.

$ openssl pkeyutl \ -encrypt \ -in PlaintextKeyMaterial.bin \ -out EncryptedKeyMaterial.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha256 \ -pkeyopt rsa_mgf1_md:sha256
RSA_AES_KEY_WRAP_SHA_1

L'algoritmo di wrapping RSA_AES_KEY_WRAP_SHA_1 prevede due operazioni di crittografia.

  1. Esegui la crittografia del materiale della chiave con una chiave simmetrica AES generata da te e un algoritmo di crittografia simmetrica AES.

  2. Esegui la crittografia della chiave simmetrica AES che hai usato con la chiave pubblica che hai scaricato e l'algoritmo di wrapping RSAES_OAEP_SHA_1.

L'algoritmo di wrapping RSA_AES_KEY_WRAP_SHA_1 richiede OpenSSL versione 3.x o versione successiva.

  1. Genera una chiave di crittografia simmetrica AES a 256-bit

    Questo comando genera una chiave di crittografia simmetrica AES composta da 256 bit casuali e la salva nel file aes-key.bin

    # Generate a 32-byte AES symmetric encryption key $ openssl rand -out aes-key.bin 32
  2. Esegui la crittografia del materiale della chiave con la chiave di crittografia simmetrica AES

    Questo comando esegue la crittografia del materiale chiave con la chiave di crittografia simmetrica AES e salva il materiale della chiave crittografato nel file key-material-wrapped.bin.

    In questo esempio di comando:

    • PlaintextKeyMaterial.bin è il file che contiene il materiale della chiave da importare, ad esempio PlaintextKeyMaterial.bin, HMAC_384_PlaintextKey.bin, RSA_3072_PrivateKey.der o ECC_NIST_P521_PrivateKey.der.

    • aes-key.bin è il file che contiene la chiave di crittografia simmetrica AES a 256 bit generata nel comando precedente.

    # Encrypt your key material with the AES symmetric encryption key $ openssl enc -id-aes256-wrap-pad \ -K "$(xxd -p < aes-key.bin | tr -d '\n')" \ -iv A65959A6 \ -in PlaintextKeyMaterial.bin\ -out key-material-wrapped.bin
  3. Esegui la crittografia della chiave di crittografia simmetrica AES con la chiave pubblica

    Questo comando esegue la crittografia della chiave di crittografia simmetrica AES con la chiave pubblica scaricata e l'algoritmo di wrapping RSAES_OAEP_SHA_1, applica la codifica DER e la salva nel file aes-key-wrapped.bin.

    In questo esempio di comando:

    • WrappingPublicKey.bin è il file che contiene la chiave di wrapping pubblica scaricata. Se hai scaricato la chiave pubblica dalla console, questo file è denominato wrappingKey_KMS key_key_ID_timestamp (ad esempio wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909).

    • aes-key.bin è il file che contiene la chiave di crittografia simmetrica AES a 256 bit generata nel primo comando in questa sequenza di esempi.

    # Encrypt your AES symmetric encryption key with the downloaded public key $ openssl pkeyutl \ -encrypt \ -in aes-key.bin \ -out aes-key-wrapped.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha1 \ -pkeyopt rsa_mgf1_md:sha1
  4. Generare il file da importare

    Concatena il file con il materiale della chiave crittografato e il file con la chiave AES crittografata. Salvali nel file EncryptedKeyMaterial.bin, che è il file che importerai in Fase 4: importare il materiale delle chiavi.

    In questo esempio di comando:

    • key-material-wrapped.bin è il file che contiene il materiale della chiave crittografato.

    • aes-key-wrapped.bin è il file che contiene la chiave di crittografia AES crittografata.

    # Combine the encrypted AES key and encrypted key material in a file $ cat aes-key-wrapped.bin key-material-wrapped.bin > EncryptedKeyMaterial.bin
RSA_AES_KEY_WRAP_SHA_256

L'algoritmo di wrapping RSA_AES_KEY_WRAP_SHA_256 prevede due operazioni di crittografia.

  1. Esegui la crittografia del materiale della chiave con una chiave simmetrica AES generata da te e un algoritmo di crittografia simmetrica AES.

  2. Esegui la crittografia della chiave simmetrica AES che hai usato con la chiave pubblica che hai scaricato e l'algoritmo di wrapping RSAES_OAEP_SHA_256.

L'algoritmo di wrapping RSA_AES_KEY_WRAP_SHA_256 richiede OpenSSL versione 3.x o versione successiva.

  1. Genera una chiave di crittografia simmetrica AES a 256-bit

    Questo comando genera una chiave di crittografia simmetrica AES composta da 256 bit casuali e la salva nel file aes-key.bin

    # Generate a 32-byte AES symmetric encryption key $ openssl rand -out aes-key.bin 32
  2. Esegui la crittografia del materiale della chiave con la chiave di crittografia simmetrica AES

    Questo comando esegue la crittografia del materiale chiave con la chiave di crittografia simmetrica AES e salva il materiale della chiave crittografato nel file key-material-wrapped.bin.

    In questo esempio di comando:

    • PlaintextKeyMaterial.bin è il file che contiene il materiale della chiave da importare, ad esempio PlaintextKeyMaterial.bin, HMAC_384_PlaintextKey.bin, RSA_3072_PrivateKey.der o ECC_NIST_P521_PrivateKey.der.

    • aes-key.bin è il file che contiene la chiave di crittografia simmetrica AES a 256 bit generata nel comando precedente.

    # Encrypt your key material with the AES symmetric encryption key $ openssl enc -id-aes256-wrap-pad \ -K "$(xxd -p < aes-key.bin | tr -d '\n')" \ -iv A65959A6 \ -in PlaintextKeyMaterial.bin\ -out key-material-wrapped.bin
  3. Esegui la crittografia della chiave di crittografia simmetrica AES con la chiave pubblica

    Questo comando esegue la crittografia della chiave di crittografia simmetrica AES con la chiave pubblica scaricata e l'algoritmo di wrapping RSAES_OAEP_SHA_256, applica la codifica DER e la salva nel file aes-key-wrapped.bin.

    In questo esempio di comando:

    • WrappingPublicKey.bin è il file che contiene la chiave di wrapping pubblica scaricata. Se hai scaricato la chiave pubblica dalla console, questo file è denominato wrappingKey_KMS key_key_ID_timestamp (ad esempio wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909).

    • aes-key.bin è il file che contiene la chiave di crittografia simmetrica AES a 256 bit generata nel primo comando in questa sequenza di esempi.

    # Encrypt your AES symmetric encryption key with the downloaded public key $ openssl pkeyutl \ -encrypt \ -in aes-key.bin \ -out aes-key-wrapped.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha256 \ -pkeyopt rsa_mgf1_md:sha256
  4. Generare il file da importare

    Concatena il file con il materiale della chiave crittografato e il file con la chiave AES crittografata. Salvali nel file EncryptedKeyMaterial.bin, che è il file che importerai in Fase 4: importare il materiale delle chiavi.

    In questo esempio di comando:

    • key-material-wrapped.bin è il file che contiene il materiale della chiave crittografato.

    • aes-key-wrapped.bin è il file che contiene la chiave di crittografia AES crittografata.

    # Combine the encrypted AES key and encrypted key material in a file $ cat aes-key-wrapped.bin key-material-wrapped.bin > EncryptedKeyMaterial.bin

AWS KMS supporta RSAES_OAEP_SHA_1 per chiavi di crittografia simmetriche (SYMMETRIC_DEFAULT), chiavi private a curva ellittica (ECC), chiavi private e chiavi HMAC. SM2

RSAES_OAEP_SHA_1 non è supportato per le chiavi private RSA. Inoltre, non puoi utilizzare una chiave di wrapping pubblica RSA_2048 con un algoritmo di wrapping RSAES_OAEP_SHA_* per eseguire il wrapping di una chiave privata ECC_NIST_P521 (secp521r1). Devi utilizzare una chiave di wrapping più grande o un algoritmo di wrapping RSA_AES_KEY_WRAP.

Nell'esempio seguente il materiale della chiave viene criptato con la chiave pubblica scaricata e l'algoritmo di wrapping RSAES_OAEP_SHA_1, quindi viene salvato nel file EncryptedKeyMaterial.bin.

In questo esempio:

  • WrappingPublicKey.bin è il file che contiene la chiave pubblica di wrapping scaricata.

  • PlaintextKeyMaterial.bin è il file che contiene il materiale della chiave da crittografare, ad esempio PlaintextKeyMaterial.bin, HMAC_384_PlaintextKey.bin o ECC_NIST_P521_PrivateKey.der.

$ openssl pkeyutl \ -encrypt \ -in PlaintextKeyMaterial.bin \ -out EncryptedKeyMaterial.bin \ -inkey WrappingPublicKey.bin \ -keyform DER \ -pubin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha1

Passa a Fase 4: importare il materiale delle chiavi.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.