Clés d'importation - AWS Cryptographie des paiements

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Clés d'importation

Important

Les exemples peuvent nécessiter la dernière version de l'AWS CLI V2. Avant de commencer, assurez-vous d'avoir effectué la mise à niveau vers la dernière version.

Importation de clés symétriques

Importation de clés à l'aide de techniques asymétriques (TR-34)

AWS Processus d'importation des clés de chiffrement des clés de chiffrement des paiements

Vue d'ensemble : Le TR-34 utilise le chiffrement asymétrique RSA pour chiffrer les clés symétriques à des fins d'échange et pour garantir la source des données (signature). Cela garantit à la fois la confidentialité (cryptage) et l'intégrité (signature) de la clé encapsulée.

Si vous souhaitez importer vos propres clés, veuillez consulter l'exemple de projet sur Github. Pour obtenir des instructions sur la façon d'importer/exporter des clés depuis d'autres plateformes, veuillez consulter le guide de l'utilisateur de ces plateformes.

1. Appelez la commande d'initialisation de l'importation

Appelez get-parameters-for-import pour initialiser le processus d'importation. Cette API générera une paire de clés à des fins d'importation de clés, signera la clé et renverra le certificat et la racine du certificat. En fin de compte, la clé à exporter doit être chiffrée à l'aide de cette clé. Dans la terminologie du TR-34, cela s'appelle le certificat KRD. Notez que ces certificats sont de courte durée et ne sont destinés qu'à cette fin.

2. Installer le certificat public sur le système source clé

Avec de nombreux HSM, vous devrez peut-être installer/charger/approuver le certificat public généré à l'étape 1 afin d'exporter les clés à l'aide de celui-ci.

3. Générez une clé publique et fournissez la racine du certificat à AWS Payment Cryptography

Pour garantir l'intégrité de la charge utile transmise, celle-ci est signée par l'expéditeur (connu sous le nom de Key Distribution Host ou KDH). L'expéditeur souhaitera générer une clé publique à cette fin, puis créer un certificat de clé publique (X509) qui pourra être renvoyé à AWS Payment Cryptography. AWS Private CA est une option pour générer des certificats, mais il n'existe aucune restriction quant à l'autorité de certification utilisée.

Une fois que vous avez obtenu le certificat, vous devez charger le certificat racine dans AWS Payment Cryptography à l'aide des importKey commandes KeyMaterialType de ROOT_PUBLIC_KEY_CERTIFICATE et KeyUsageType deTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE.

4. Exporter la clé depuis le système source

De nombreux HSM et systèmes associés permettent d'exporter des clés en utilisant la norme TR-34. Vous devez spécifier la clé publique de l'étape 1 en tant que certificat KRD (chiffrement) et la clé de l'étape 3 en tant que certificat KDH (signature). Pour effectuer l'importation dans AWS Payment Cryptography, vous devez spécifier le format TR-34.2012 à deux passes non CMS, également appelé format TR-34 Diebold.

5. Clé d'importation d'appels

À la dernière étape, vous appellerez l'API ImportKey avec un KeyMaterialType deTR34_KEY_BLOCK. Il certificate-authority-public-key-identifier s'agira du KeyARN de l'autorité de certification racine importé à l'étape 3, du matériel clé de l'étape 4 key-material sera encapsulé et signing-key-certificate sera le certificat principal de l'étape 3. Vous devrez également fournir le jeton d'importation indiqué à l'étape 1.

6. Utiliser la clé importée pour les opérations cryptographiques ou les importations ultérieures

Si la clé importée KeyUsage était TR31_K0_KEY_ENCRYPTION_KEY, cette clé peut être utilisée pour les importations de clés suivantes à l'aide de la TR-31. Si le type de clé était un autre type (tel que TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY), la clé peut être directement utilisée pour les opérations cryptographiques.

Importation de clés à l'aide de techniques asymétriques (RSA Unwrap)

Vue d'ensemble : La cryptographie des AWS paiements prend en charge l'encapsulation et le déballage RSA pour l'échange de clés lorsque le TR-34 n'est pas possible. Semblable au TR-34, cette technique utilise la cryptographie asymétrique RSA pour chiffrer les clés symétriques à des fins d'échange. Cependant, contrairement à la TR-34, cette méthode ne fait pas signer la charge utile par l'expéditeur. En outre, cette technique d'encapsulation RSA ne préserve pas l'intégrité des métadonnées clés pendant le transfert car les blocs clés ne sont pas inclus.

Note

L'encapsulation RSA peut être utilisée pour importer ou exporter des clés TDES et AES-128.

1. Appelez la commande d'initialisation de l'importation

Appel get-parameters-for-import pour initialiser le processus d'importation avec un type de matériau clé KEY_CRYPTOGRAM. WrappingKeyAlgorithm peut être RSA_2048 lors de l'échange de clés TDES. Le RSA_3072 ou le RSA_4096 peuvent être utilisés lors de l'échange de clés TDES ou AES-128. Cette API générera une paire de clés à des fins d'importation de clés, signera la clé à l'aide d'une racine de certificat et renverra à la fois le certificat et la racine du certificat. En fin de compte, la clé à exporter doit être chiffrée à l'aide de cette clé. Notez que ces certificats sont de courte durée et ne sont destinés qu'à cette fin.

$ 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. Installer le certificat public sur le système source clé

Avec de nombreux HSM, vous devrez peut-être installer/charger/approuver le certificat public (et/ou sa racine) généré à l'étape 1 afin d'exporter les clés à l'aide de celui-ci.

3. Exporter la clé depuis le système source

De nombreux HSM et systèmes associés permettent d'exporter des clés à l'aide de RSA Wrap. Vous devez spécifier la clé publique de l'étape 1 en tant que WrappingKey certificat (de cryptage). Si vous avez besoin de la chaîne de confiance, elle est contenue dans le champ WrappingKeyCertificateChain de réponse de l'étape #1. Lorsque vous exportez la clé depuis votre HSM, vous devez spécifier le format RSA, mode de remplissage = PKCS #1 v2.2 OAEP (avec SHA 256 ou SHA 512).

4. Clé d'importation d'appels

À la dernière étape, vous appellerez l'API ImportKey avec un KeyMaterialType deKeyMaterial. Vous aurez besoin du jeton d'importation de l'étape 1 et du key-material (matériel clé enveloppé) de l'étape 3. Vous devrez fournir les paramètres clés (tels que l'utilisation des clés), car RSA Wrap n'utilise pas de blocs clés.

$ 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. Utiliser la clé importée pour les opérations cryptographiques ou les importations ultérieures

Si la clé importée KeyUsage était TR31_K0_KEY_ENCRYPTION_KEY, cette clé peut être utilisée pour les importations de clés suivantes à l'aide de la TR-31. Si le type de clé était un autre type (tel que TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY), la clé peut être directement utilisée pour les opérations cryptographiques.

Importation de clés symétriques à l'aide d'une clé d'échange de clés préétablie (TR-31)

AWS Processus d'importation de clés symétriques de cryptographie des paiements

Lorsque les partenaires échangent plusieurs clés (ou pour faciliter la rotation des clés), il est courant d'échanger d'abord une clé de chiffrement initiale (KEK) en utilisant des techniques telles que les composants de clés en papier ou, dans le cas de la cryptographie des AWS paiements, à l'aide du TR-34.

Une fois qu'un KEK est établi, vous pouvez utiliser cette clé pour transporter les clés suivantes (y compris les autres KEK). AWS La cryptographie des paiements prend en charge ce type d'échange de clés à l'aide de la norme ANSI TR-31, largement utilisée et largement prise en charge par les fournisseurs de HSM.

1. Clé d'importation Clé de chiffrement (KEK)

On suppose que vous avez déjà importé votre KEK et que le KeyArn (ou KeyAlias) est à votre disposition.

2. Créer une clé sur la plateforme source

Si la clé n'existe pas déjà, créez-la sur la plateforme source. À l'inverse, vous pouvez créer la clé sur AWS Payment Cryptography et utiliser la export commande à la place.

3. Exporter la clé depuis la plateforme source

Lors de l'exportation, assurez-vous de spécifier le format d'exportation TR-31. La plateforme source vous demandera également la clé à exporter et la clé de chiffrement à utiliser.

4. Importation dans la cryptographie des AWS paiements

Lorsque vous appelez la commande ImportKey, le KeyArn (ou alias) de votre clé de chiffrement WrappingKeyIdentifier doit être le résultat de la plate-forme source. 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" } }

Importation de clés asymétriques (RSA)

Importation de clés publiques RSA

AWS La cryptographie des paiements prend en charge l'importation de clés RSA publiques sous forme de certificats X.509. Pour importer un certificat, vous devez d'abord importer son certificat racine. Tous les certificats ne doivent pas être expirés au moment de l'importation. Le certificat doit être au format PEM et doit être codé en base64.

1. Importer dans le certificat racine dans la cryptographie des AWS paiements
$ 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. Importer un certificat à clé publique dans la cryptographie des AWS paiements

Vous pouvez désormais importer une clé publique. Il existe deux options pour importer des clés publiques. TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATUREpeut être utilisé si le but de la clé est de vérifier les signatures (par exemple lors d'une importation à l'aide du TR-34). TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTIONpeut être utilisé lors du chiffrement de données destinées à être utilisées avec un autre système.

$ 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" } }