As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Importar o material de chave — etapa 3: Criptografar o material de chave
Depois de fazer download da chave pública e importar o token, criptografe seu material de chaves usando a chave pública que você baixou e o algoritmo de empacotamento que você especificou. Se precisar substituir a chave pública ou o token de importação, ou alterar o algoritmo de empacotamento, você deverá baixar uma nova chave pública e importar o token. Para obter informações sobre as chaves públicas e os algoritmos de empacotamento que AWS KMS oferecem suporte, consulte Selecionar uma especificação de chave pública de empacotamento e. Selecionar um algoritmo de empacotamento
O material de chaves deve estar em formato binário. Para obter informações detalhadas, consulte Requisitos para material de chave importada.
Para pares de chaves assimétricas, criptografe e importe somente a chave privada. AWS KMS deriva a chave pública da chave privada.
A seguinte combinação é NOT suportada: ECC _ NIST _P521, a especificação da chave de empacotamento pública RSA _2048 e um algoritmo de empacotamento _ _ _*. RSAES OAEP SHA
Você não pode empacotar diretamente o material de chave ECC _ NIST _P521 com uma chave de empacotamento pública RSA _2048. Use uma chave de empacotamento maior ou um algoritmo de empacotamento RSA AES KEY _ _ WRAP _ _ _ SHA _*.
Os algoritmos de empacotamento RSA AES KEY WRAP _ _ RSA _ _ AES _ SHA _256 e KEY WRAP _ _ _ _ SHA _1 não são suportados nas regiões da China.
Normalmente, você criptografa seu material de chaves ao exportá-lo do seu módulo de segurança de hardware (HSM) ou sistema de gerenciamento de chaves. Para obter informações sobre como exportar material de chaves em formato binário, consulte a documentação do seu sistema HSM ou do sistema de gerenciamento de chaves. Você também pode consultar a seção a seguir, que fornece uma demonstração de prova de conceito usando o OpenSSL.
Ao criptografar o material de chaves, use o mesmo algoritmo de empacotamento que você especificou quando fez download da chave pública e do token de importação. Para encontrar o algoritmo de empacotamento que você especificou, consulte o evento de CloudTrail log da GetParametersForImportsolicitação associada.
Gerar material de chave para testes
Os SSL comandos Open a seguir geram material chave de cada tipo suportado para testes. Esses exemplos são fornecidos somente para testes e proof-of-concept demonstrações. Para sistemas de produção, use um método mais seguro para gerar o material de chaves, como um módulo de segurança de hardware ou um sistema de gerenciamento de chaves.
Para converter as chaves privadas de pares de chaves assimétricas em formato DER codificado, canalize o comando de geração de material de chave para o comando a seguir. openssl pkcs8
O topk8
parâmetro faz com SSL que Open use uma chave privada como entrada e retorne uma chave formatada PKCS #8. (O comportamento padrão é o oposto.)
openssl pkcs8 -topk8 -outform der -nocrypt
Os comandos a seguir geram material de chave de teste para cada tipo de chave compatível.
-
Chave de criptografia simétrica (32 bytes)
Esse comando gera uma chave simétrica de 256 bits (sequência aleatória de 32 bytes) e a salva no arquivo PlaintextKeyMaterial.bin
. Não é necessário codificar esse material de chaves.
openssl rand -out PlaintextKeyMaterial.bin 32
Somente nas regiões da China, você deve gerar uma chave simétrica de 128 bits (sequência aleatória de 16 bytes).
openssl rand -out PlaintextKeyMaterial.bin 16
-
HMACchaves
Esse comando gera uma sequência de bytes aleatória do tamanho especificado. Não é necessário codificar esse material de chaves.
O comprimento da HMAC chave deve corresponder ao comprimento definido pela especificação da KMS chave. Por exemplo, se a KMS chave for HMAC _384, você deverá importar uma chave de 384 bits (48 bytes).
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
-
RSAchaves privadas
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
-
ECCchaves privadas
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
-
SM2chaves privadas (somente regiões da China)
openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 | openssl pkcs8 -topk8 -outform der -nocrypt > SM2_PrivateKey.der
Exemplos de criptografia de material de chaves com o Open SSL
Os exemplos a seguir mostram como usar o Open SSL para criptografar seu material de chave com a chave pública que você baixou. Para criptografar seu material de chave usando uma chave SM2 pública (somente regiões da China), use a SM2OfflineOperationHelperclasse. Para obter mais informações sobre os principais tipos de material que cada algoritmo de embalagem suporta, consulteSelecionar um algoritmo de empacotamento.
Esses exemplos são apenas uma demonstração da prova de conceito. Para sistemas de produção, use um método mais seguro (como um sistema comercial HSM ou de gerenciamento de chaves) para gerar e armazenar seu material chave.
A seguinte combinação é NOT suportada: ECC _ NIST _P521, a especificação da chave de empacotamento pública RSA _2048 e um algoritmo de empacotamento _ _ _*. RSAES OAEP SHA
Você não pode empacotar diretamente o material de chave ECC _ NIST _P521 com uma chave de empacotamento pública RSA _2048. Use uma chave de empacotamento maior ou um algoritmo de empacotamento RSA AES KEY _ _ WRAP _ _ _ SHA _*.
- RSAES_OAEP_SHA_1
-
AWS KMS suporta RSAES _ OAEP _ SHA _1 para chaves de criptografia simétricas (SYMMETRIC_DEFAULT), chaves privadas de curva elíptica (ECC), SM2 chaves privadas e chaves. HMAC
RSAES_ OAEP _ SHA _1 não é compatível com chaves RSA privadas. Além disso, você não pode usar uma chave de empacotamento pública RSA _2048 com nenhum algoritmo de empacotamento RSAES _ OAEP _ SHA _* para encapsular uma chave privada _ _P521 (ECCNISTsecp521r1). Você deve usar uma chave de empacotamento pública maior ou um algoritmo de WRAP empacotamento RSA AES KEY _ _ _.
O exemplo a seguir criptografa seu material de chave com a chave pública que você baixou e com o algoritmo de encapsulamento RSAES OAEP _ _ SHA _1 e o salva no arquivo. EncryptedKeyMaterial.bin
Neste exemplo:
-
WrappingPublicKey.compartimento
é o arquivo que contém a chave pública de empacotamento baixada.
-
PlaintextKeyMaterial.compartimento
é o arquivo que contém o material de chave que você está criptografando, comoPlaintextKeyMaterial.bin
, HMAC_384_PlaintextKey.bin
ouECC_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 suporta RSAES _ OAEP _ SHA _256 para chaves de criptografia simétricas (SYMMETRIC_DEFAULT), chaves privadas de curva elíptica (ECC), SM2 chaves privadas e chaves. HMAC
RSAES_ OAEP _ SHA _256 não é compatível com chaves RSA privadas. Além disso, você não pode usar uma chave de empacotamento pública RSA _2048 com nenhum algoritmo de empacotamento RSAES _ OAEP _ SHA _* para encapsular uma chave privada _ _P521 (ECCNISTsecp521r1). Você deve usar uma chave pública maior ou um algoritmo de WRAP agrupamento RSA AES KEY _ _ _.
O exemplo a seguir criptografa o material da chave com a chave pública que você baixou e com o algoritmo de encapsulamento RSAES OAEP _ _ SHA _256 e o salva no arquivo. EncryptedKeyMaterial.bin
Neste exemplo:
-
WrappingPublicKey.compartimento
é o arquivo que contém a chave de empacotamento pública baixada. Se você fez download da chave pública do console, esse arquivo será chamado wrappingKey_KMS key_key_ID
_timestamp
(por exemplo, wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
).
-
PlaintextKeyMaterial.compartimento
é o arquivo que contém o material de chave que você está criptografando, como PlaintextKeyMaterial.bin
HMAC_384_PlaintextKey.bin
, ouECC_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
-
O algoritmo de empacotamento RSA AES KEY WRAP _ _ _ _ SHA _1 envolve duas operações de criptografia.
-
Criptografe seu material de chaves com uma chave AES simétrica que você gera e um algoritmo de criptografia AES simétrica.
-
Criptografe a chave AES simétrica que você usou com a chave pública que você baixou e o algoritmo de RSAES encapsulamento _ OAEP _ SHA _1.
O algoritmo de empacotamento RSA AES KEY WRAP _ _ _ _ SHA _1 requer a SSL versão Open 3. x ou mais tarde.
-
Gere uma chave de criptografia AES simétrica de 256 bits
Esse comando gera uma chave de criptografia AES simétrica que consiste em 256 bits aleatórios e a salva no arquivo aes-key.bin
# Generate a 32-byte AES symmetric encryption key
$
openssl rand -out aes-key.bin 32
-
Criptografe seu material de chave com a chave de criptografia AES simétrica
Esse comando criptografa o material da chave com a chave de criptografia AES simétrica e salva o material da chave criptografada no key-material-wrapped.bin
arquivo.
Neste comando de exemplo:
-
PlaintextKeyMaterial.compartimento
é o arquivo que contém o material chave que você está importando, comoPlaintextKeyMaterial.bin
, HMAC_384_PlaintextKey.bin
RSA_3072_PrivateKey.der
, ouECC_NIST_P521_PrivateKey.der
.
-
aes-key.bin
é o arquivo que contém a chave de criptografia AES simétrica de 256 bits que você gerou no comando anterior.
# 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
-
Criptografe sua chave de criptografia AES simétrica com a chave pública
Esse comando criptografa sua chave de criptografia AES simétrica com a chave pública que você baixou e o algoritmo de DER encapsulamento RSAES OAEP _ _ SHA _1, codifica-a e a salva no arquivo. aes-key-wrapped.bin
Neste comando de exemplo:
-
WrappingPublicKey.compartimento
é o arquivo que contém a chave de empacotamento pública baixada. Se você fez download da chave pública do console, esse arquivo será chamado wrappingKey_KMS key_key_ID
_timestamp
(por exemplo, wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
-
aes-key.bin
é o arquivo que contém a chave de criptografia AES simétrica de 256 bits que você gerou no primeiro comando nesta sequência de exemplo.
# 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
-
Gerar o arquivo a ser importado
Concatene o arquivo com o material da chave criptografada e o arquivo com a chave criptografada. AES Salve-os no arquivo EncryptedKeyMaterial.bin
, que é o arquivo que você importará no Etapa 4: Importar o material de chave.
Neste comando de exemplo:
# 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
-
O algoritmo de empacotamento RSA AES KEY WRAP _ _ _ _ _ SHA _256 envolve duas operações de criptografia.
-
Criptografe seu material de chaves com uma chave AES simétrica que você gera e um algoritmo de criptografia AES simétrica.
-
Criptografe a chave AES simétrica que você usou com a chave pública que você baixou e o algoritmo de RSAES encapsulamento _ OAEP _ SHA _256.
O algoritmo de empacotamento RSA AES KEY WRAP _ _ _ _ SHA _256 requer a SSL versão Open 3. x ou mais tarde.
-
Gere uma chave de criptografia AES simétrica de 256 bits
Esse comando gera uma chave de criptografia AES simétrica que consiste em 256 bits aleatórios e a salva no arquivo aes-key.bin
# Generate a 32-byte AES symmetric encryption key
$
openssl rand -out aes-key.bin 32
-
Criptografe seu material de chave com a chave de criptografia AES simétrica
Esse comando criptografa o material da chave com a chave de criptografia AES simétrica e salva o material da chave criptografada no key-material-wrapped.bin
arquivo.
Neste comando de exemplo:
-
PlaintextKeyMaterial.compartimento
é o arquivo que contém o material chave que você está importando, comoPlaintextKeyMaterial.bin
, HMAC_384_PlaintextKey.bin
RSA_3072_PrivateKey.der
, ouECC_NIST_P521_PrivateKey.der
.
-
aes-key.bin
é o arquivo que contém a chave de criptografia AES simétrica de 256 bits que você gerou no comando anterior.
# 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
-
Criptografe sua chave de criptografia AES simétrica com a chave pública
Esse comando criptografa sua chave de criptografia AES simétrica com a chave pública que você baixou e o algoritmo de DER encapsulamento RSAES OAEP _ _ SHA _256, codifica-a e a salva no arquivo. aes-key-wrapped.bin
Neste comando de exemplo:
-
WrappingPublicKey.compartimento
é o arquivo que contém a chave de empacotamento pública baixada. Se você fez download da chave pública do console, esse arquivo será chamado wrappingKey_KMS key_key_ID
_timestamp
(por exemplo, wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
-
aes-key.bin
é o arquivo que contém a chave de criptografia AES simétrica de 256 bits que você gerou no primeiro comando nesta sequência de exemplo.
# 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
-
Gerar o arquivo a ser importado
Concatene o arquivo com o material da chave criptografada e o arquivo com a chave criptografada. AES Salve-os no arquivo EncryptedKeyMaterial.bin
, que é o arquivo que você importará no Etapa 4: Importar o material de chave.
Neste comando de exemplo:
# Combine the encrypted AES key and encrypted key material in a file
$
cat aes-key-wrapped.bin
key-material-wrapped.bin
> EncryptedKeyMaterial.bin
Vá para Etapa 4: Importar o material de chave.