㈠ 消息认证消息认证
在通信中,确保消息真实性和完整性的过程称为消息内容认证。常见的认证方法包括在消息中插入鉴别码,如MAC或MDC,这些码经过加密后发送给接收者。接收者使用预先约定的解密算法,解密并计算鉴别码,然后将其与接收到的鉴别码进行比对,如果一致,就接受消息,否则拒绝。
消息源和宿的身份认证也有两种策略。首先,双方可以共享一个数据加密密匙,接收者只需验证解密后的消息是否能还原为明文,以此确认发送者身份。如果使用同一密匙,只需在消息中添加发送者的唯一标识即可。
另一种方式是使用通行字,发送者在加密消息时包含一个约定的通行字,接收者验证解密后通行字是否与约定的一致,以此鉴别发送者。为了增加安全性,通行字需要是可变的。
为了防止重放攻击,消息的顺序和时间也很关键。常见的保护措施包括使用消息流水作业、链接认证符随机树认证和时间戳等技术。这些方法确保消息在传输过程中不会被重复发送,从而保证通信的实时性和完整性。
㈡ 消息认证码(MAC)
消息认证码(MAC),简称MAC,是一种通过特定算法将消息正文和对称密钥结合生成的短信息,其核心作用在于确保通信双方传递信息的完整性和来源的真实性。它可以检测消息在传输过程中是否被篡改,无论出于意外还是恶意。由于依赖对称密钥,MAC无法防止消息否认和第三方验证,解决这一问题的方法是在实际应用中,通信双方预先共享密钥副本,一方生成MAC,另一方验证,而非在通信开始时分发,这样可以大大提高效率,通常是数字签名效率的2至3倍。
相较于MAC,数字签名(Digital Signature,即公钥数字签名)采用非对称密钥,利用私钥签名、公钥验证,其公开性使得一个签名可以被多人验证。而MAC则受限于对称密钥的唯一性,每个通信主体间的共享密钥需单独设定。
MAC的实现由密钥生成、签名和验证三个步骤构成:密钥生成是随机选择密钥;签名算法以密钥和消息为输入,生成标签;验证算法则检查给定密钥和标签的对应性,确保消息未被修改。只有当消息和标签保持一致,验证才会通过。
MAC算法可以基于其他加密原理构建,如使用单向哈希函数(如HMAC,即Hash Message Authentication Code)或分组密码算法(如OMAC, CBC-MAC和PMAC)。其中,如UMAC和VMAC等快速MAC算法,大多依赖于通用哈希函数进行设计。
具体到HMAC的数学公式,虽然此处未给出,但它是将哈希函数和密钥相结合的过程,以保证计算的复杂性和安全性。