消息认证码2025年5月30日 | 阅读 5 分钟 消息认证码(MAC)有两个基本用途。一是用于识别传入消息是否真实。二是用于检测传入消息是否被篡改。 ![]() 这些方法在哪里使用?![]() 例如,用户 A 尝试将消息“abc”发送给用户 B。A 希望使用共享密钥加密系统来加密消息,这需要 A 和 B 之间共享一个密钥,但 A 无法安全地将密钥发送给 B,因为他们使用的所有信道都已泄露。尽管公钥加密系统在实践中运行良好,但它主要用于在通常不那么安全的信道上建立共享秘密。假设恶意方 X 已经“入侵”了公钥加密系统,并且现在掌握了 B 可能使用的任何密钥。在这种情况下,B 将创建一个与 X 已被破坏的加密系统相关联的密钥。当 B 使用 X 已损坏的密钥进行加密时,B 实际上是在为自己和 A 敲响丧钟。 现在,我们将研究如何检测消息 B 是否被篡改。在此消息中,A 将为消息认证码创建一个密钥并将其发送给 B。A 将根据密文和密钥创建一个值。创建的值是密文加上密钥。通信的识别码就是输入的内容。B 必须借助 MAC 检查密文是否被篡改。如果未更改,则 A 的消息已完整接收。只有在使用 MAC 时,B 才能确定消息是否被篡改。如果 B 只用于检查密文,那么理论上,发送消息的 A 或其他人都可以利用噪声(使预期消息失真)。 MAC 是 Message Authentication Code 的缩写。在 MAC 中,发送方和接收方之间存在一个共享密钥。发送方创建一个固定大小的输出,称为加密校验和或消息认证码,并将其附加到原始消息中。在接收方端,接收方生成相同的输出并与收到的内容进行比较;这极大地保证了接收方内容的真实性。 下面提到的组件如下:信息 键 MAC 算法 MAC 值 消息认证码 (MAC) 模型有以下几种类型:1. 无加密的 MAC![]() 此模型可以进行身份验证,但不能保证机密性,因为任何人都可以查看消息。 2. 内部错误码![]() 在此 MAC 模型中,在实际消息通过网络发送之前,内容将被加密以确保机密性。因此,此模式同时提供隐私和身份验证。 M' = MAC(M, k) 3. 外部错误码![]() 对于传输的内容被操纵的情况,我们首先对其进行解密以检查损坏。为避免这种情况,我们应用外部错误码。秘密消息 'c' 首先经过 MAC 处理,然后将获得的 MAC 值与 c 进行比较。如果这些值相等,则解密 c;否则,将简单地丢弃接收到的内容。因此,这可以节省时间。 c = E(M, k') M' = MAC(c, k) 4. MAC 中的问题任何人都可以通过操纵获得基本数据以及代码。在这种情况下,输入和输出被翻译了。他们使用“单向”哈希算法来解决这个问题。 注:“E”符号表示对称密钥加密。MAC 的局限性MAC 以对称方式工作,并且有两个主要局限性,如下所示:
因此,尽管第三方无法计算 MAC,但发送方仍然可以声称他或她未发送该表格,因为 MAC 不能作为发送方发送或未发送该表格的证据。 MAC 的种类虽然 MAC 可能有所不同,但它们都具有相同的基本目的。 1. 仅一次 MAC仅一次 MAC 构成一个 MAC 协议,旨在仅用于一次以保护数据传输,类似于一次性加密。总的来说,一次性 MAC 比其他身份验证算法快得多。 2. Carter-Wegman MACCarter-Wegman MAC 与一次性 MAC 几乎相同,但由于引入了伪随机函数,可以使用相同的密钥多次使用它。 3. HMAC每个传输的通信都包含由密钥化哈希消息加密算法 (HMAC) 生成的单个 MAC 结果。对于每个传输的通信,使用密钥化哈希消息认证码 (HMAC) 生成单个 MAC 值。 消息验证凭证提供哪些好处?1. 保护数据完整性MAC 确保您的代码未被拦截和修改。此外,由于它们理论上可以防止未经授权的代码被引入系统,因此它们有助于打击病毒和其他形式的恶意软件。 2. 检测消息内容的变化应用程序可以使用发送给您或通过某种可移动存储设备提供的数据来生成 MAC。将应用程序生成的 MAC 与原始 MAC 进行比较以检测更改。 批准的消息认证码算法HMAC、KECCAK 消息识别码 (KMAC) 以及基于密码的 MAC (CMAC) 是三种被接受的通用 MAC 算法。在加密中,消息的验证基于哈希值,这些哈希值用于确认通信的真实性,并基本确保传输的数据在发送后未被更改或修改。 密钥化消息哈希认证码 (HMAC)认证的哈希操作是 HMAC 的基础。与 Rivest-Shamir-Adelman (RSA) 加密系统的操作类似,这是最早的数据传输安全方法之一。以下工作提供了有关可用于 HMAC 的功能的良好文档。 安全哈希标准 FIPS 180-4 FIPS 202,SHA-3 标准:可扩展输出算法和基于置换的哈希。 NIST出版物 800-107 版本 1 包含有关使用授权哈希程序进行实现的建议,包括有关 HMAC 的某些隐私建议。 KECCAK 消息认证码 (KMAC)输入加密技术是 KMAC 的基础,FIPS 202,SHA-3 标准指定了其变量:基于置换的哈希和可扩展输出算法。 KECCAK 有两种变体:KMAC256 和 KMAC128。 下一个主题理解 Scrum Master 及其角色 |
我们请求您订阅我们的新闻通讯以获取最新更新。