本系列是陈春华教授所讲授的信息系统安全课程的个人笔记
大纲
- 数据完整性保护
- 消息认证
- 鉴别码
- 哈希函数
- 数据不可否认性保护
- 数字签名
数据完整性保护
针对三种攻击
- 内容篡改:对报文内容进行加入删除改变等
- 序列篡改:对报文序列进行插入删除错序等
- 时间篡改:对报文进行延迟或者回放
完整性保护即是保护内容完整性+序列完整性+时间完整性
方法:消息认证、鉴别码(MAC)、Hash函数等
消息认证(Message Authentication)
又称报文鉴别,可以验证所收到的信息是否来自真正的发送方并未收到内容、序列、时间篡改攻击
1.内容认证:消息认证的核心
2.序列认证:通常通过报文序号是否按序
3.时间认证:通常采用时间戳或者询问应答机制
消息认证-鉴别码(MAC)
MAC(Message Authentication Code,消息认证码):使用一个由秘钥控制鉴别码生成函数基于报文的固定长的鉴别码
M为明文,C为鉴别码生成函数,K为秘钥,MAC为消息认证码
鉴别码生成函数特点:
1.不要求可逆性,不需解密
2.生成的MAC长度固定
3.密文M与MAC存在多对一的关系,即不同密文可能对应同一MAC
4.MAC函数比加密函数更不易攻破
常用的MAC函数算法:CBC-MAC,数据认证算法,建立在DES基础上,按照CBC模式操作构造MAC
哈希函数(数据指纹)
原理:将任意长的输入消息通过哈希算法(H)变成固定长度的输出,该输出就是哈希值,又称为数据指纹
安全性:
1.哈希函数H可应用于任何长度的输入
2.单向性,给定M计算H(M)=h容易,给定h计算出M困难
3.强抗碰撞性,对于不同的M,生成的哈希值h基本不同,防止替代性报文伪造
哈希算法举例:
1.报文摘要(Message Digest,MD):将报文使用哈希函数变换成具有固定长度的鉴别码,不需秘钥
2..MD5算法:哈希值长度128bits,主要用于防篡改鉴别码生成和加密口令,碰撞复杂度为2^40
3.SHA(Secure Hash Algorithm,安全哈希算法):包括有SHA-1/-224/-256等,哈希值长度在160bits以上,主要应用在数字标准签名算法(DSS)上,最大报文长度为2^64-1
数据不可否认性保护
用于抵抗如下行为:否认、冒充、伪造、篡改等一方对另一方的欺骗行为
不可否认性保护:在通信双方未建立信任关系且存在利益冲突情况下,消息认证无法有效解决问题,可采用数字签名技术
数字签名
定义:附加在数据单元上的一些数据或者密码变换,用来保证接受者可以使用其来缺人数据来源和数据完整性并保护数据不被伪造
安全性:
1.签名的生产识别验证应该效率高
2.签名可以用于验证报文内容的真实性+签名者的身份+签名的时间
3.签名需要是与报文相关的二进制串
4.签名可以由第三方验证,解决双方通信不信任
直接数字签名
使用非对称加密,将消息认证与签名结合,实现数据完整性和不可否认性结合
过程:
1.发送方:将报文M通过哈希函数H处理生成哈希值h
2.发送方:哈希值h和私钥SK通过加密函数E加密成验证密文s(这里的私钥SK和加密函数E与报文M的加密体制里的秘钥不同)
3.接收方:将收到的报文M通过哈希函数H处理生成哈希值h
4.接收方:将受到的验证密文s和公钥PK通过解密函数D解密得到发送方加密的哈希值h,通过比较报文生成的哈希值h与解密验证密文s得到的哈希值h来验证是否数据完整和不可否认