密码学入门——消息认证码

文章目录

    • 参考书目
    • 一、简介
    • 二、消息认证码的使用步骤
    • 三、消息认证码的应用实例
    • 四、消息认证码的实现方法
    • 五、认证加密
    • 六、HMAC

参考书目

图解密码技术,第三版

一、简介

使用消息认证码可以确认自己收到的消息是否就是发送者的本意,也就是说,使用消息认证码可以判断消息是否被篡改,以及是否有人伪装成发送者发送了该消息。

消息认证码(Message Authentication Code,MAC)是一种用于验证消息完整性和真实性的算法。它通过将消息和密钥作为输入,生成一个固定长度的代码,称为 MAC,来保证消息的完整性和真实性。MAC 算法通常使用对称密钥密码学算法,如DES、AES等,并且需要密钥的共享才能进行验证。

MAC 算法广泛应用于网络通信、数据存储、电子商务等领域,以保护数据的安全性和可靠性。在网络通信中,MAC 可以防止数据被篡改或冒充,确保数据的完整性和真实性。在数据存储中,MAC 可以防止数据被篡改或删除,保护数据的完整性和可靠性。在电子商务中,MAC 可以确保交易数据的完整性和真实性,防止数据被篡改或冒充,保护用户的隐私和安全。

可以认为,消息认证码是一种与密钥相关联的单向散列函数

二、消息认证码的使用步骤

密码学入门——消息认证码_第1张图片

三、消息认证码的应用实例

  1. SWIFT(略)
  2. IPsec(略)
  3. SSL/TLS

SSL/TLS是我们在网上购物等场景中所使用的通信协议。SSL/TLS中对通信内容的认证和完整性校验也使用了消息认证码。

四、消息认证码的实现方法

1.使用单向散列函数

使用SHA-2之类的单向散列函数可以实现消息认证码,其中一种实现方法称为HMAC,具体步骤我们将在下节介绍。

2.使用分组密码实现

使用AES之类的分组密码可以实现消息认证码。

将分组密码的密钥作为消息认证码的共享密钥来使用,并用CBC模式将消息全部加密。此时,初始化向量(IV)是固定的。由于消息认证码中不需要解密,因此将除最后一个分组以外的密文部分全部丢弃,而将最后一个分组用作MAC值。由于CBC模式的最后一个分组会受到整个消息以及密钥的双重影响,因此可以将它用作消息认证码。例如,AES-CMAC( RFC4493)就是一种基于AES来实现的消息认证码。

3.其他实现方法

使用流密码和公钥密码等也可以实现消息认证码

五、认证加密

认证加密,缩写为AE或AEAD。认证加密同时将对称密码和消息认证码相结合,同时满足机密性,完整性和认证三大功能的机制。

认证加密的方式

  1. Encrypt-then-MAC和Encrypt-and-MAC
  2. GCM与GMAC

GCM 是 Galois/Counter Mode 的缩写,是块密码的一种工作模式。它是一种广泛使用的认证加密算法,可以提供数据的机密性和完整性。

在 GCM 中,使用块密码(例如 AES)对明文进行加密。用于加密的密钥由发送方和接收方共享。除了加密之外,GCM 还生成一个认证标记,用于确保密文的完整性。认证标记是通过使用消息认证码(MAC)算法(例如 GHASH)生成的。

GCM 的工作原理是将明文分成块,然后使用密钥和 MAC 算法对其进行加密和认证。加密和认证是同时进行的,这使得 GCM 比其他需要单独进行加密和认证步骤的模式更快。

GCM 在网络安全协议(例如 TLS 和 IPsec)中常用于提供互联网上的安全通信。它还用于存储设备(例如硬盘驱动器和固态硬盘)中,以保护静止数据的安全。

六、HMAC

HMAC 的全称是“Keyed-Hash Message Authentication Code”,翻译为“带密钥哈希消息认证码”。它是一种常用的消息认证算法,用于验证数据的完整性和真实性。

HMAC 算法使用一个密钥和一个哈希函数(如 SHA-256)来对消息进行哈希计算。哈希函数将消息转换为一个固定长度的哈希值,而密钥则添加了一个额外的安全层。这样,即使攻击者知道哈希函数,也无法对消息进行篡改,因为他们没有密钥。

HMAC 算法的计算过程是将密钥和消息分别进行按位异或(XOR)运算,然后将结果输入到哈希函数中进行哈希计算。最终的 HMAC 值是哈希函数的输出,它被用作消息的认证标记,以确保消息的完整性和真实性。

HMAC 算法在计算简单、安全性高、广泛应用于网络安全协议中,例如 TLS、IPsec、SSH 等。

密码学入门——消息认证码_第2张图片

你可能感兴趣的:(密码学,hmac,消息认证码)