网络安全协议(三)--基本安全协议

安全协议
是建立在密码体制基础上的一种通信协议,计算机网络或分布式系统中的参与者通过安全协议的消息步,借助于密码算法来达到密钥分配、身份认证、信息保密以及安全地完成电子交易等目的。

安全协议的目的
安全协议是一种通信协议,它的主要目的是利用密码技术实现网络通信中的密钥分发和身份认证。安全协议是网络通信安全系统的基础,是实现计算机网络安全的关键。安全协议的目标分为认证性、非否认性、可追究性、公平性四种,其中,认证性应用最为广泛和重要。

安全协议的分类
根据参与者以及密码算法的使用情况进行分类,可以分为七类:
无可信第三方的对称密钥协议
具有可信第三方的对称密钥协议
无可信第三方的公钥协议
具有可信第三方的公钥协议
使用对称密钥的签名协议
使用对称密钥的重复认证协议
应用密码校验函数(Cryptographic Check Functions)的认证协议
按照协议完成的功能进行划分,可以分成以下四类:
密钥交换协议
认证协议
认证和密钥交换协议
电子商务协议

密钥交换协议
应用密码算法的前提是通信双方具有相应的加密和解密密钥,对这些密钥进行发布或协商的协议称为密钥交换协议。通常的密码技术是用单独的密钥对每一次单独的会话加密,这个密钥称为会话密钥,因为它只在一次特殊的通信中使用。会话密钥只用于通信期间。这个会话密钥怎么到达会话者的手中是很复杂的事情。

使用对称密码的密钥交换协议
采用对称密码体制时,通信双方使用同一个密钥(称为秘密密钥)进行信息的加密和解密。密钥交换协议的目的是使通信双方共同拥有这个秘密密钥。因而,对密钥交换协议的安全要求包括:
① 秘密性:保证非法主体不能获知该秘密密钥;
② 完整性:保证双方拥有的是同一个秘密密钥;
③ 可用性:保证密钥交换协议最终可以执行结束,并且在协议执行结束后双方可以建立起秘密密钥。
协议
(1) A呼叫T,并请求一个与B通信的会话密钥;
(2) T产生一随机会话密钥,并对它的两个副本加密:一个用A的密钥,另一个用B的密钥加密。T发送这两个副本给A;
(3) A对她的会话密钥的副本解密;
(4) A将B的会话密钥副本送给B;
(5) B对他的会话密钥的副本解密;
(6) A和B用这个会话密钥安全地通信。
上述协议存在的问题
如果M破坏了T,整个网络都会遭受损害:他有T与每个用户共享的所有秘密密钥;他可以读所有过去和将来的通信业务。他所做的事情就是对通信线路进行搭线窃听,并监视加密的报文业务。
这个系统的另外一个问题是T可能会成为瓶颈:他必须参与每一次密钥交换

使用公钥密码的密钥交换协议
采用非对称秘密体制时,通信双方各拥有一对密钥,称为公开密钥和私有密钥。公开密钥可以向外界公布,由其它协议参与者用来对消息进行加密、解密或签名验证;私有密钥不对外公开,由密钥所属者用来相应地对消息进行解密、加密或签名。
对密钥分配协议的安全要求有:
① 完整性:保证接收方收到的密钥确实是发送方的公开密钥;
② 可用性:保证密钥分配协议最终可以执行结束,并且通信双方最终可以得到对方的公开密钥。
协议
(1) A从KDC得到B的公开密钥。
(2) A产生随机会话密钥,用B的公开密钥加密它,然后传给B。
(3) B用自己的私钥解密A的信息。
(4) A、B两人用同一会话密钥对他们的通信进行加密。

认证协议
当A登录进入计算机(或自动柜员机、电话银行系统、或其它的终端类型)时,计算机怎么知道并确认她是谁呢?这需要用认证协议来解决。
传统的办法是用通行字来解决这个问题的。A先输入她的通行字,然后计算机确认这个通行字是正确的,从而推断出登录的人是A。A和计算机两者都知道这个秘密通行字,而且A每次登录时,计算机都要求A输入通行字。

利用单向函数的认证
计算机存储通行字的单向函数而不是存储通行字。这样,认证过程就是:
(1) A将她的通行字传送给计算机。
(2) 计算机完成通行字的单向函数计算。
(3) 计算机把单向函数的运算结果和它以前存储的值进行比较。
用单向函数加密的通行字文件还是脆弱的
字典式攻击
Salt是使这种攻击更困难的一种方法。
Salt是一种随机字符串,与通行字连接在一起,再用单向函数对其运算。然后将Salt值和单向函数运算的结果存入主机数据库中。

SKEY认证
SKEY是一种认证程序,又称为一次性通行字系统(One-Time Password System),依赖于单向函数的安全性,采用MD4或MD5算法。

采用公开密钥密码的认证
基本协议:
(1) 主机发送一个随机字符串给A;
(2) A用她的私钥对此随机字符串加密,并将此字符串和她的名字一起传送回主机;
(3) 主机在它的数据库中查找A的公开密钥,并用公开密钥解密;
(4) 如果解密后的字符串与主机在第一步中发送给A的字符串匹配,则允许A访问系统。
安全的身份证明协议:
(1) A根据一些随机数和她的私钥进行计算,并将结果传送给主机;
(2) 主机将一不同的随机数传送给A;
(3) A根据这些随机数(她产生的和她从主机接收的)和她的私钥进行一些计算,并将结果传送给主机;
(4) 主机用从A那里接收来的各种数据和A的公开密钥进行计算,以此来验证A是否知道自己的私钥;
(5) 如果她知道,则她的身份就被证实了。

用联锁协议互相认证
假设A和B是想要互相认证的两个用户。他们每人有一个另一人知道的通行字:A的通行字是PA,B的是PB。
(1) A和B交换公开密钥;
(2) A用B的公开密钥加密PA,并将它传送给B;
(3) B用A的公开密钥加密PB,并发送给A;
(4) B解密他在第(2)步中接收的信息,并验证它是否正确;
(5) A解密她在第(3)步中接收的信息,并验证它是否正确。
前述的协议是不安全的,因为M可以成功发起“中间人攻击” :
(1) A和B交换公开密钥。M截取这两个报文,他用自己的公开密钥代替B的,并将它发送给A。然后,他又用他的公开密钥代替A的,并将它发送给B;
(2) A用“B”的公开密钥对PA加密,并发送给B。M截取这个报文,用他的私钥对PA解密,再用B的公开密钥加密,并将它发送给B;
(3) B用“A”的公开密钥对PB加密,并发送给A。M截取它,用他的私钥对PB解密。再用A的公开密钥对它加密,并发送给A;
(4) A对PB解密,并验证它是正确的;
(5) B对PA解密,并验证它是正确的。

SKID协议
SKID2和SKID3是为RACE(欧洲高级通信技术与开发)的RIPE(完整性基本评估)项目开发的对称密码识别协议。它们都采用MAC来提供安全性,并且SKID2和SKID3两个协议都假设A和B共享同一秘密密钥K。
在SKID2中,允许B向A证明他的身份。下面是这个协议的过程:
(1) A选用随机数RA(RIPE文件规定64比特的数),并将它发送给B;
(2) B选用随机数RB(RIPE文件规定64比特的数),将下面的数发送给A:
RB,HK(RA,RB,B)->A
(3) HK是MAC(RIPE文件建议的RIPE-MAC函数)。B是B的名字。
(4) A计算HK(RA,RB,B),并和她从B那里接收到的信息比较,如果结果一致,那么A知道她正与B通信。
SKID3提供了A和B之间的相互认证。第(1)步到第(3)步与SKID2是一样的,以后的协议按下面进行:
(1) A向B发送:
(2) HK(RB,A)->B
(3) B计算HK(RB,A),并将它与从A那里收到的比较,如果相同,那么B相信他正与A通信。
这个协议对中间人攻击来说是不安全的。一般地,中间人攻击能够击败任何不包括某些秘密的协议。

信息认证
采用信息进行认证时,需要解决的问题是,当B从A那里接收信息,他怎么判别接收到的信息是可信的呢?解决这个问题的一个办法是使用签名技术,如果A对自己的信息进行签名,就能够使B相信信息的来源。

认证和密钥交换协议
认证和密钥交换协议综合利用密钥交换和认证,以解决一般的计算机问题:A和B分别坐在网络的两端,他们想安全地交谈。A和B怎么交换秘密密钥呢?他们中的每个人怎么确信他们当时正在同对方交谈而不是同M谈话呢?
相关符号:
在这里插入图片描述
简单对称密钥管理协议
协议过程
(1) A将时间标记TA连同B的名字和随机会话密钥K一起,用她和T共享的密钥对整个报文加密。她将加了密的报文和她的身份A一起发送给T:
A,EA(TA,B,K)->T
(2) T解密从A来的报文。然后将一个新的时间标记TB连同A的名字和随机会话密钥一起,用他与B共享的密钥对整个报文加密,并将它发送给B:
EB(TB,A,K)->B
在这里插入图片描述
带随机数的对称密钥管理协议
假定A和B两人各与T共享一秘密密钥。协议过程:
(1) A,RA->B
(2) B,EB(A,RA,RB)->T
(3) EA(B,K,RA,RB),EB(A,K)->A
(4) EB(A,K),EK(RB)->B
(5) B用他的密钥解密报文,提取K,并确认RB与他在第(2)步中的值一样。
在这里插入图片描述
带随机数的对称密钥协议的改进
这个协议由Roger Needham和Michael Schroeder发明,也采用对称密码和T。协议过程如下:
(1) (A,B,RA)->T
(2) EA(RA,B,K,EB(K,A))->A
(3) EB(K,A)->B
(4) EK(RB)->A
(5) EK(RB-1)->B
(6) B用K对信息解密,并验证它是RB-1。
在这里插入图片描述
带索引的对称密钥协议
在这里插入图片描述
带时间标记的对称密钥协议
也称为Kerberos协议,是一种Needham-Schroeder协议,面向开放系统的,可以为网络通信提供可信第三方服务的认证机制。协议内容为:
(1) A,B->T
(2) EA(T,L,K,B),EB(T,L,K,A)->A
(3) EK(A,T),EB(T,L,K,A)->B
(4) EK(T+1)->A
在这里插入图片描述
带时间标记和同步的协议
也称为Neuman-Stubblebine协议。不管是由于系统缺陷还是由于破坏,时钟可能变得不同步。如果时钟不同步,这些协议的大多数可能受到攻击。如果发送者的时钟比接收者的时钟超前,M能够截取从发送者来的报文,当时间标记变成接收地当前时间时,M重放报文。这种攻击叫做隐瞒重放,并有使人气愤的结果。
这个协议是Yahalom协议的增强,下面是协议过程:
(1) A,RA->B
(2) B,RB,EB(A,RA,TB)->T
(3) EA(B,RA,K,TB),EB(A,K,TB),RB->A
(4) EB(A,K,TB),EK(RB)->B
(5) B解出用他的密钥加密的消息,提出密钥K,并确认TB和RB与它们在第(2)步中有相同的值。
在这里插入图片描述
这个协议的好处是:在预先确定的时间内,A能够用从T那里接收的消息与B作后续的认证。假设A和B完成了上面的协议和通信,然后终止连接,A和B也不必依赖T,就能够在3步之内重新认证。
(1) A将T在第(3)步发给她的信息和一个新的随机数送给B。
(2) B发给A另一个新的随机数,并且A的新随机数用他们的会话密钥加密。
(3) A用他们的会话密钥加密B的新随机数,并把它发给B。
重新认证过程:
在这里插入图片描述
分布式认证安全协议
分布式认证安全协议(DASS)是由数字设备公司开发的,也提供相互认证和密钥交换。与前面的协议不同,DASS同时使用了公开密钥和对称密码。A和B每人有一个私钥,T有他们公钥签名的副本。
协议过程:
(1) B->T
(2) ST(B,KB)->A
(3) EK(TA),SKA(L,A,KP),SKP(EKB(K))->B
(4) A->T
(5) ST(A,KA)->B
(6) EK(TB)->A
(8) A用K解密TB以确认消息是当前的。
在这里插入图片描述
带T的公开密钥认证协议
也称为Denning-Sacco协议,这个协议也使用公开密钥密码。T保存每个人的公开密钥数据库。
(1) A发送一个有关她和B的身份消息给T:
A,B->T
(2) T把用T的私钥T签名的B的公钥KB发给A。T也把用T的私钥T签名的A自己的公钥KA发给A。
ST(B,KB),ST(A,KA)->A
(3) A向B传送随机会话密钥、时间标记(用她自己私钥签名并用B的公钥加密)和两个签了名的公开密钥。
EB(SA(K,TA)),ST(B,KB),ST(A,KA)->B
(4) B用他的私钥解密A的消息,然后用A的公钥验证她的签名。他检查以确认时间标记仍有效。
在这里插入图片描述
带T和随机数的公开密钥认证协议
协议过程:
(1) A,B->T
(2) ST(KB)->A
(3) EKB(A,RA)->B
(4) A,B,EKT(RA)->T
(5) ST(KA),EKB(ST(RA,K,A,B))->B
(6) EKA(ST(RA,K,A,B),RB)->A
(7) EK(RB)->B
(8) B解密他的随机数,并验证随机数有没有改变。

在这里插入图片描述
秘密共享
Blakley和Shamir分别于1979年独立地提出了秘密共享的概念,并分别设计了具体的体制。秘密共享体制为密钥管理提供了一个非常有效的途径,在政治、经济、军事、外交中得到了广泛应用。
秘密共享的一般思想是:
为了解密一种秘密,需要多方协作才能完成。某个人只有自己的密钥还不够,还需要另外的一些帮助才能获取整个秘密。结果是:可以设计复杂的方案,方案明确指定哪些人必须相互协作,才可以解密特定消息。

基于秘密共享的协议
Shamir门限方案
Shamir的方法是将一个含有秘密的数据D(例如,密码系统中的密钥,保险柜的号码组合等)分成n块D1,… Dn,并满足下面的要求:
知道任意k个或更多的Dj,就能够有效地计算出D;
知道任意k-1个或更少的Dj,由于信息不够,不可能有效地计算出D。
Shami称这种方法为(k,n)门限方案。
Asmuth-Bloom门限方案
1980年,Asmuth和Bloom提出了一种基于中国剩余定理的( k,n)门限方案。
Asmuth和Bloom设计了一个有效的重新构造D的算法,其运算量是O(k),存储量O(n)。因此,他们的方案渐进的更有效于前述的Shamir多项式方案,回忆Shamir的门限方案所需要的工作量是O(k log2k)。当然在D值不大的情形,这两个方案区别不大。

秘密共享的例子
有骗子的秘密共享:
来自外部的人员窃取内部人员的“影子”:上校A和B与M正坐在掩体中。M假装也是上校,他并没有合法的“影子”,而其他人都没有办法识破。同样要求发射导弹的消息从总统那里来了,并且每人都出示了他们的“影子”,“哈,哈!”M说,“我伪造了从总统那里来的消息,现在我知道你们两人的‘影子’了”。
没有T的秘密共享:
在五个官员中必须要有三个人同时插入他们的钥匙,才能打开银行的金库。没有人知道整个秘密,也没有裁判者T来把秘密分成5部分,而是使用一种五个官员可以恢复秘密的协议。通过这个协议,每人分得一部分秘密,而官员们在重构秘密之前,无人知道这个秘密。
不暴露共享的共享秘密:
上述方案有一个问题,就是当每个人聚到一起重构秘密时,就可能暴露他们自己的秘密。
其实可以采用这种方法避免出现这种情况:如果最终的共享秘密是私钥(例如对数字签名),那么n个共享者中的每一个都可以完成文件的一部分签名。在第n部分签名后,文件已经用共享的私钥签名,并且共享者中没有人了解任何其它人的秘密。
可验证的秘密共享:
假设T给A、B、C和D每人分配了一部分秘密。他们中的任何人想知道他们是否持有有效秘密部分,唯一的办法就是尝试着去重构秘密。假设T发给B一个假的共享秘密,或者由于通信错误,B偶然接收到一个坏的共享秘密。因此要求可验证的秘密共享方案能够允许他们中的每个人分别验证自己持有一个有效的共享秘密,而不用重构这个秘密。

数据库的密码保护
数据库安全的重要性
首先,数据库安全对于保护组织的信息资产非常重要。
其次,保护数据库系统所在网络系统和操作系统非常重要,但仅仅如此远不足以保证数据库系统的安全。
此外,数据库安全的不足不仅会损害数据库本身,而且还会影响到操作系统和整个网络基础设施的安全。
最后,数据库是电子商务、电子政务、ERP等关键应用系统的基础,它的安全也是这些应用系统的基础。
数据库的安全问题
在这里插入图片描述