本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
生成 MAC
Generate MAC API 用于验证与卡相关的数据,例如来自卡片磁条的跟踪数据,方法是使用已知的加密密钥生成 MAC(消息身份验证码),用于在发送方和接收方之间进行数据验证。用于生成 MAC 的数据包括消息数据、机密 MAC 加密密钥和 MAC 算法,用于生成用于传输的唯一 MAC 值。MAC 的接收方将使用相同的 MAC 消息数据、MAC 加密密钥和算法来重现另一个 MAC 值以进行比较和数据验证。即使是消息的一个字符发生了变化,或者用于验证的 MAC 密钥不完全相同,生成的MAC 也会完全不同。该 API 支持用于此操作的 ISO 9797-1 算法 1 和 ISO 9797-1 算法 3 MAC(使用静态 MAC 密钥和派生的 DUKPT 密钥)、HMAC 和 EMV MAC 加密密钥。
message-data 的输入值必须是十六进制数据。
有关此 API 所有选项的更多信息,请参阅GenerateMac和VerifyMac。
可选参数 mac-length 允许您截断输出值(尽管这也可以在代码中完成)。长度为 8 表示 8 字节或 16 个十六进制字符。
MAC 密钥既可以通过 P AWS ayment Cryptography 通过调用创建,CreateKey也可以通过调用ImportKey来
注意
CMAC 和 HMAC 算法不需要填充。所有其他数据都要求将数据填充到算法的区块大小,TDES 为 8 字节(16 个十六进制字符),AES 为 16 字节(32 个十六进制字符)的倍数。
生成 HMAC
在此示例中,我们将使用 HMAC 算法 HMAC_SHA256 和 HMAC 加密密钥生成用于卡数据身份验证的 HMAC(基于哈希的消息身份验证代码)。密钥必须 KeyUsage 设置为,TR31_M7_HMAC_KEY并设置 KeyModesOfUse 为Generate。哈希长度(例如 256)是在创建密钥时定义的,无法修改。
可选的 mac-length 参数将修剪输出 MAC,尽管这也可以在服务外部执行。该值以字节为单位,因此,如果值为 16,则需要长度为 32 的十六进制字符串。
例
$aws payment-cryptography-data generate-mac \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \ --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ --generation-attributes Algorithm=HMAC
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6", "KeyCheckValue": "2976E7", "Mac": "ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C" }
使用 ISO 9797-1 算法 3 生成 MAC
在本示例中,我们将使用 ISO 9797-1 算法 3(零售 MAC)生成 MAC,用于信用卡数据身份验证。密钥必须 KeyUsage 设置为,TR31_M3_ISO_9797_3_MAC_KEY并设置 KeyModesOfUse 为Generate。
例
$aws payment-cryptography-data generate-mac \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h \ --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ --generation-attributes="Algorithm=ISO9797_ALGORITHM3"
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "KeyCheckValue": "2976EA", "Mac": "A8F7A73DAF87B6D0" }
使用 CMAC 生成 MAC
当密钥为 AES 时,最常使用 CMAC,但它也支持 TDES。在此示例中,我们将使用 CMAC(ISO 9797-1 算法 5)生成一个 MAC,用于使用 AES 密钥进行卡数据身份验证。密钥必须 KeyUsage 设置为,TR31_M6_ISO_9797_5_CMAC_KEY并设置 KeyModesOfUse 为Generate。
例
$aws payment-cryptography-data generate-mac \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \ --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ --generation-attributes Algorithm="CMAC"
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi", "KeyCheckValue": "C1EB8F", "Mac": "1F8C36E63F91E4E93DF7842BF5E2E5F7" }
使用 DUKPT CMAC 生成 MAC
在此示例中,我们将使用 DUKPT(每笔交易派生的唯一密钥)和 CMAC 生成一个 MAC,用于卡数据身份验证。密钥必须 KeyUsage 设置为 true TR31_B0_BASE_DERIVATION_KEY 并 KeyModesOfUse DeriveKey设置为 true。DUKPT 密钥使用基本派生密钥 (BDK) 和密钥序列号 (KSN) 为每笔交易派生一个唯一的密钥。
例
$aws payment-cryptography-data generate-mac --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" --generation-attributes="DukptCmac={KeySerialNumber="932A6E954ABB32DD00000001",Direction=BIDIRECTIONAL}"
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6", "KeyCheckValue": "C1EB8F" }