本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
生成并验证 EMV MAC
EMV MAC 是 MAC,使用 EMV 派生的密钥的输入,然后对生成的数据执行 ISO9797 -3(零售)MAC。EMV MAC 通常用于向 EMV 卡发送命令,例如解锁脚本。
注意
AWS 支付密码学无法验证脚本的内容。有关要包含的特定命令的详细信息,请查阅您的方案或卡片手册。
有关更多信息,请参阅 API 指南MacAlgorithmEmv中的。
创建密钥
$
aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E2_EMV_MKEY_INTEGRITY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{DeriveKey=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVN18"},{"Key":"CARD_BIN","Value":"12345678"}]'
响应会回显请求参数,包括后续调用的 ARN 以及密钥检查值 (KCV)。
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk", "KeyAttributes": { "KeyUsage": "TR31_E2_EMV_MKEY_INTEGRITY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "TDES_2KEY", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": false, "Sign": false, "Verify": false, "DeriveKey": true, "NoRestrictions": false } }, "KeyCheckValue": "08D7B4", "KeyCheckValueAlgorithm": "ANSI_X9_24", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2024-03-07T06:41:46.648000-07:00", "UsageStartTimestamp": "2024-03-07T06:41:46.626000-07:00" } }
注意代表密钥的那个KeyArn
,例如 arn: aws: payment-cryptography: us-east-2:: key/pw3s6nl62 t5ushfk。您需要在下一步中执行该操作。
生成 EMV MAC
典型的流程是,后端进程将生成 EMV 脚本(例如卡片解除封锁),使用此命令(派生特定于某张卡的一次性密钥)对其进行签名,然后返回 MAC。然后,命令+ MAC被发送到要应用的卡。向卡发送命令超出了 AWS 支付加密的范围。
注意
此命令适用于未发送加密数据(例如 PIN)时的命令。EMV Encrypt 可以与该命令结合使用,以便在调用此命令之前将加密的数据附加到发行者脚本中
- 消息数据
消息数据包括 APDU 标头和命令。虽然这可能因实现而异,但此示例是解除封锁 (84 24 00 00 08) 的 APDU 标头,其次是 ATC (0007),然后是前一笔交易 (999E57FD0F47CACE) 的 ARQC。该服务不验证此字段的内容。
- 会话密钥派生模式
此字段定义会话密钥的生成方式。EMV_COMMON_SESSION_KEY 通常用于新的实现,而 EMV2 000 | AMEX | MASTERCARD_SESSION_KEY | VISA 也可以使用。
- MajorKeyDerivationMode
EMV 定义模式 A、B 或 C。模式 A 是最常见的, AWS 支付密码学目前支持模式 A 或模式 B。
- PAN
账号,通常在芯片字段 5A 或字 ISO8583 段 2 中可用,但也可以从卡系统中检索。
- PSN
卡片序列号。如果未使用,请输入 00。
- SessionKeyDerivationValue
这是每个会话的派生数据。根据推导方案,它可以是场 9F26 中的最后一个 ARQC (ApplicationCryptogram),也可以是 9F36 中的最后一个 ATC。
- Padding
自动应用填充并使用 ISO/IEC 9797-1 填充方法 2。
$
aws payment-cryptography-data generate-mac --message-data 84240000080007999E57FD0F47CACE --key-identifier arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk --message-data 8424000008999E57FD0F47CACE0007 --generation-attributes EmvMac="{MajorKeyDerivationMode=EMV_OPTION_A,PanSequenceNumber='00',PrimaryAccountNumber='2235521304123282',SessionKeyDerivationMode=EMV_COMMON_SESSION_KEY,SessionKeyDerivationValue={ApplicationCryptogram='999E57FD0F47CACE'}}"
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4", "Mac":"5652EEDF83EA0D84" }