《深入浅出密码学》

修订记录

版本日期备注
0.12023.11.14初始版本

第11章 哈希函数

引言:
哈希函数是一个非常重要的密码学组件。哈希函数计算了一个消息的摘要,二这个摘要是非常短的、固定长度的位字符串。对于某个特定消息而言,消息摘要(或哈希值)可以看做是该消息的指纹,即该消息的唯一表示。(与本书目前介绍的其他所有加密算法不同)哈希函数没有密钥。哈希函数是数字签名方案和消息验证码的核心部分,这部分内容在第12章节。

11.2 哈希函数的安全性要求

为了保证安全性,哈希函数需要拥有以下三个核心属性

  1. 抗第一原像性(或单向性)
  2. 抗第二原像性(或弱抗冲突性)
  3. 抗冲突性(或强抗冲突性)

给定一个哈希输出 z z z,找到满足 z = h ( x ) z=h(x) z=h(x)的输入消息 x x x,在计算上必须是不可行的。换句话说,给定一个指纹,我们不可能找到对应的消息。
$$

11.2.2 抗第二原像性

对使用哈希的数字签名而言,确保两个不同的消息不会映射到相同的值是非常重要的。这意味着使用相同的哈希值 z 1 = h ( x 1 ) = h ( x 2 ) = z 2 z_1=h(x_1)=h(x_2)=z_2 z1=h(x1)=h(x2)=z2 创建两个不同的消息 x 1 ≠ x 2 x_1 \neq x_2 x1=x2在计算上是不可行的。

第12章 消息验证码

消息验证码(Message authentication code,MAC)也称为密码学校验密钥的哈希函数。MAC 与数字签名有一些共同的属性,因为它们都提供消息完整性和消息验证。其不同点是,MAC是对称密钥方案,并且它也不提供不可否认性。MAC的一个优势是他们的速度比数字签名要快很多,因为他们要么基于分组密码,要么基于哈希函数。

12.1 消息验证码的基本原理

与数字签名一样,MAC也是将验证标签附加到消息后面。

MAC是对称密码和 k k k和消息 x x x的函数:
m = M A C k ( x ) m=MAC_k(x) m=MACk(x)

在这里插入图片描述
消息验证码的属性

  1. 密码学校验和
  2. 对称性
  3. 任意的消息
  4. 固定的输出长度
  5. 消息完整性
  6. 消息验证
  7. 不具有不可否认性

12.2 哈希函数的MAC: HMAC

实现MAC的一个选择就是使用密码学哈希函数作为基本块,如SHA-1。
HMAC 传输层安全协议(TLS)和IPsec协议集中都有使用。HMAC使用如此广泛的一个原因就是,在某些假设下,它是可证明安全的。
所有基于哈希的验证码的基本思想就是,将密钥和消息一起进行哈希。有两种可能的构建方法:

  1. 密钥前缀MAC:
    m = M A C k ( x ) = h ( k ∣ ∣ x ) m=MAC_k(x)=h(k||x) m=MACk(x)=h(k∣∣x)
  2. 密钥后缀MAC
    m = M A C k ( x ) = h ( x ∣ ∣ k ) m=MAC_k(x)=h(x||k) m=MACk(x)=h(x∣∣k)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值