散列函数(也叫哈希函数)
- 将任意长度的消息映射陈一个较短的定长输出报文的函数
- 作用:完整性校验
- 主要算法:MD5、SHA-1
- 数学性质
- 单向性
- 弱抗碰撞性
- 强抗碰撞性
基于hash的模型
散列函数(哈希函数)与消息鉴别
Hash函数的特点
可以应用到任意长度的数据上
可以生成大小固定的输出
对于任意给定的x,H(x)的计算相对简单
对于给定的散列值h,要发现满足于H(x)=h的x在计算上是不可行的
对于给定的消息x,要发现另一个消息y满足于H(y)=H(x)在计算上是不可行的
主要的散列算法:MD5(128位)、SHA(160位)等
散列的碰撞
原因:数学上分析是完全存在的——对源数据无限制,转换为固定大小(有限,有范围)
如——MAD5:2^128、SHA-1:2^160
则SHA相对更安全
MD5算法
MD:MessageDigest,消息摘要
- 输入:任意长度的消息(无限制)
- 输出:128位消息摘要(空间为2^128)
- 处理:512位输入数据块为单位
SHA-1算法
SHA(Secure Hash Algorithm,安全哈希算法)由美国国家标准技术研究所NIST开发,作为联邦信息处理标准于1993年发表(FIPSPUB180),1995年修订,作为SHA-1(FIPSPUB180-1),SHA-1基于MD4设计
- 输入:最大长度为2^64位的消息(有限制)
- 输出:160位消息摘要(空间为2^160)
- 处理:512位输入数据块为单位
对比
SHA-1/MD5 | 散列长度 | 安全性(相对来说) | 速度(相对来说) |
SHA-1 | 160bits | 相对较高,但是SHA-1的设计原则没有公开 | 相对较慢 |
MD5 | 128bits | 相对较低(原因:128bits<160bits) | 相对较快 |
数字签名
- 附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换能使数据单元的接收者确认数据单元来源和数据单元的完整性,并保护数据,防止被人伪造
- 作用
- 不可伪造性
- 不可否认性
- 保证消息完整性
基于RSA的数字签名——抗抵赖性模型
1、 | 2、 |
| |
注:用户A拿自己的私钥加密hash的过程就是数字签名
数字签名的基本条件
- 签名者不能否认自己的签名
- 接受者能够验证签名,而其他任何人都不能伪造签名
- 当关于签名的真伪发生争执时,存在一个仲裁机构或第三方能够解决争执
注:保护好自己的私钥