文章目录
- 一、Hash函数概述
- 1.1、什么是Hash函数?
- 1.2、Hash函数分类
- 1.3、Hash函数应满足的条件(重点):
- 1.4、对称MAC的一种Hash函数的一般结构
- 二、MD5(Message Digest,消息摘要)
- 2.1、特点:
- 2.2、产生散列值的过程
- 三、SHA1(Security Hash Algorithm,安全Hash算法)
- 3.1、参数信息及MD5比较(重点)
- 3.2、产生报文摘要的过程
- 四、MAC
- 4.1、**消息认证码(MAC)是如何实现消息认证的?**
- 4.2、常见的三种MAC构造方式
一、Hash函数概述
1.1、什么是Hash函数?
Hash函数(也称散列函数)是一个将 任意长度的消息x序列映射为较短的、 固定长度的一个值y的函数。
1.2、Hash函数分类
- 带密钥的Hash函数:可将y和消息x一起在不安全的信道中传输
- 不带密钥的Hash函数:y必须安全存放,确保y不被篡改
1.3、Hash函数应满足的条件(重点):
- 从实用的角度:
- 已知x,求H(x)较为容易, 并可用硬件或软件快速实现
- 输入的消息可以任意长;输出的“指纹”固定长
- 从安全的角度**(重点)**:
- 原像问题:给定H(x),恢复x在计算上是不可行的;
- 第二原像问题:给定 (x, H(x)),找到一个x1(x != x1
),使得H(x1) = H(x) 在计算上不可行 - 碰撞问题:找到两个有意义的消息x1和x2,使得H(x1)=H(x2)几乎是不可能的。
1.4、对称MAC的一种Hash函数的一般结构
二、MD5(Message Digest,消息摘要)
MD5是由密码学家 Rivest在1992年公布的单向散列函数;
2.1、特点:
- MD5采用了Merkle提出的迭代模型;
- 输入消息可以任意长;
- 每一次迭代处理512bit的消息分组;
- 最终输出散列值为128bit
2.2、产生散列值的过程
三、SHA1(Security Hash Algorithm,安全Hash算法)
3.1、参数信息及MD5比较(重点)
SHA-1 | MD5 | |
最大消息长度 | < 2^64 | 不限 |
消息分组长度 | 512 | 512 |
结构 | MerKle迭代 | MerKle迭代 |
链接变量长度 | 160 | 128 |
散列值长度 | 160 | 128 |
3.2、产生报文摘要的过程
四、MAC
- 消息认证码(MAC):一种确认完整性并进行认证的技术
- MAC是一种带密钥的函数h = MAC k(X)
- 两个输入:消息x和共享密钥K
- 输出:固定长度的数组,称之为MAC值或认证码
4.1、消息认证码(MAC)是如何实现消息认证的?
4.2、常见的三种MAC构造方式
- 基于分组密码的MAC
- CBC-MAC : 认证码的长度 = 分组密码的密文长度
- 基于序列的MAC
- ZUC算法:密钥长度可选128,256 (两个算法只在密钥加载 方式及常数设置上有一些的差别)
- 基于密码hash函数的MAC——HMAC
- HMAC-MD5
- HMAC-SHA-1