Sto usando OpenSSL per importare la mia chiave in AWS KMS, ma ricevo un errore “InvalidCiphertext”. Come posso risolvere questo problema?

5 minuti di lettura
0

Ho creato una chiave AWS KMS nel Servizio di gestione delle chiavi AWS (AWS KMS). Ho specificato l'origine del materiale chiave KMS come esterna, ho scelto RSAES_OAEP_SHA_256 come algoritmo per la chiave di wrapping e quindi ho usato OpenSSL per crittografare il mio materiale chiave con la chiave di wrapping. Tuttavia, quando importo il mio materiale chiave crittografato, la richiesta non riesce e ricevo un messaggio di errore relativo a “InvalidCiphertext”. Come posso evitare questo errore di importazione?

Breve descrizione

Per impostazione predefinita, OpenSSL utilizza la funzione hash SHA-1.

Per evitare errori di importazione quando usi l'algoritmo RSAES_OAEP_SHA_256 (funzione hash SHA-256), crittografa il materiale chiave con OpenSSL usando il comando openssl pkeyutl e specifica i parametri –pkeyopt rsa_padding_mode:oaep e –pkeyopt rsa_oaep_md:sha256.

La procedura completa per importare materiale chiave in AWS KMS utilizzando OpenSSL e RSAES_OAEP_SHA_256 è la seguente:

1.    Crea una chiave KMS utilizzando esterno per l'origine del materiale chiave.

2.    Scarica la chiave wrapping (pubblica) e il token di importazione.

3.    Genera una chiave simmetrica a 256 bit.

4.    Verifica che la tua versione di OpenSSL supporti openssl pkeyutl.

5.    Crittografa il materiale chiave con la chiave wrapping.

6.    Importa il tuo materiale chiave crittografato.

**Nota:**Se stai utilizzando l'algoritmo di crittografia RSAES_OAEP_SHA_1 per la tua chiave wrapping, consulta Come importare il materiale chiave.

Risoluzione

Crea una chiave KMS utilizzando Esterno per l'origine del materiale chiave

Esegui i seguenti comandi dell’Interfaccia della linea di comando AWS (AWS CLI) per creare un KMS per materiale chiave esterno.

Nota:

export REGION=us-east-1
export KEY_ALIAS=kms_key_with_externalmaterial
export KEY_ID=`aws kms create-key --region $REGION --origin EXTERNAL --description $KEY_ALIAS --query KeyMetadata.KeyId --output text`
aws kms --region $REGION create-alias --alias-name alias/$KEY_ALIAS --target-key-id $KEY_ID

Lo stato della tua chiave KMS appena creata è Importazione in sospeso finché non importi il materiale chiave. Esegui il comando seguente per visualizzare lo stato della chiave.

aws kms --region $REGION describe-key --key-id $KEY_ID

Scarica la chiave wrapping (pubblica) e il token di importazione

Esegui i seguenti comandi dell'interfaccia della linea di comando AWS per ottenere i valori PublicKey (chiave di avvolgimento) e ImportToken, decodifica entrambi i valori utilizzando base64 e quindi archivia questi valori in file separati. Nota che l'algoritmo wrapping RSAES_OAEP_SHA_256 è specificato nel comando get-parameters-for-import.

export KEY_PARAMETERS=`aws kms --region $REGION get-parameters-for-import --key-id $KEY_ID --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048`
echo $KEY_PARAMETERS | awk '{print $7}' | tr -d '",' | base64 --decode > PublicKey.bin
echo $KEY_PARAMETERS | awk '{print $5}' | tr -d '",' | base64 --decode > ImportToken.bin

Questi comandi memorizzano la chiave wrapping in PublicKey.bin e il token di importazione in ImportToken.bin.

Genera una chiave simmetrica a 256 bit

Il materiale chiave deve essere una chiave simmetrica a 256 bit (32 byte). Esegui uno dei seguenti comandi per generare la chiave:

OpenSSL

openssl rand -out PlaintextKeyMaterial.bin 32

-oppure-

dd

dd if=/dev/urandom of=PlaintextKeyMaterial.bin bs=32 count=1

Verifica che la tua versione di OpenSSL supporti openssl pkeyutl

Per crittografare il materiale chiave con RSAES_OAEP_SHA_256 come algoritmo wrapping, usa il comando openssl pkeyutl.

**Importante:**Questo comando è disponibile solo su OpenSSL 1.0.2 e versioni successive.

Se utilizzi un computer Linux basato su RHEL, ad esempio un'istanza Amazon Elastic Compute Cloud (Amazon EC2) lanciata con un'AMI Amazon Linux, segui questi passaggi.

1.    Esegui il seguente comando per verificare la tua versione di OpenSSL.

openssl version

2.    Per aggiornare OpenSSL, esegui il comando seguente.

sudo yum –y update openssl

Se usi macOS, segui questi passaggi.

1.    Esegui i seguenti comandi Homebrew.

brew update
brew upgrade openssl
brew info openssl

2.    L'ultimo comando mostra che OpenSSL è installato in /usr/local/opt/openssl/bin/. Conferma la versione di OpenSSL eseguendo questo comando.

/usr/local/opt/openssl/bin/openssl version

3.    Per utilizzare sempre la versione più recente di OpenSSL, modifica ~/.bash_profile e aggiungi la riga seguente alla fine del file:

export PATH="/usr/local/opt/openssl/bin:$PATH"

4.    Dopo aver aggiunto la riga, esegui il seguente comando.

source ~/.bash_profile

5.    Per verificare la modifica nel tuo ambiente macOS, esegui il seguente comando.

echo $PATH
openssl version

Crittografa il materiale chiave con la chiave wrapping

Esegui il seguente comando per crittografare il materiale chiave utilizzando la versione più recente di OpenSSL e la chiave wrapping che hai scaricato in precedenza.

**Nota:**La chiave wrapping è memorizzata in PublicKey.bin.

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

Il comando genera EncryptedKeyMaterial.bin. Importi questo valore come materiale chiave crittografato nel KMS.

Importa il tuo materiale chiave crittografato

Esegui il seguente comando AWS CLI per importare il materiale della chiave crittografata nella chiave KMS.

aws kms --region $REGION import-key-material --key-id $KEY_ID --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE

Al termine dell'importazione, lo stato della chiave cambia in Abilitato. Esegui il seguente comando per verificare lo stato della chiave.

aws kms --region $REGION describe-key --key-id $KEY_ID

Informazioni correlate

Informazioni sul materiale chiave importato

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa