(一)认证
认证方式 | 说明 | 解决方法 | |
1 | 实体认证 | 识别通信对方的身份,防止假冒 | 数字签名 |
2 | 消息认证 | 验证消息在传送或存储过程中有没有被篡改 | 报文摘要 |
(1)基于共享密钥的认证
如果通信双方有一个共享密钥,则可以确认对方的真实身份。算法依赖于一个双方都信赖的密钥分发中心(Key Distribution Center, KDC)。
缺点:无法防御重放攻击。
(2)基于公钥的认证
解决了重放攻击可能性。通信双方都用对方公钥加密,用各自私钥解密。
缺点:假定了双方都知道对方公钥。
(二)数字签名
与手写签名的作用一样,数字签名系统向通信双方提供服务。
1)B可以验证消息P确实来源于A。
2)A以后不能否认发送过P。
3)B不能编造或改变消息P。
(1)基于密钥的数字签名
(2)基于公钥的数字签名
(三)报文摘要(Message Digest)
报文检验(用于差错控制):根据冗余位检查报文是否受到信道干扰的影响
报文摘要(Digital Fingerprint,数字指纹):计算密码校验和,即固定长度的认证码,附加在消息后面发送,根据认证码检查报文是否被篡改。是原报文唯一的压缩表,代表了原报文特征。可以加速数字签名算法
散列(Hash)算法:将任意长度的二进制串映射为固定长度的二进制串(散列值)。
散列值:是一段数据唯一的、紧凑的表示形式。如果对一段明文只更改其中一个字母,随后的散列变换都将产生不同的散列值。
理论基础:要找到散列值相同的两个不同的输入在计算上是不可能的,所以数据散列值可以检验数据的完整性
实现方案:对任意长的明文M进行单向散列变换,计算固定长度的位串作为报文摘要。
Hash函数=H(M)的要求:
(1)可用于任意大小的数据块。
(2)能产生固定大小的输出。
(3)软/硬件容易实现。
(4)对于任意,找出x,满足H(x)=m,是不可计算的。单向性
(5)对于任意x,找出y≠x,使得H(x)=H(y),是不可计算的。防止伪造攻击
(6)找出使得H(x)=H(y),是不可计算的。对付生日攻击