キーのインポート - AWS Payment Cryptography

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

キーのインポート

重要

例としては、AWS CLI V2 の最新バージョンが必要になる場合があります。開始する前に、最新バージョン にアップグレードしていることを確認してください。

対称キーのインポート

非対称手法 (TR-34) によるキーのインポート

AWS Payment Cryptography キー暗号化キーのインポートプロセス

概要:TR-34 は RSA 非対称暗号を利用して、交換用の対称キーを暗号化し、データの出所を確認 (署名) します。これにより、ラップされたキーの機密性 (暗号化) と完全性 (署名) の両方が保証されます。

独自のキーをインポートしたい場合は、Github のサンプルプロジェクトをチェックしてください。他のプラットフォームからキーをインポート/エクスポートする方法については、そのプラットフォームのユーザーガイドを参照してください。

1. インポートの初期化コマンドを呼び出す

get-parameters-for-import を呼び出して、インポートプロセスを初期化します。この API は、キーをインポートする目的でキーペアを生成し、キーに署名して、証明書と証明書ルートを返します。最終的には、エクスポートするキーはこのキーを使用して暗号化する必要があります。TR-34 の用語では、これは KRD 証明書と呼ばれています。これらの証明書は有効期間が短く、この目的のみを目的としていることに注意してください。

2. 公開証明書をキーソースシステムにインストールする

多くの HSM では、ステップ 1 で生成した公開証明書を使用してキーをエクスポートするために、そのパブリック証明書をインストール/ロード/信頼する必要がある場合があります。

3. パブリックキーを生成し、証明書のルートを AWS Payment Cryptography に提供する

送信されたペイロードの整合性を確保するために、送信側 (キー分散ホスト (KDH) と呼ばれる) によって署名されます。送信側はこの目的のためにパブリックキーを生成し、 AWS Payment Cryptography に返すことができるパブリックキー証明書 (X509) を作成します。 AWS Private CA は証明書を生成するオプションの 1 つですが、使用する認証局に制限はありません。

証明書を取得したら、 の importKey コマンドと および を使用して、ルート証明書を AWS Payment Cryptography KeyMaterialType ROOT_PUBLIC_KEY_CERTIFICATE KeyUsageType にロードしますTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE

4. ソースシステムからキーをエクスポートする

多くの HSMs および関連システムは、TR-34 標準を使用してキーをエクスポートする機能をサポートしています。ステップ 1 の公開キーを KRD (暗号化) 証明書として指定し、ステップ 3 の公開キーを KDH (署名) 証明書として指定する必要があります。 AWS Payment Cryptography にインポートするには、TR-34 Diebold 形式とも呼ばれる TR-34.2012 以外の 2 つのパス形式を指定します。

5. インポートキーを呼び出す

最後のステップとして、 の を使用して importKey API KeyMaterialType を呼び出しますTR34_KEY_BLOCKcertificate-authority-public-key-identifier は、ステップ 3 でインポートしたルート CA の KeyArn で、key-material は、ステップ 4 でラップされたキーマテリアルになり、signing-key-certificate は、ステップ 3 のリーフ証明書です。また、ステップ 1 のインポートトークンを指定する必要があります。

6. 暗号化オペレーションやその後のインポートのためにインポートしたキーを使用する

インポートされた KeyUsage が TR31_K0_KEY_ENCRYPTION_KEY の場合、このキーは TR-31 を使用した後続のキーインポートに使用できます。キータイプが他のタイプ (TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY など) だった場合は、そのキーを暗号オペレーションに直接使用できます。

非対称手法を使用したキーのインポート (RSA Unwrap)

概要: AWS Payment Cryptography は、TR-34 が不可能な場合、キー交換のための RSA ラップ/アンラップをサポートしています。TR-34 と同様に、この手法では RSA 非対称暗号化を使用して対称キーを暗号化し、交換します。ただし、TR-34 とは異なり、このメソッドには送信側によって署名されたペイロードはありません。また、この RSA ラップ手法は、キーブロックを含めないことにより、転送中にキーメタデータの整合性を維持しません。

注記

RSA ラップを使用して、TDES および AES-128 キーをインポートまたはエクスポートできます。

1. インポートの初期化コマンドを呼び出す

get-parameters-for-import を呼び出して、キーマテリアルタイプが KEY_CRYPTOGRAM のインポートプロセスを初期化します。TDES キーの交換時に RSA_2048 に WrappingKeyAlgorithm することができます。TDES または AES-128 キーを交換する場合は、RSA_3072 または RSA_4096 を使用できます。この API は、キーのインポートのためにキーペアを生成し、証明書ルートを使用してキーに署名し、証明書と証明書ルートの両方を返します。最終的には、エクスポートするキーはこのキーを使用して暗号化する必要があります。これらの証明書は有効期間が短く、この目的のみを目的としていることに注意してください。

$ aws payment-cryptography get-parameters-for-import --key-material-type KEY_CRYPTOGRAM --wrapping-key-algorithm RSA_4096
{ "ImportToken": "import-token-bwxli6ocftypneu5", "ParametersValidUntilTimestamp": 1698245002.065, "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....", "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....", "WrappingKeyAlgorithm": "RSA_4096" }
2. 公開証明書をキーソースシステムにインストールする

多くの HSMs、それを使用してキーをエクスポートするために、ステップ 1 で生成されたパブリック証明書 (およびそのルート) をインストール/ロード/信頼する必要がある場合があります。

3. ソースシステムからキーをエクスポートする

多くの HSMsおよび関連システムは、RSA ラップを使用してキーをエクスポートする機能をサポートしています。ステップ 1 のパブリックキーを (暗号化) 証明書 (WrappingKey証明書) として指定します。信頼チェーンが必要な場合は、 WrappingKeyCertificateChain ステップ 1 のレスポンスフィールドに含まれています。HSM からキーをエクスポートするときは、RSA、パディングモード = PKCS#1 v2.2 OAEP (SHA 256 または SHA 512 を使用) の形式を指定します。

4. インポートキーを呼び出す

最後のステップとして、 の を使用して importKey API KeyMaterialType を呼び出しますKeyMaterial。ステップ 1 のインポートトークンと、ステップ 3 の key-material (ラップされたキーマテリアル) が必要です。RSA ラップはキーブロックを使用しないため、キーパラメータ (キーの使用法など) を指定する必要があります。

$ cat import-key-cryptogram.json { "KeyMaterial": { "KeyCryptogram": { "Exportable": true, "ImportToken": "import-token-bwxli6ocftypneu5", "KeyAttributes": { "KeyAlgorithm": "AES_128", "KeyClass": "SYMMETRIC_KEY", "KeyModesOfUse": { "Decrypt": true, "DeriveKey": false, "Encrypt": true, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": true, "Verify": false, "Wrap": true }, "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY" }, "WrappedKeyCryptogram": "18874746731....", "WrappingSpec": "RSA_OAEP_SHA_256" } } }
$ aws payment-cryptography import-key --cli-input-json file://import-key-cryptogram.json
{ "Key": { "KeyOrigin": "EXTERNAL", "Exportable": true, "KeyCheckValue": "DA1ACF", "UsageStartTimestamp": 1697643478.92, "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "CreateTimestamp": 1697643478.92, "KeyState": "CREATE_COMPLETE", "KeyAttributes": { "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": true, "Unwrap": true, "Verify": false, "DeriveKey": false, "Decrypt": true, "NoRestrictions": false, "Sign": false, "Wrap": true, "Generate": false }, "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY" }, "KeyCheckValueAlgorithm": "CMAC" } }
5. 暗号化オペレーションやその後のインポートのためにインポートしたキーを使用する

インポートされた KeyUsage が TR31_K0_KEY_ENCRYPTION_KEY の場合、このキーは TR-31 を使用した後続のキーインポートに使用できます。キータイプが他のタイプ (TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY など) だった場合は、そのキーを暗号オペレーションに直接使用できます。

あらかじめ設定されているキー交換キー (TR-31) を使用して対称キーをインポートします。

AWS Payment Cryptography 対称キーのインポートプロセス

パートナーが複数のキーを交換する場合 (またはキーローテーションをサポートする場合)、まずペーパーキーコンポーネントなどの手法を使用して、または Payment Cryptography AWS の場合は TR-34 を使用して、初期キー暗号化キー (KEK) を交換するのが一般的です。

KEK が確立されたら、このキーを使用して後続のキー (他の KEKs) を転送できます。 AWS Payment Cryptography は、HSM ベンダーによって広く使用およびサポートされている ANSI TR-31 を使用したこの種のキー交換をサポートしています。

1. キー暗号化キー (KEK) をインポートする

KEK を既にインポートしていて、KeyArn (または KeyAlias) が使用可能であることを前提としています。

2. ソースプラットフォームでキーを作成する

キーがまだ存在しない場合は、ソースプラットフォームでキーを作成します。逆に、 AWS Payment Cryptography でキーを作成し、代わりに export コマンドを使用することもできます。

3. ソースプラットフォームからキーをエクスポートする

エクスポートするときは、エクスポート形式を必ず TR-31 として指定してください。ソースプラットフォームでは、エクスポートするキーと使用するキー暗号化キーの入力も求められます。

4. AWS Payment Cryptography にインポートする

importKey コマンドを呼び出す場合、 WrappingKeyIdentifier はキー暗号化キーの keyARN (またはエイリアス) で、 WrappedKeyBlock はソースプラットフォームからの出力です。

$ aws payment-cryptography import-key \ --key-material="Tr31KeyBlock={WrappingKeyIdentifier="arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",\ WrappedKeyBlock="D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"}"
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "KeyAttributes": { "KeyUsage": "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": true, "Decrypt": true, "Wrap": true, "Unwrap": true, "Generate": false, "Sign": false, "Verify": false, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "0A3674", "KeyCheckValueAlgorithm": "CMAC", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "EXTERNAL", "CreateTimestamp": "2023-06-02T07:38:14.913000-07:00", "UsageStartTimestamp": "2023-06-02T07:38:14.857000-07:00" } }

非対称 (RSA) キーのインポート

RSA 公開キーのインポート

AWS Payment Cryptography は、X.509 証明書の形式のパブリック RSA キーのインポートをサポートしています。証明書をインポートするには、まずそのルート証明書をインポートする必要があります。すべての証明書は、インポート時に有効期限が切れていない必要があります。証明書は PEM 形式で、base64 でエンコードされている必要があります。

1. ルート証明書を AWS Payment Cryptography にインポートする
$ aws payment-cryptography import-key \ --key-material='{"RootCertificatePublicKey":{"KeyAttributes":{"KeyAlgorithm":"RSA_2048", \ "KeyClass":"PUBLIC_KEY", "KeyModesOfUse":{"Verify": true},"KeyUsage":"TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \ "PublicKeyCertificate":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKVENDQWcyZ0F3SUJBZ0lCWkRBTkJna3Foa2lHOXcwQkFR..."}}'
{ "Key": { "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", "KeyAttributes": { "KeyAlgorithm": "RSA_2048", "KeyClass": "PUBLIC_KEY", "KeyModesOfUse": { "Decrypt": false, "DeriveKey": false, "Encrypt": false, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": false, "Verify": true, "Wrap": false }, "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE" }, "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2023-08-08T18:52:01.023000+00:00" } }
2. パブリックキー証明書を AWS Payment Cryptography にインポートする

公開キーをインポートできるようになりました。公開キーのインポートには 2 つのオプションがあり、キーの目的が署名の検証である場合(TR-34を使用してインポートする場合)、TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE を使用できます。別のシステムで使用するデータを暗号化する場合、TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION を使用できます。

$ aws payment-cryptography import-key \ --key-material='{"TrustedCertificatePublicKey":{"CertificateAuthorityPublicKeyIdentifier":"arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", \ "KeyAttributes":{"KeyAlgorithm":"RSA_2048","KeyClass":"PUBLIC_KEY","KeyModesOfUse":{"Verify":true},"KeyUsage":"TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"},\ "PublicKeyCertificate":"LS0tLS1CRUdJTiB..."}}'
{ "Key": { "CreateTimestamp": "2023-08-08T18:55:46.815000+00:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk", "KeyAttributes": { "KeyAlgorithm": "RSA_4096", "KeyClass": "PUBLIC_KEY", "KeyModesOfUse": { "Decrypt": false, "DeriveKey": false, "Encrypt": false, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": false, "Verify": true, "Wrap": false }, "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE" }, "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2023-08-08T18:55:46.815000+00:00" } }