一、章节梗概
1.安全服务与安全需求
2.报文鉴别的安全需求
3.对报文加密来实现报文鉴别
4.报文鉴别码
5.哈希函数
6.生日攻击
二、安全服务与安全需求
2.1 引入
通信保密可以概况所有的安全需求吗?
不能,信息安全需求有很多种,通信保密只是一种安全需求
我们对现实世界的安全需求提炼和归类,用以下抽象名词来概况典型的安全需求:
保密性( Confidentiality )
完整性(lntegrity )
可用性(Availability )
可认证(Authentication)
抗抵赖/抗否认(Non-repudiation )
2.2 安全需求
1.保密性:防止未经授权的访问
主要指两方面保密安全性:
数据保密安全性(公开密钥、对称密钥)
系统保密安全性(典型实现:访问控制):始于70年代美国国防部﹑主要是操作系统里设置访问控制,通过访问控制矩阵实现
2.完整性((lntegrity) :防止未经授权的修改或篡改
主要指两方面:
数据层面:用加密方法实现
系统层面(典型例子:计算机病毒﹑数据库里的事务):计算机病毒总有这样一个特征通过修改或篡改系统文件把自己加载到系统文件里去,这个叫计算机病毒。用报文鉴别和哈希函数实现事务中断也是对完整性的破坏,原子性特点可以解决
3.可用性(Availability ) :在任何时候合法用户的访问请求应该被满足
指的是业务连续型,在计算机或信息系统里对可用性的威胁
经典例子(拒绝服务攻击DOS或分布式拒绝服务攻击DDOS)
Dos/DDOS目前还是一个大的比较难以解决的问题,是典型的对可用性的威胁
4.可认证(Authentication) :和我通信的人的身份需要得到确认
5.抗抵赖l抗否认( Non-repudiation) :当通信发生之后,通信的任何一方不能抵赖
一种特殊需求,不同于CIA安全属性,通信双方利益不一致
其中可认证性和抗抵赖性是互联网发展产生的新安全需求。
2.3 区分安全服务与安全需求
都是指同一样的5个抽象名词
看问题视觉不一样
密码机制使用者来说是安全需要
密码机制的提供者来说是安全服务
2.4 破坏的安全需求
泄密、流量分析、修改内容、破坏数据包收到的先后顺序、不承认发送过某个报文、冒名顶替、浏览器访问网银web服务器应用的安全需求
三、报文鉴别的安全需求
3.1 报文鉴别的三重含义(安全需求)
1.保护报文的完整性
2.验证发送者的身份
3.抗抵赖:防止报文发送者抵赖(解决争议)
将尝试以下三种方案实现报文鉴别:
1.报文加密
2.报文鉴别码(MAC)
3.哈希函数( HASH)
注意不是所有的方案都能够完整实现上述报文鉴别所包括的三个安全需求:1)需要仔细甄别2)训练密码学思维3)分析过程比结论重要
3.2 报文加密来实现报文鉴别
报文的安全需求不考虑保密性。
报文加密来实现报文鉴别的两种方式:
1.对称密钥加密
2.公开密钥加密
3.3 报文加密之对称密钥
提供了保密性的安全服务
实现了对发送者身份的验证
知道报文内容在通信过程中没有被篡改
接收到的密文可以解密为明文,但可能难以自动确定报文是否被篡改;
报文应具有合适的结构﹑冗余信息或校验和来检测报文是否被篡改;
保密性:只有A和B知道k
一定程度的报文鉴别:只能来自A,传输过程中没有被纂改(需要由特定的格式冗余)
不能提供抗抵赖:接收者不能伪造报文,发送者不能否认报文。
3.4 报文加密之公开密钥密码
a.如果用公钥加密,能不能实现报文鉴别的安全服务?
1.无法实现报文鉴别所包括的任何一项服务–因为任何人都知道公钥
2.仅能提供“保密性”
b.如果用私钥加密,能不能实现报文鉴别的安全服务?
1.不具有“保密性”—因为任何人都知道公钥
2.可以实现报文鉴别所有的安全需求–仍然需要报文的冗余信息确认报文是否被篡改
使用私钥加密可以实现报文鉴别的所有的三种安全服务
1.完整性—传输过程中没被篡改(需要特定的格式的
冗余)
2.证实发送者A的身份(因为只有A知道PRa)
3.抗抵赖(每一方都可以用PUa来验证)–仍然需要报文的冗余信息确认报文是否被篡改
c.先私钥后公钥
先私钥后公钥,可以实现哪些安全服务?
同时提供保密性和报文鉴别的所有三种安全服务
代价是同时需要两个公钥
总结
a:A→B:E(PUb,M)
保密性:只有B直到PRb
不能进行报文鉴别:每一方都可以用PUb加密报文并声称是A
公钥加密:仅能提供保密性
b:A→B:E(PR,M)
实现报文鉴别所有的三种安全服务
只有A知道PR,用来加密
传输过程中没被篡改(需要特定的格式/冗余)
每一方都可用用PU验证签名(抗抵赖)
私钥加密:报文鉴别的所有三种安全服务
c:A→B:E(PUb,E(PRa,M))
保密性—因为有PUb
完整性、份验证、抗抵赖—因为有PRa
先私钥后公钥加密:保密性、报文鉴别的所有三种安全服务
四、报文鉴别码实现报文鉴别
4.1 报文鉴别码的定义
用加密实现报文鉴别的缺点是什么:开销问题,加密整个报文,相当于用整个报文做了报文鉴别码较难实现自动的
定义:报文鉴别码就是专门用来做报文鉴别的方案
报文鉴别码特性:
1.固定长度的比特串(例如128bit 256bit 等)
2.由报文鉴别码算法生成
①算法的输入:报文和密钥
②算法设计类似对称密钥算法,但不可逆
3.附加到报文上用于报文鉴别
接收者收到报文后:
接收者对报文执行相同方向的计算并检查它是否与收到的MAC匹配
确保报文来自声称的发送者且传输过程中没有被篡改
如图所示的MAC,提供哪些报文鉴别的安全服务
①报文鉴别的完整性
②发送者身份验证
为什么用MAC?
有时候只需要报文鉴别
有时候需要长时间保存数据的完整性(例如档案)
4.2 报文鉴别码的用法
1.用法1
2.用法2
3.用法3
小结:
1.只能实现报文鉴别的第1、2项安全服务;
2.不能实现抗抵赖
4.3 报文鉴别码的性质
1.MAC是密码性质的校验和,表示为:Ck(M)
压缩可变长度的报文M
使用密钥K
输出固定长度的报文鉴别码
2.是一个多对一的函数
可能许多报文有相同的MAC
但是找到这些MAC值相同的报文是非常困难的
4.4 报文鉴别码MAC的要求
对MAC的攻击:
能够找到M’≠M,但是:Ck(M’)=Ck(M)
需要MAC满足如下要求:
①不能通过一个报文和它的MAC,找到另一条有相同MAC的报文
②MAC应该是均匀分布的
③MAC应该取决于报文的每一位
如何构造MAC算法
五、哈希函数
5.1 定义与性质
1.定义:哈希函数是将任意长度的报文压缩到固定长度的二进制串: h=H(M)
a.通常假设哈希函数是公开的,没有密钥
b.注意:MAC使用对称密钥,哈希函数不是加密函数
c.用于检测报文是否被更改->保护完整性
d.能够通过多种不同的方式应用于报文
e.经常用于创建数字签名,注意,哈希函数很少单独使用,通常是和私钥签名结合起来构造数字签名
2.性质:实质上是生成输入文件/报文/数据的指纹
a.h=H(M)
压缩可变长度的报文M
生成固定长度的指纹
b.找到碰撞,构成对哈希的攻击:找到M’≠M,但 H(M’)=H(M)
5.2 对哈希函数的要求
1.可用于任意大小的报文
2.生成固定长度的输出h
3.很容易计算报文M的哈希值:h=H(M)
4.单向性:已知 h,不能计算得到x,使得H(x)=h
5.弱抗碰撞性:给定x,找到y,使得H(y)=H(x)是计算上不可行的
6.强抗碰撞性:找到任意的x, y,使得H(y)=H(x)是计算上不可行的
5.3 哈希函数的应用
5.4 哈希函数的算法实现
哈希函数实现
1.现将报文分组,报文分组异或运算的结果作为哈希值(可以防止随机的报文比特错,但不够安全
2.需要有密码性质的安全性更高的函数
3.哈希算法能够也可以用对称密钥加密算法的CBC模式来构造实现,但是缺点是哈希值短,因为明文分组长度、密文长度限制
4.哈希算法一般用专门设计的哈希算法
5.5 哈希函数的安全性讨论
关于生日攻击的小结: