翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
キーマテリアルのインポート ステップ 3: キーマテリアルを暗号化する
パブリックキーとインポートトークンをダウンロードした後、ダウンロードしたパブリックキーと指定したラップアルゴリズムを使用してキーマテリアルを暗号化します。パブリックキーまたはインポートトークンを置き換える必要がある場合、あるいはラップアルゴリズムを変更する必要がある場合は、新しいパブリックキーとインポートトークンをダウンロードする必要があります。が AWS KMS サポートするパブリックキーとラップアルゴリズムについては、ラップパブリックキーの仕様を選択「」および「」を参照してくださいラップアルゴリズムの選択。
キーマテリアルはバイナリ形式である必要があります。詳細については、「インポートされたキーマテリアルの要件」を参照してください。
非対称キーペアの場合、プライベートキーのみを暗号化してインポートします。 AWS KMS は、プライベートキーからパブリックキーを取得します。
次の組み合わせがサポートされNOTています: ECC_NIST_P521 キーマテリアル、RSA_2048 パブリックラッピングキー仕様、および RSAESOAEP__SHA* ラッピングアルゴリズム。
ECC_NISTP521 キーマテリアルを RSA_2048 パブリックラッピングキーで直接ラップすることはできません。より大きなラッピングキーまたは RSA_AES_KEYWRAP_SHA_* ラッピングアルゴリズムを使用します。
RSA_AESKEY_WRAP_SHA_256 および RSA_AESKEY_WRAP_SHA_1 ラップアルゴリズムは、中国リージョンではサポートされていません。
通常、キーマテリアルは、ハードウェアセキュリティモジュール (HSM) またはキー管理システムからエクスポートするときに暗号化します。バイナリ形式でキーマテリアルをエクスポートする方法については、 HSMまたは キー管理システムのドキュメントを参照してください。Open を使用した概念実証のデモンストレーションを提供する次のセクションを参照することもできますSSL。
キーマテリアルを暗号化する場合、パブリックキーとインポートトークンをダウンロードしたときに指定した、同じラップアルゴリズムを使用します。指定したラッピングアルゴリズムを見つけるには、関連するGetParametersForImportリクエストの CloudTrail ログイベントを参照してください。
テスト用のキーマテリアルを生成
次の OpenSSL コマンドは、テスト用にサポートされている各タイプのキーマテリアルを生成します。これらの例は、テストと proof-of-concept デモンストレーションのみを目的としています。本稼働システムの場合、ハードウェアセキュリティモジュールやキー管理システムなど、より安全な方法を使用してキーマテリアルを生成します。
非対称キーペアのプライベートキーを DERエンコード形式に変換するには、キーマテリアル生成コマンドを次のopenssl pkcs8
コマンドにパイプします。topk8
パラメータは、プライベートキーを入力として受け取り、PKCS#8 形式のキーを返すように OpenSSL に指示します。(デフォルトの動作は逆です)
openssl pkcs8 -topk8 -outform der -nocrypt
次のコマンドは、サポートされている各キータイプのテストキーマテリアルを生成します。
-
対称暗号化キー (32 バイト)
このコマンドは、256 ビット対称キー (32 バイトのランダム文字列) を生成し、PlaintextKeyMaterial.bin
ファイルに保存します。このキーマテリアルをエンコードする必要はありません。
openssl rand -out PlaintextKeyMaterial.bin 32
中国リージョンでのみ、128 ビット対称キー (16 バイトのランダム文字列) を生成する必要があります。
openssl rand -out PlaintextKeyMaterial.bin 16
-
HMAC キー
このコマンドは、指定したサイズのランダムバイト文字列を生成します。このキーマテリアルをエンコードする必要はありません。
HMAC キーの長さは、キーのキー仕様で定義された長さと一致する必要がありますKMS。例えば、KMSキーが HMAC_384 の場合、384 ビット (48 バイト) キーをインポートする必要があります。
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
-
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
-
ECC プライベートキー
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 プライベートキー (中国リージョンのみ)
openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 | openssl pkcs8 -topk8 -outform der -nocrypt > SM2_PrivateKey.der
Open を使用したキーマテリアルの暗号化の例SSL
次の例は、OpenSSL を使用して、ダウンロードしたパブリックキーでキーマテリアルを暗号化する方法を示しています。SM2 パブリックキー (中国リージョンのみ) を使用してキーマテリアルを暗号化するには、 SM2OfflineOperationHelper クラス を使用します。各ラッピングアルゴリズムがサポートするキーマテリアルタイプの詳細については、「」を参照してくださいラップアルゴリズムの選択。
これらの例では、概念実証デモのみです。本番システムの場合は、より安全な方法 (商用HSMまたはキー管理システムなど) を使用して、キーマテリアルを生成して保存します。
次の組み合わせがサポートされNOTています: ECC_NIST_P521 キーマテリアル、RSA_2048 パブリックラッピングキー仕様、および RSAESOAEP__SHA* ラッピングアルゴリズム。
ECC_NISTP521 キーマテリアルを RSA_2048 パブリックラッピングキーで直接ラップすることはできません。より大きなラッピングキーまたは RSA_AES_KEYWRAP_SHA_* ラッピングアルゴリズムを使用します。
- RSAES_OAEP_SHA_1
-
AWS KMS は、対称暗号化キー (RSAESOAEPSHA_DEFAULT)、楕円曲線 (ECC) プライベートキー、SM2プライベートキー、および HMACキーの SYMMETRIC__1 をサポートします。
RSAES_OAEPSHA_1 はRSAプライベートキーではサポートされていません。また、RSA___OAEPSHA* ラップアルゴリズムで RSAES_2048 パブリックラッピングキーを使用して ECC_NIST_P521 (secp521r1) プライベートキーをラップすることはできません。より大きなパブリックラッピングキーまたは RSA_AESKEY_WRAP ラップアルゴリズムを使用する必要があります。
次の例では、ダウンロードしたパブリックキーと RSAES_OAEPSHA_1 ラップアルゴリズムを使用してキーマテリアルを暗号化し、 EncryptedKeyMaterial.bin
ファイルに保存します。
この例では、以下のようになっています。
$
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 は、対称暗号化キー (RSAESOAEPSHA_DEFAULT)、楕円曲線 (ECC) プライベートキー、SM2プライベートキー、および HMACキーの SYMMETRIC__256 をサポートしています。
RSAES_OAEPSHA_256 はRSAプライベートキーではサポートされていません。また、RSA___OAEPSHA* ラップアルゴリズムで RSAES_2048 パブリックラッピングキーを使用して ECC_NIST_P521 (secp521r1) プライベートキーをラップすることはできません。より大きなパブリックキーまたは RSA_AES_WRAP KEYラップアルゴリズムを使用する必要があります。
次の例では、ダウンロードしたパブリックキーと RSAES_OAEPSHA_256 ラップアルゴリズムを使用してキーマテリアルを暗号化し、 EncryptedKeyMaterial.bin
ファイルに保存します。
この例では、以下のようになっています。
-
WrappingPublicKey.bin
は、ダウンロードしたパブリックラッピングキーを含むファイルです。コンソールからパブリックキーをダウンロードした場合、このファイルの名前は wrappingKey_KMS key_key_ID
_timestamp
(例えば、wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
) となります。
-
PlaintextKeyMaterial.bin
は、、PlaintextKeyMaterial.bin
、 HMAC_384_PlaintextKey.bin
など、暗号化するキーマテリアルを含むファイルです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
-
RSA_AES_KEY_WRAPSHA__1 ラップアルゴリズムには、2 つの暗号化オペレーションが含まれます。
-
生成したAES対称キーと対称暗号化アルゴリズムを使用してキーマテリアルをAES暗号化します。
-
ダウンロードしたパブリックキーと AES RSAES_OAEP_SHA1 ラップアルゴリズムで使用した対称キーを暗号化します。
RSA_AES_KEY_WRAPSHA__1 ラップアルゴリズムには Open SSLバージョン 3.x 以降が必要です。
-
256 ビットAES対称暗号化キーを生成する
このコマンドは、256 AES 個のランダムビットで構成される対称暗号化キーを生成し、 aes-key.bin
ファイルに保存します。
# Generate a 32-byte AES symmetric encryption key
$
openssl rand -out aes-key.bin 32
-
AES 対称暗号化キーを使用してキーマテリアルを暗号化する
このコマンドは、AES対称暗号化キーを使用してキーマテリアルを暗号化し、暗号化されたキーマテリアルを key-material-wrapped.bin
ファイルに保存します。
このコマンド例では、
-
PlaintextKeyMaterial.bin
は、インポートするキーマテリアルを含むファイルです。たとえば、、PlaintextKeyMaterial.bin
HMAC_384_PlaintextKey.bin
、RSA_3072_PrivateKey.der
、または ですECC_NIST_P521_PrivateKey.der
。
-
aes-key.bin
は、前のコマンドで生成した 256 ビットAES対称暗号化キーを含むファイルです。
# 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
-
AES パブリックキーを使用して対称暗号化キーを暗号化する
このコマンドは、ダウンロードしたパブリックキーと AES RSAES_OAEPSHA_1 ラップアルゴリズムを使用して対称暗号化キーを暗号化し、 DERでエンコードして、 aes-key-wrapped.bin
ファイルに保存します。
このコマンド例では、
-
WrappingPublicKey.bin
は、ダウンロードしたパブリックラッピングキーを含むファイルです。コンソールからパブリックキーをダウンロードした場合、このファイルの名前は wrappingKey_KMS key_key_ID
_timestamp
(例えば、wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
) となります
-
aes-key.bin
は、このシーケンス例の最初のコマンドで生成した AES 256 ビット対称暗号化キーを含むファイルです。
# 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
-
インポートするファイルを生成する
ファイルを暗号化されたキーマテリアルと連結し、 ファイルを暗号化されたAESキーと連結します。これらを EncryptedKeyMaterial.bin
ファイルに保存します。このファイルは、ステップ 4: キーマテリアルのインポート にインポートするファイルです。
このコマンド例では、
# 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
-
RSA_AES_KEY_WRAPSHA__256 ラップアルゴリズムには、2 つの暗号化オペレーションが含まれます。
-
生成したAES対称キーと対称暗号化アルゴリズムを使用してキーマテリアルをAES暗号化します。
-
ダウンロードしたパブリックキーと AES RSAES_OAEP_SHA256 ラップアルゴリズムで使用した対称キーを暗号化します。
RSA_AES_KEYWRAP_SHA__256 ラップアルゴリズムには Open SSLバージョン 3.x 以降が必要です。
-
256 ビットAES対称暗号化キーを生成する
このコマンドは、256 AES 個のランダムビットで構成される対称暗号化キーを生成し、 aes-key.bin
ファイルに保存します。
# Generate a 32-byte AES symmetric encryption key
$
openssl rand -out aes-key.bin 32
-
AES 対称暗号化キーを使用してキーマテリアルを暗号化する
このコマンドは、AES対称暗号化キーを使用してキーマテリアルを暗号化し、暗号化されたキーマテリアルを key-material-wrapped.bin
ファイルに保存します。
このコマンド例では、
-
PlaintextKeyMaterial.bin
は、インポートするキーマテリアルを含むファイルです。たとえば、、PlaintextKeyMaterial.bin
HMAC_384_PlaintextKey.bin
、RSA_3072_PrivateKey.der
、または ですECC_NIST_P521_PrivateKey.der
。
-
aes-key.bin
は、前のコマンドで生成した 256 ビットAES対称暗号化キーを含むファイルです。
# 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
-
AES パブリックキーを使用して対称暗号化キーを暗号化する
このコマンドは、ダウンロードしたパブリックキーと AES RSAES_OAEPSHA_256 ラップアルゴリズムを使用して対称暗号化キーを暗号化し、 DERでエンコードして、 aes-key-wrapped.bin
ファイルに保存します。
このコマンド例では、
-
WrappingPublicKey.bin
は、ダウンロードしたパブリックラッピングキーを含むファイルです。コンソールからパブリックキーをダウンロードした場合、このファイルの名前は wrappingKey_KMS key_key_ID
_timestamp
(例えば、wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
) となります
-
aes-key.bin
は、このシーケンス例の最初のコマンドで生成した AES 256 ビット対称暗号化キーを含むファイルです。
# 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
-
インポートするファイルを生成する
ファイルを暗号化されたキーマテリアルと連結し、 ファイルを暗号化されたAESキーと連結します。これらを EncryptedKeyMaterial.bin
ファイルに保存します。このファイルは、ステップ 4: キーマテリアルのインポート にインポートするファイルです。
このコマンド例では、
# Combine the encrypted AES key and encrypted key material in a file
$
cat aes-key-wrapped.bin
key-material-wrapped.bin
> EncryptedKeyMaterial.bin
ステップ 4: キーマテリアルのインポート に進みます。