现代密码学之加密哈希函数与消息认证码

Cryptographic Hash Functions and Message Authentication Codes

  • 什么是哈希函数?
  • 加密哈希函数-安全属性
    • 1. Pre-image resistance
    • 2. Second pre-image resistance
    • 3. Collision resistance
  • 哈希函数可以用来干什么?
  • The Random-Oracle Model(黑盒模型)
  • 消息认证码 Message Authentication Code (MAC)
  • HMAC
  • Pseudo-random function (PRF)伪随机函数
    • PRF 的安全性
  • PRF和MAC
  • Reference

什么是哈希函数?

哈希函数表示为:
在这里插入图片描述
其中n是一个安全参数,比如128、160、256或512。
让x代表一些信息。h(x)称为message digest。

基本要求
–message digest的长度是固定的,而数据的长度可以是任意的。
–给定x,很容易计算h(x)。
–建议的message diges长度(位):128(MD5)、160(SHA-1)、224/256/384/512(SHA-2)、224/256/384/512(SHA-3)

总结来说,哈希函数就是输入任意长度(*)的input,总会输出固定长度(n)的output.

加密哈希函数-安全属性

一共有三大属性:

1. Pre-image resistance

给定一个哈希函数h: X–>Y, y∈Y,没有有效的机制来发现 x∈X 使得h(x) = y。

这个属性与单向函数(one-way functions)相同。哈希函数是一种特殊的单向函数。

2. Second pre-image resistance

给定一个哈希函数h: X–>Y,x∈X没有有效的机制来发现x’∈X使得X‘≠X且h(x’) = h(X)。

3. Collision resistance

给定一个哈希函数h: X–>Y,x∈X没有有效的机制来发现x,x’∈X使得x‘≠x且h(x’) = h(X)。

第二条和第三条看起来很相似,但是我们要清楚的明白两者的区别。
2是已知一个x很难找另一个得出相同哈希值的x’,
3是很难找到一对不同但是得到相同哈希值的x和x‘。

哈希函数可以用来干什么?

•用于存储密码

•完整性(如HMAC)。

•在数字签名中,用于身份验证。

•针对高熵数据的关键推导

•proof-of-work
什么是proof-of-work?
一个哈希函数(例如SHA-256)接受一个数据块作为输入,并生成一个“随机”固定大小输出。
-在区块中包含一个可变的盐值。
-目标:找到一个在输出开头有N个0的散列(比特币,区块链相关)。
//区块链技术就是用的哈希函数。在后面会介绍这一部分。

The Random-Oracle Model(黑盒模型)

假设哈希函数是一个黑盒随机函数。
只能让oracle访问哈希函数,这意味着他们没有公式或算法来确定自己的哈希值。
随机oracle(黑盒)以随机响应响应每个查询(响应必须一致)。

随机Oracle模型是一种用于安全证明的理想哈希函数模型。

消息认证码 Message Authentication Code (MAC)

消息完整性和真实性的对称工具
•生成加密校验
•常见结构
–基于哈希函数
–基于Block cipher.

什么是消息完整性?
防止未经授权修改数据

与错误检测的区别
–错误检测是为了无意中修改数据(例如,由于噪声)

•两者都涉及校验和
–完整性检查值基于消息和密钥
–纠错/检测码不使用密钥

MAC
现代密码学之加密哈希函数与消息认证码_第1张图片
The receiver receives a message (M.t). It uses the key K and M to calculate MAC K (M) and compare it with t. If the two match, the received message is accepted as authentic.

MAC也被称为密码校验和

A MAC is secure if forging (M,MAC K (M)) without knowing K is hard.
如果在不知道key的情况下伪造(M,MAC K (M))很困难,那么我们就认为这个MAC是安全的。

现代密码学之加密哈希函数与消息认证码_第2张图片

HMAC

在各种安全标准中应用最广泛的MAC.
使用哈希函数作为构建块例如MAC-MD5、MAC-SHA1等等。
它也可以被认为是一个伪随机函数 (PRF)。
现代密码学之加密哈希函数与消息认证码_第3张图片
HMAC(K,M) = H( K ⊕ opad || H((K ⊕ ipad) || M) )

Pseudo-random function (PRF)伪随机函数

A family of functions K x X -->Y
– X: message space
– K: key space
– Y: output space
输出空间有固定的大小.
F k () for a fixed k defines a function/map from X -->Y

PRF 的安全性

We call a function family F: K x X -->Ypseudorandom if the function F k () (for a uniform k chosen from K) is indistinguishable from a random function RF: X -->Y

就是说,如果我们认为这个PRF安全,那么他将与真正的随机函数没有任何区别(不可分辨)。

PRF和MAC

定义:
如果 F: K x X -->Y is a secure PRF family, then F k () with a uniform k chosen from K is a secure MAC.

Reference

  1. Wenbo Mao, Modern Cryptography, Prentice-Hall, 2003.
  2. Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, 2nd Edition, CRC Press, 2015.
  3. W Stallings, Cryptography and Network Security, Fourth (or later) Edition, Prentice Hall, 2006.
  4. J. Pieprzyk, T, Hardjono and J. Seberry, Cryptography: an introduction to computer security,
    Springer Verlag, 2003.
  5. Guo, F., Susilo, W., Mu, Y. Introduction to Security Reduction, Springer, 2018.

你可能感兴趣的:(算法,密码学,哈希函数)