3.3 鉴别和密钥交换

    这些协议综合利用密钥交换和鉴别,解决了一般的计算机问题:Alice和Bob分别坐在网络的两端,他们想安全地交谈。Alice和Bob怎么交换秘密密钥呢?他们中的每个人怎么确信他们当时正在同对方交谈而不是同Mallory谈话呢?大多数协议假设Trent与参与者双方各共享一个不同的秘密密钥,并且所有这些密钥在协议开始前都在适当的位置。在这些协议中使用的符号见表3.1。        

表3.1     在鉴别和密钥交换协议中使用的符号

       A                          Alice的名字

       B                          Bob的名字

       EA                              用Trent和Alice共享的密钥加密

       EB                         用Trent和Bob共享的密钥加密

       I                          索引号

       K                          随机会话密钥

       L                          生存期

       TA,TB                     时间标记

       RA,RB                     随机数,分别由Alice和Bob选择的数。

Wide-Mouth Frog

    Wide-Mouth Frog协议[283,284]可能是最简单的对称密钥管理协议,该协议使用一个可信的服务器。Alice和Bob两人各和Trent共享一秘密密钥。这些密钥只作密钥分配用,而不是用作加密用户之间的实际报文。会话密钥只通过两个报文就从Alice传送给Bob:

    (1)Alice将时间标记TA连同Bob的名字B和随机会话密钥K一起,用她和Trent共享的密钥对整个报文加密。她将加了密的报文和她的身份A一起发送给Trent:

A,EA(TA,B,K)

    (2)Trent解密从Alice来的报文。然后将一个新的时间标记TB连同Alice的名字和随机会话密钥一起,用他与Bob共享的密钥对整个报文加密,并将它发送给Bob:

EB(TB,A,K)

    这个协议最重要的假设是Alice完全有能力产生好的会话密钥。请记住,随机数是不容易产生的,无法相信Alice能够做好这件事。

Yahalom

    在这个协议中,Alice和Bob两人各与Trent共享一秘密密钥[283,284]。

    (1)Alice将她的名字连同随机数RA一起,将它发送给Bob。

A,RA

    (2)Bob将Alice的名字、Alice的随机数、他自己的随机数RB一起用他和Trent共享的密钥加密。再将加密的结果和Bob的名字一起发送给Trent。

B,EB(A,RA,RB

    (3)Trent产生两个报文,第一个报文由Bob的名字、随机会话密钥K、Alice的随机数和Bob的随机数组成。用他和Alice 共享的密钥对所有第一个报文加密;第二个报文由Alice的名字和随机会话密钥组成,用他和Bob共享的密钥加密,然后将这两个报文发送给Alice。

EA(B,K,RA,RB),EB(A,K)

    (4)Alice解密第一个报文,提出K,并确认RA的值与她在第(1)步时的值一样。Alice发送两个报文给Bob。第一个报文是从Trent那里接收到的用Bob的密钥加密的报文,第二个是用会话密钥加密的RB

EB(A,K),EK(RB

    (5)Bob用他的密钥解密报文,提取K,并确认RB与他在第(2)步中的值一样。

    结果,Alice和Bob互相确信是正在同对方谈话,而不是跟第三者。这里的新东西是:Bob是同Trent接触的第一人,而Trent仅发送给Alice一个报文。

Needham和Schroeder

    这个协议由Roger Needham和Michael Schroeder发明[1159],也采用对称密码和Trent。

    (1)Alice将由她的名字A,Bob的名字B和随机数RA组成的报文传给Trent。

(A,B,RA

    (2)Trent产生一随机会话密钥K。他用与Bob共享的秘密密钥对随机会话密钥K和Alice名字组成的报文加密。然后用他和Alice共享的秘密密钥对Alice的随机值、Bob的名字、会话密钥K和已加密的报文进行加密,最后,将加密的报文传送给Alice:

EA(RA,B,K,EB(K,A))

    (3)Alice将报文解密并提取K。她确认RA与她在第(1)步中发送给Trent的一样。然后她将Trent用Bob的密钥加密的报文发送给Bob。

EB(K,A)

    (4)Bob对报文解密并提取K,然后产生另一随机数RB。他用K加密它并将它发送给Alice。

EK(RB

    (5)Alice用K将报文解密,产生RB-1并用K对它加密,然后将报文发回给Bob。

EK(RB-1)

    (6)Bob用K对信息解密,并验证它是RB-1。

    所有这些围绕RA、RB、RB-1的麻烦用来防止重放攻击。在这种攻击中,Mallory可能记录旧的报文,在以后再使用它们以达到破坏协议的目的。在第(2)步中RA的出现使Alice确信Trent的报文是合法的,并且不是以前协议的重放。在第(5)步,当Alice成功地解密RB,并将RB-1送回给Bob之后,Bob确信Alice的报文不是早期协议执行的重放。

    这个协议的主要安全漏洞是旧的会话密钥仍有价值。如果Mallory可以存取旧的密钥K,他可以发起一次成功的攻击[461]。他所做的全部工作是记录Alice在第(3)步发送给Bob的报文。然后,一旦他有K,他能够假装是Alice:

    (1)Mallory发送给Bob下面的信息:

EB(K,A)

    (2)Bob提取K,产生RB,并发送给“Alice”:

EK(RB

    (3)Mallory截取此报文,用K对它解密,并发送给Bob:

EK(RB-1)

    (4)Bob验证“Alice”的报文是RB-1。

    到此为止,Mallory成功地使Bob确信他就是Alice了。

    一个使用时间标记的更强的协议能够击败这种攻击[461,456]。在第(2)步中,一个时间标记被附到用Bob的密钥加密的Trent的信息中:EB(K,A,T)。时间标记需要一个安全的和精确的系统时钟,这对系统本身来说不是一个普通问题。

    如果Trent与Alice共享的密钥KA泄露了,后果是非常严重的。Mallory能够用它获得同Bob交谈的会话密钥(或他想要交谈的其他任何人的会话密钥)。情况甚至更坏,在Alice更换她的密钥后Mallory还能够继续做这种事情[90]。

    Needham和Schroeder试图在他们的协议改进版本中改正这些问题[1160]。他们的新协议基本上与发表在同一杂志的同一期上Otway-Rees的协议相同。