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 la 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 la cryptographie RSA asymétrique 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 savoir comment 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. Cela 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 KRD Cert. 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 de clés

Dans de nombreux HSMs cas, vous aurez peut-être besoin install/load/trust du certificat public généré à l'étape 1 pour exporter des 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 d'hôte de distribution des clés ouKDH). 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 HSMs systèmes connexes permettent d'exporter des clés en utilisant la norme TR-34. Vous devez spécifier la clé publique de l'étape 1 comme certificat KRD (de chiffrement) et la clé de l'étape 3 comme certificat KDH (de signature). Pour importer dans AWS Payment Cryptography, vous devez spécifier le format TR-34.2012 sans CMS deux passes, également appelé format TR-34 Diebold.

5. Clé d'importation d'appels

À la dernière étape, vous appellerez le importKey API avec un KeyMaterialType deTR34_KEY_BLOCK. Il certificate-authority-public-key-identifier s'agira de la clé ARN de l'autorité de certification racine importée à l'étape 3, du matériel clé de l'étape 4 key-material sera encapsulé et signing-key-certificate du certificat original 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 des opérations cryptographiques.

Importer des clés à l'aide de techniques asymétriques (RSAUnwrap)

Vue d'ensemble : La cryptographie des AWS paiements prend en charge l'RSAencapsulation et le déballage pour l'échange de clés lorsque le TR-34 n'est pas possible. Semblable à la TR-34, cette technique utilise la cryptographie RSA asymétrique pour chiffrer des 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. De plus, cette technique d'RSAencapsulation 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

RSAwrap peut être utilisé pour importer ou exporter TDES et AES -128 clés.

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

Appelez get-parameters-for-import pour initialiser le processus d'importation avec un type de matériau clé KEY _CRYPTOGRAM. WrappingKeyAlgorithm peut être de RSA _2048 lors de l'échange TDES de clés. RSA_3072 ou RSA _4096 peuvent être utilisés lors de l'échange TDES de clés ou -128. AES Cela 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 de clés

Dans le cas d'un grand nombre d'entre ellesHSMs, vous devrez peut-être générer install/load/trust the public certificate(and/or sa racine à l'étape 1 pour exporter des clés en l'utilisant.

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

De nombreux HSMs systèmes connexes 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 certificat (de cryptage) (WrappingKeyCertificate). 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 votreHSM, vous devez spécifier le format à utiliserRSA, 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 le importKey API 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 le 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 des 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 que a KEK est établi, vous pouvez utiliser cette clé pour transporter les clés suivantes (y compris les autresKEKs). AWS La cryptographie des paiements prend en charge ce type d'échange de clés à l'aide du ANSI TR-31, qui est largement utilisé et largement soutenu par les fournisseurs. HSM

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

On suppose que vous avez déjà importé votre clé KEK et que vous avez la clé ARN (oukeyAlias) à 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 importKey commande, WrappingKeyIdentifier il doit s'agir de la clé ARN (ou alias) de votre clé de chiffrement et WrappedKeyBlock de la sortie de la plate-forme source.

$ 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 RSA publiques

AWS La cryptographie des paiements prend en charge l'importation de RSA clés 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 PEM format 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" } }