报文完整性与数字签名
一 什么是报文完整性?
也称为报文/消息认证(或报文鉴别),具体为:
- 证明报文确实来自声称的发送方
- 验证报文在传输过程中没有被篡改
- 预防报文的时间、顺序被篡改
- 预防报文持有期被修改
- 预防抵赖
- 发送方
- 接收方
密码散列函数-H(m)
- 散列算法公开
- H(m)能够快速jisuan
- 对任意长度报文进行多对一映射,均产生定长输出
- 对任意报文无法预知其散列值
- 不同报文不能产生相同的散列值
- 单向性:
- 无法根据散列值推测出报文
- 对于给定的散列值h。无法计算找到满足h=H(m)的报文m
- 无法根据散列值推测出报文
- 抗弱碰撞性
- 对于给定报文x,不可能再找到y且y不等于x,使得H(x)=H(y)
- 抗强碰撞性
- 不可能找到任意2个不同报文x和y,y不等于x ,使得H(x)=H(y)
internet校验和(checksum)
internet校验和具备散列函数的某些属性,
- 多对一映射
- 对于任意的报文,产生固定长度额散列值(16bit校验和)
----但是 -----
对于给定报文及其散列值,可以找到另一个具有相同散列值的不同报文。
散列函数算法
- MD5:被广泛使用的散列函数,但是安全性较差。
- SHA-1:
报文摘要
- 报文摘要可以作为报文的“数字指纹”来使用。
报文认证(完整性)
简单方案:
报文+报文摘要 ,得到扩展报文H(m) 。过程如下:
- 相等,则证明没有被修改。
存在缺陷:
真的来自声称的发送方?
改进:
报文认证码MAC
报文m+认证密钥s+密码散列函数H--->扩展报文(m,H(m+s)),过程如下:
- 相等,则证明发送报文的确实是声称的发送方。
存在缺陷:报文完整性可能被修改。
解决:数字签名
数字签名
如何解决报文完整性相关问题?如:
- 否认:发送方不承认自己发送过某个报文
- 伪造:接收方自己伪造一份报文
- 冒充:某个用户冒充另一个用户对报文进行接收和发送
- 篡改:接收方对收到的报文进行修改
数字签名概述
- 实现安全电子交易的核心技术之一
- 可验证性
- 不可伪造性
- 不可抵赖性
对报文m的简单数字签名:
- 报文加密技术是数字签名的基础。
- 缺点:大 ,签名和报文需要一同发送给接收方。
解决:报文摘要技术