기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
키 가져오기
중요
예제에는 최신 버전의 AWS CLI V2가 필요할 수 있습니다. 시작하기 전에 최신 버전으로 업그레이드했는지 확인하십시오.
대칭 키 가져오기
비대칭 기법을 사용한 키 가져오기(TR-34)
개요: TR-34 시스템은 RSA 비대칭 암호화를 활용하여 교환을 위한 대칭 키를 암호화하고 데이터 소스(서명)를 보장합니다. 이렇게 하면 래핑된 키의 기밀성(암호화)과 무결성(서명)이 모두 보장됩니다.
자체 키를 가져오려면 Github
- 1. 가져오기 초기화 명령을 호출하세요.
-
get-parameters-for-import
를 호출하여 가져오기 프로세스를 초기화합니다. 이 API는 키 가져오기를 위한 키페어를 생성하고, 키에 서명하고, 인증서 및 인증서 루트를 반환합니다. 최종적으로 내보낼 키는 이 키를 사용하여 암호화해야 합니다. TR-34 용어로는 이를 KRD 인증서라고 합니다. 이러한 인증서는 유효기간이 짧으며 이 용도로만 사용된다는 점에 유의하세요. - 2. 키 소스 시스템에 공개 인증서를 설치하세요.
-
HSM이 많은 경우 1단계에서 생성한 공개 인증서를 설치/로드/신뢰해야 이를 사용하여 키를 내보낼 수 있습니다.
- 3. 공개 키를 생성하고 AWS 결제 암호화에 인증서 루트를 제공하십시오.
-
전송된 페이로드의 무결성을 보장하기 위해 전송 당사자(키 분포 호스트 또는 KDH)가 서명합니다. 전송 당사자는 이러한 목적으로 공개 키를 생성한 다음 결제 암호화에 다시 제공할 수 있는 공개 키 인증서 (X509) 를 생성하기를 원할 것입니다. AWS AWS Private CA 인증서를 생성하는 옵션 중 하나이지만 사용되는 인증 기관에는 제한이 없습니다.
인증서를 얻었으면
importKey
명령 및 KeyMaterialType of를 사용하여 AWS Payment Cryptography에 루트 인증서를 로드하는 것이 좋습니다.ROOT_PUBLIC_KEY_CERTIFICATE
KeyUsageTypeTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE
- 4. 소스 시스템에서 키 내보내기
-
많은 HSM 및 관련 시스템에서는 TR-34 표준을 사용하여 키를 내보내는 기능을 지원합니다. 1단계의 퍼블릭 키는 KRD(암호화) 인증서로 지정하고 3단계의 키는 KDH(서명) 인증서로 지정하는 것이 좋습니다. AWS 결제 암호화로 가져오려면 형식을 TR-34.2012 비 CMS 2패스 형식으로 지정해야 합니다. 이 형식은 TR-34 디에볼트 형식이라고도 합니다.
- 5. 키 가져오기 호출
-
마지막 단계에서는 of를 사용하여 ImportKey API를 호출합니다. KeyMaterialType
TR34_KEY_BLOCK
certificate-authority-public-key-identifier
는 3단계에서 가져온 루트 CA의 키ARN,key-material
는 4단계의 래핑된 키 자료,signing-key-certificate
는 3단계의 리프 인증서입니다. 또한 1단계에서 가져온 가져오기 토큰을 제공해야 합니다. - 6. 가져온 키를 암호화 작업이나 후속 가져오기에 사용합니다.
-
KeyUsage 임포트한 키가 TR31_K0_KEY_ENCRYTION_KEY인 경우, TR-31 키를 사용하여 이후에 키를 가져올 때 이 키를 사용할 수 있습니다. 키 유형이 다른 유형(예: TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY)인 경우 키를 암호화 작업에 직접 사용할 수 있습니다.
비대칭 기법 (RSA 언랩) 을 사용하여 키 가져오기
개요: AWS 결제 암호화는 TR-34 상황이 불가능할 때 키 교환을 위한 RSA 래핑/언랩핑을 지원합니다. 이 기법은 TR-34 방식과 마찬가지로 RSA 비대칭 암호화를 활용하여 대칭 키를 암호화하여 교환합니다. 하지만 TR-34 방식과 달리 이 방법은 전송 당사자가 서명한 페이로드가 없습니다. 또한 이 RSA 랩 기법은 키 블록을 포함하지 않기 때문에 전송 중에 키 메타데이터의 무결성을 유지하지 못합니다.
참고
RSA 랩은 TDES 및 AES-128 키를 가져오거나 내보내는 데 사용할 수 있습니다.
- 1. 가져오기 초기화 명령을 호출하세요.
-
키를
get-parameters-for-import
호출하여 KEY_CRYPTOGRAM의 키 머티리얼 유형을 사용하여 가져오기 프로세스를 초기화합니다. WrappingKeyAlgorithm TDES 키를 교환할 때는 RSA_2048이 될 수 있습니다. 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. 키 소스 시스템에 공개 인증서를 설치하세요.
-
많은 HSM의 경우 1단계에서 생성한 공개 인증서 (및/또는 해당 루트) 를 설치/로드/신뢰해야 이를 사용하여 키를 내보낼 수 있습니다.
- 3. 소스 시스템에서 키 내보내기
-
많은 HSM 및 관련 시스템에서는 RSA 랩을 사용하여 키를 내보내는 기능을 지원합니다. 1단계의 공개 키를 (암호화) 인증서 (인증서) 로 지정하는 것이 좋습니다. WrappingKey 신뢰 체인이 필요한 경우 이 정보는 #1 단계의 응답 WrappingKeyCertificateChain 필드에 포함되어 있습니다. HSM에서 키를 내보낼 때는 형식을 RSA, 패딩 모드 = PKCS #1 v2.2 OAEP (SHA 256 또는 SHA 512 사용) 로 지정하는 것이 좋습니다.
- 4. 키 가져오기 호출
-
마지막 단계에서는 f를 사용하여 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_ENCRYTION_KEY인 경우 TR-31 키를 사용하여 이후에 키를 가져올 때 이 키를 사용할 수 있습니다. 키 유형이 다른 유형(예: TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY)인 경우 키를 암호화 작업에 직접 사용할 수 있습니다.
사전 설정된 키 교환 키(TR-31)를 사용하여 대칭 키를 가져옵니다.
KEK가 설정되면 이 키를 사용하여 후속 키 (다른 KEK 포함) 를 전송할 수 있습니다. AWS 결제 암호화는 HSM 공급업체에서 널리 사용되고 널리 지원하는 ANSI TR-31 기반의 이러한 종류의 키 교환을 지원합니다.
- 1. KEK(키 암호화 키) 가져오기
-
KEK를 이미 가져왔고 keyARN(또는 keyAlias)을 사용할 수 있는 것으로 가정합니다.
- 2. 소스 플랫폼에서 키 생성
-
키가 아직 없는 경우 소스 플랫폼에서 키를 생성하세요. 반대로 AWS Payment Cryptography에서 키를 생성하고 대신
export
명령을 사용할 수 있습니다. - 3. 소스 플랫폼에서 키 내보내기
-
내보낼 때는 내보내기 형식을 TR-31 형식으로 지정해야 합니다. 또한 소스 플랫폼은 내보낼 키와 사용할 키 암호화 키를 요청합니다.
- 4. 결제 암호화로 가져오기 AWS
-
ImportKey 명령을 호출할 때는 키 암호화 키의 KeyARN (또는 별칭) WrappingKeyIdentifier 이어야 하며 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 결제 암호화는 X.509 인증서 형태의 공개 RSA 키 가져오기를 지원합니다. 인증서를 가져오려면 먼저 루트 인증서를 가져와야 합니다. 모든 인증서는 가져오는 시점에 만료되지 않아야 합니다. 인증서는 PEM 형식이어야 하며 base64로 인코딩되어야 합니다.
- 1. 루트 인증서를 결제 암호화로 가져오기 AWS
-
$
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 결제 암호화로 가져오기
-
이제 퍼블릭 키를 가져올 수 있습니다. 퍼블릭 키를 가져오는 데는 두 가지 옵션이 있습니다.
TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE
는 키의 용도가 서명을 확인하는 것인 경우(예: TR-34 사용하여 가져오는 경우) 사용할 수 있습니다.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" } }