ランダムピンと関連付けられた PVV を生成し、値を検証する - AWS Payment Cryptography

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

ランダムピンと関連付けられた PVV を生成し、値を検証する

キーを作成する (複数可)

ランダムピンと PVV を生成するには、PVV を生成するためのピン検証キー (PVK) と、ピンを暗号化するためのピン暗号化キーの 2 つのキーが必要です。ピン自体は、サービス内でランダムに安全に生成され、どちらのキーにも暗号的に関連しません。

PGK は、PVV アルゴリズム自体に基づくアルゴリズム TDES_2KEY のキーである必要があります。PEK は TDES_2KEY、TDES_3KEY、または AES_128 です。この場合、PEK はシステム内での内部使用を目的としているため、AES_128 が適しています。PEK を他のシステム (カードネットワーク、アクワイアラー、ATMs など) と交換する場合、または移行の一環として移動する場合、TDES_2KEY は互換性の理由からより適切な選択肢である可能性があります。

PEK を作成する

$ aws payment-cryptography create-key \ --exportable --key-attributes KeyAlgorithm=AES_128,KeyUsage=TR31_P0_PIN_ENCRYPTION_KEY,\ KeyClass=SYMMETRIC_KEY,\ KeyModesOfUse='{Encrypt=true,Decrypt=true,Wrap=true,Unwrap=true}' --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'

レスポンスには、後続の呼び出し用の ARN やキーチェック値 (KCV) などのリクエストパラメータがエコーバックされます。

{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "KeyAttributes": { "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": true, "Sign": false, "Verify": true, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "7CC9E2", "KeyCheckValueAlgorithm": "CMAC", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00", "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00" } }

arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsupltitudeyt など、キーKeyArnを表す を書き留めます。これは次のステップで行います。

PVK を作成する

$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_V2_VISA_PIN_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'

レスポンスには、後続の呼び出し用の ARN やキーチェック値 (KCV) などのリクエストパラメータがエコーバックされます。

{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/ov6icy4ryas4zcza", "KeyAttributes": { "KeyUsage": "TR31_V2_VISA_PIN_VERIFICATION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "TDES_2KEY", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": true, "Sign": false, "Verify": true, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "51A200", "KeyCheckValueAlgorithm": "ANSI_X9_24", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00", "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00" } }

arn:aws:payment-cryptography:us-east-2::key/ov6icy4ryas4zcza など、キーKeyArnを表す を書き留めます。これは次のステップで行います。

ランダムピンを生成し、PVV を生成して、暗号化された PIN と PVV を返す

この例では、出力が暗号化された (PinData.PinBlock) と PIN block (pinData.VerificationValue) である新しい PVV (ランダム) 4 桁のピンを生成します。PinData.PinBlock) pinData.VerificationValue). キー入力はPAN、、 Pin Verification Key(ピン生成キーとも呼ばれます)、、Pin Encryption Keyおよび PIN ブロック形式です。

このコマンドでは、キーのタイプが である必要がありますTR31_V2_VISA_PIN_VERIFICATION_KEY

$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes VisaPin={PinVerificationKeyIndex=1}
{ "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2", "GenerationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", "EncryptedPinBlock": "AC17DC148BDA645E", "PinData": { "VerificationValue": "5507" } }

PVV メソッドを使用して暗号化された PIN を検証する

この例では、特定の PAN の PIN を検証します。PIN は通常、検証のために取引時にカード所有者またはユーザーによって提供され、ファイル上の値と比較されます (カード所有者からの入力は、ターミナルまたはその他のアップストリームプロバイダーから暗号化された値として提供されます)。この入力を検証するために、実行時に次の値も提供されます。暗号化されたピン、入力ピンの暗号化に使用されるキー (IWK と呼ばれることが多い)PAN、および検証する値 ( PVVまたは )PIN offset

AWS Payment Cryptography がピンを検証できる場合、http/200 が返されます。PIN が検証されない場合、http/400 が返されます。

$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=5507}" --encrypted-pin-block AC17DC148BDA645E
{ "VerificationKeyArn": "arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2", "VerificationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", }