生成并验证 EMV MAC - AWS 支付密码学

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

生成并验证 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" }