View a markdown version of this page

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

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

生成并验证 MAC

消息验证码 (MAC) 通常用于验证消息的完整性(是否已被修改)。诸如 HMAC(Hash-Based 消息身份验证码) CBC-MAC 和 CMAC(消息身份验证码)之类的加密哈希通过使用加密技术为 MAC 的发送者提供了额外的保证。Cipher-based HMAC 基于哈希函数,而 CMAC 基于分组密码。该服务还支持 ISO9797 算法 1 和 3,它们是 CBC-MACs.

此服务的所有 MAC 算法结合了加密哈希函数和共享密钥。他们获取消息和密钥,例如密钥中的密钥材料,然后返回一个唯一的标签或 MAC。即使是消息的一个字符发生了变化,或者密钥发生变化,生成的标签也会完全不同。通过要求提供密钥,加密 MAC 还提供了真实性;如果没有密钥,就不可能生成相同的 MAC。加密 MAC 有时被称为对称签名,因为它们像数字签名一样工作,但使用单个密钥进行签名和验证。

AWS 支付密码学支持多种类型的 MAC:

ISO9797 算法 1

以 ISO9797_ALGORTH KeyUsage IM1 的形式表示。如果该字段不是区块大小的倍数(TDES 为 8 个 bytes/16 十六进制字符,AES 为 16 个字 bytes/32 符),P AWS ayment Cryptography 会自动应用 ISO9797 填充方法 1。如果需要其他填充方法,则可以在调用服务之前应用它们。

ISO9797 算法 3(零售 MAC)

以 ISO9797_ALGORTHM KeyUsage 3 的形式表示。与算法 1 相同的填充规则适用

ISO9797 算法 5 (CMAC)

由 TR31_M6_ISO_9797_5_CMAC_KEY 的 KeyUsage 表示

HMAC

用 TR31_M7_HMAC_KEY 的 KeyUsage 表示,包括 HMAC_SHA224、HMAC_SHA256、HMAC_SHA384 和 HMAC_SHA512

AS2805.4.1 MAC

用 TR31_M0_ISO_16609_M KeyUsage AC_KEY 表示。有关 AS2805 的更多详细信息,请参阅 AS2805

DUKPT MAC

DUKPT MAC 通常用于确认 to/from 支付终端的消息来源和有效负载。它使用 DUKPT 派生技术派生密钥,然后执行 MAC。用于此选项的密钥由 TR31_B0_BASE_DERIVATION_KE KeyUsage Y 中的 a 表示。

EMV MAC

在 EMV 文档中,EMV MAC 通常被称为完整性密钥。它使用 EMV 推导技术派生密钥,然后在内部使用 ISO9797_ALGORTHM3。它通常用于将发行者脚本发送到芯片卡进行重新编程。用于此选项的密钥由 TR31_E2_EMV_MKEY_INTEGRIT KeyUsage Y 的 a 表示。如果您既发送脚本又更新离线 PIN,请查看执行GenerateMacEmvPinChange这两个操作的脚本。