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

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

生成并验证 MAC

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

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

AWS 支付密码学支持以下几种类型: MACs

ISO9797 算法 1

用 of ISO9797 _ ALGORITHM1 表示KeyUsage。如果该字段不是区块大小的倍数(TDES 为 8 字节/16 个十六进制字符,AES 为 16 字节/32 个字符),则 AWS 支付密码学会自动应用填充方法 1。 ISO9797 如果需要其他填充方法,则可以在调用服务之前应用它们。

ISO9797 算法 3(零售 MAC)

用 of ISO9797 _ ALGORITHM3 表示KeyUsage。与算法 1 相同的填充规则适用

ISO9797 算法 5 (CMAC)

用 _M6_ISO_9797_5_CMAC_KE KeyUsage Y TR31 表示

HMAC

用 TR31 _M7_HMAC_KEY 表示KeyUsage,包括 HMAC_、HMAC_、HMAC_ 和 HMAC_ SHA224 SHA256 SHA384 SHA512

AS2805.4.1 MAC

用 _M0_ISO_16609_MAC TR31 _ KeyUsage KEY 表示。有关更多详细信息 AS2805,请参阅 AS2805

DUKPT MAC

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

EMV MAC

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