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

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

キーのインポート

重要

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

対称キーのインポート

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

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

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

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

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

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

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

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

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

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

証明書を取得したら、 KeyMaterialType の importKey コマンドと および を使用して、ルート証明書を AWS Payment Cryptography 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 形式とも呼ばれる 2 つのパス形式以外のCMS TR-34.2012 形式を指定します。

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

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

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

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

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

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

注記

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

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

get-parameters-for-import キー交換時に KEY_CRYPTOGRAM. WrappingKeyAlgorithm can be RSA_2048 というキーマテリアルタイプを使用してインポートプロセスを初期化するには、 を呼び出しますTDES。RSA_3072 または RSA_4096 は、 TDES または AES-128 キーを交換するときに使用できます。これにより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 のパブリックキーを (暗号化) 証明書 () として指定しますWrappingKeyCertificate。信頼チェーンが必要な場合は、 WrappingKeyCertificateChain ステップ #1 のレスポンスフィールドに含まれます。からキーをエクスポートするときはHSM、形式を RSA、パディングモード = PKCS#1 v2.2 OAEP (256 SHA または 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__SYMMETRICDATA_ENCRYPTION_ などKEY) の場合、キーは暗号化オペレーションに直接使用できます。

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

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

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

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

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

は既に をインポートKEKしており、 キーARN (または keyAlias) が使用可能であることが前提です。

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

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

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

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

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

importKey コマンドを呼び出す場合、 WrappingKeyIdentifier はキーARN暗号化キーのキー (またはエイリアス) であり、 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. Payment Cryptography AWS へのパブリックキー証明書のインポート

公開キーをインポートできるようになりました。公開キーのインポートには 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" } }