1、1Information Security:Principles and Practice,2nd Edition美Mark Stamp著张 戈译第9章 简单认证协议29.1 引言协议就是在特定交互活动中所要遵守的规则。在网络领域,协议是指基于网络的通信系统需要遵守的规则。正式的网络协议的例子包括HTTP、FTP、TCP、UDP和PPP等。安全协议是在安全应用中所要遵守的通信规则。一个安全协议必须满足某些特定的安全需求。另外,我们还希望协议运行高效,不仅是计算开销要小,而且带宽利用率要高。一个理想的安全协议一定不能太脆弱。除此之外,即便是一个安全协议所部署的环境发生了变化,该安全协议仍应该能够
2、继续正常运行。39.2 简单安全协议军事上常常需要许多特殊的安全协议,其中一个例子就是敌我识别(identify friend or foe,IFF)协议。这些协议的设计目标是帮助预防友军火力误伤事件。4中间米格攻击59.3 认证协议这个包含三条消息的协议要求:Alice(客户端)首先发起与Bob(服务器)建立连接的请求,并同时宣告她自己的身份。然后,Bob要求Alice提供身份证明,Alice再以她的口令予以响应。最终,Bob利用Alice的口令来认证Alice的身份。存在一些很严重的协议缺陷!其一,如果Trudy能够侦听到所发送的消息,她就可以延迟重放这些消息,以说服Bob相信她就是Ali
3、ce。其二,Alice的口令是明文传送的。如果在从Alice的计算机中发送出口令时Trudy侦听到了这个消息,Trudy就知道了Alice的口令。6基于哈希值的简单认证协议主要缺陷:仍会遭受重放攻击,即Trudy记录下Alice发送的消息,稍后再次将其发送给Bob。要想认证Alice,Bob需要借助一种所谓“challenge-response”的交互机制,即Bob先发送一个challenge给Alice,而从Alice返回的response必须是只有Alice才能够提供并且Bob可以验证的某种数据。为了防止发生重放攻击,Bob可以在这个challenge中混合一个“一次性数值”,或者称为no
4、nce值。也就是说,Bob每次发送一个唯一的challenge值,而这个challenge值将用于计算相应的response值。这样,Bob就能够将当前response和之前response的一个重放区分开来。7对于认证协议设计的第一个严肃的行动就是增加防重放攻击的能力!主要的问题就是Bob必须知道Alice的口令。89.3.1 利用对称密钥进行认证基于对称密钥的认证协议 这个协议类似于前面讨论过的基于口令的challenge-response认证协议,但是并不使用口令对nonce值执行哈希运算,而是使用共享的对称密钥KAB对nonce值R实施加密。基于对称密钥的认证协议允许Bob认证Alic
5、e,因为Alice能够使用KAB对nonce值R进行加密,而Trudy不能。这个协议还能够防止重放攻击,主要是得益于nonce值R,这个值能够确保每一个response都是新鲜的。此协议尚不具备相互认证的能力!9双向认证协议10第三个消息仅仅是第二个消息的一次重放,所以它并不能证明有关发送方的任何信息,到底是Alice还是Trudy。可能遭受类似之前所讨论的中间米格类型的攻击Trudy的攻击!一个单向(非相互式)认证的协议用于双向认证可能会是不安全的。协议的设计(以及针对协议的攻击)可能需要非常精妙的处理。11增强的双向认证协议在协议中让参与交互的双方做完全相同的操作,并不是一个好主意,因为那
6、样会给攻击者留下可乘之机。另外一个经验就是,即便对协议做出微小的调整,也有可能在安全性方面获得较大的改观。129.3.2 利用公开密钥进行认证基于公开密钥技术进行认证协议设计的首次尝试。这个协议允许Bob认证Alice,因为只有Alice能够执行第三条消息中返回值R所需要的私钥操作。寓意:不应该将用于加密的密钥对再用来进行签名操作。13基于数字签名体制的认证协议与基于公开密钥加密体制的认证协议有相似的安全问题。149.3.3 会话密钥使用会话密钥的目的是限制利用某个特定密钥所加密的数据的数量,也是用来控制因某个会话密钥被破解而造成的影响。会话密钥可以用来为传送的消息提供机密性保护或者完整性保护
7、(或者二者兼有)。将会话密钥包含在之前安全的基于公钥认证的协议当中的认证协议一个可能的顾虑就是它不能够提供双向认证!15基于数字签名体制的认证协议和会话密钥致命的缺陷:因为密钥被签名了,所以任何人都可以利用Bob(或者Alice)的公钥,从而找到会话密钥K。16进一步完善!进一步完善!双向认证协议和会话密钥先加密后签名的协议在这两种情况下,攻击者要想恢复出K似乎都需要破解其中的公钥加密方案,如果确实如此,那么这两种方式在安全性上并无差别。179.3.4 完全正向保密完全正向保密或简称为PFS(perfect forward secrecy)假如Bob和Alice共享一个长期使用的对称密钥KAB
8、。如果他们想要启用PFS机制,他们就绝对不能使用该密钥KAB作为加密密钥。相反,Alice和Bob必须协商一个会话密钥KS,并且当不再使用KS时就忘掉这个密钥,从而使得即便Trudy以后找到了KAB,她也无法确定KS,这样,即使她将Alice和Bob之间交互的所有消息都记录下来也没有用。针对PFS的朴素攻击 18利用一个短时的Diffie-Hellman密钥交换机制实现PFS如果我们想要将Diffie-Hellman密钥交换体制用于PFS,我们就必须能够防止中间人攻击,当然,我们也必须通过某种方式来确保实现PFS。图9-21所示的PFS协议有一个有趣的特性,就是一旦Alice和Bob忘记了他们
9、各自的秘密指数,即便是他们自己也无法重构会话密钥KS。199.3.5 相互认证、会话密钥以及PFS我们将前面所有的这些因素结合在一起,设计一个双向相互认证协议,其中可以建立会话密钥,并且同时还具备PFS体制的功能。209.3.6 时间戳时间戳T是一个时间值,通常是以毫秒表示。基于某些考虑,时间戳可以用来替换nonce值时间戳的好处是我们不再需要为交换nonce值而浪费任何的消息,前提是当前时间对于Alice和Bob都是可知的。时间戳带来的安全问题:1.时间戳的使用意味着时间是一个关键性的安全参数。2.我们不能依赖于系统时钟的完全同步,所以我们必须允许一定的时间偏差。21利用时间戳的安全的先加密
10、后签名协议229.4 身份认证和TCP协议基于TCP协议进行认证的实例只要这个连接保持激活状态,Bob就将接收到来自Trudy的数据,并认为这是来自Alice的。不过,当由Bob发送给Alice的IP地址的那些数据到达Alice端时,Alice将会终止这个连接,因为她并没有完成三次握手的过程。为了防止这种情况的发生,Trudy可以对Alice发起一个拒绝服务攻击。这个攻击实际上众所周知,结果就是要求初始的序列号以随机的方式生成。23初始序列号绘制图解即便初始序列号是随机的,依赖于TCP连接的认证方式也不会是个好主意。249.5 零知识证明零知识证明也叫ZKP。Alice想要向Bob证明,她知道
11、一个秘密,但又不泄露有关这个秘密的任何信息即无论是Trudy还是Bob都不能获得有关该秘密的任何信息。而Bob必须能够验证Alice知道这个秘密,即便他无法获得关于这个秘密的任何信息。面对这样一个问题,看起来似乎是无计可施。但是,存在一种交互式概率过程,其中Bob能够以一种绝对高的概率来验证Alice是否知道这个秘密。这是一种交互式证明系统的实例。Bob洞穴问题Bob洞穴协议:25Alice进入到Bob洞穴中,通过抛硬币的方式来选择到达R点或S点。然后Bob进入洞穴到达Q点。假设Alice碰巧选择了到达R点。虽然Bob洞穴表明零知识证明在理论上是可能的,但是基于洞穴的协议并不是特别普遍。Fia
12、t-Shamir协议依赖于这样一个事实,求解一个模N的平方根,其难度与因式分解基本相当。假设N=pq,其中p和q都是素数。Alice知道一个秘密值S,当然,她必须保守这个秘密。N的值和v=S2 mod N都是公开的。Alice必须要说服Bob使其相信她知道S,但又不能泄露任何有关S的信息。Fiat-Shamir协议的图解26Alice随机选择一个值r,并计算出x=r2 mod N。在第一条消息中,Alice将x发送给Bob。在第二条消息中,Bob选择一个随机值e0,1,并将其发送给Alice,于是Alice再计算出数值y=r Se mod N。在第三条消息中,Alice将y发送给Bob。最后,
13、Bob还需要验证下式是否成立:y2=xve mod N如果所有人都遵守这个协议,上式就成立,因为:y2=r2S2e=r2(S2)e=xve mod N 式(9.1)如果Bob发送e=1,那么Alice在第三条消息中以y=rS mod N作为响应,于是等式(9.1)就变成y2=r2S2=r2(S2)=xv mod N这种情况下,Alice必须知道秘密值S。如果Bob在第二条消息中发送e=0,那么Alice在第三条消息中会以y=r mod N作为响应,于是等式(9.1)就变成:y2=r2=x mod N请注意,在这种情况下,Alice不必知道秘密值S。Fiat-Shamir协议要求Bob选择的ch
14、allenge e0,1必须是不可预测的。另外,Alice必须在协议的每一次迭代中都生成一个随机值r,否则她的秘密值S将会被泄露,27Fiat-Shamir协议是否真正具备零知识的特性?从协议自身的设计来看,没有任何显而易见的途径有助于令Bob(或者任何其他的人)确定Alice的秘密值S。Fiat-Shamir协议确实能够带来安全效益呢?公钥技术的运用使得参与者更加难以保持匿名的身份。零知识证明的一个潜在优势是它允许以匿名的方式进行身份认证。在Fiat-Shamir协议中,双方都必须知道公共值v,但是v值中并没有任何能够表明Alice身份的信息,并且在协议中所传递的消息里也没有任何表征Alice身份的信息。289.6 最佳认证协议通常来说,并不存在所谓的“最佳”认证协议。对于一个特定的场景来说,认证协议是否为最佳要依赖于许多因素。至少我们需要考虑如下这些问题:应用的敏感性主要着眼于什么地方?能够容忍多大的时延?是否需要将时间作为一个安全性的关键参数来处置?都支持哪些类型的加密方案公开密钥方案、对称密钥方案或者是基于哈希函数的方案?是否要求双向相互认证?是否要求提供会话密钥?是否要求完全正向保密?是否要考虑匿名需求?299.7 小结本章内容回顾 在非安全网络上实现身份认证并建立会话密钥的几种不同方式 完全正向保密特性 并考察了使用时间戳的优势(以及潜在的缺陷)30