Otway-Rees

    这个协议也是使用对称密码[1224]。

    (1)Alice产生一报文,此报文包括一个索引号I、她的名字A、Bob的名字B和一随机数RA,用她和Trent共享的密钥对此报文加密,她将索引号、她的名字和Bob的名字与她加密的报文一起发送给Bob:

I,A,B,EA(RA,I,A,B)

    (2)Bob产生一报文,此报文包括一新的随机数RB、 索引号I、Alice的名字A和Bob的名字B。用他与Trent共享的密钥对此报文加密。他将Alice的加密报文、索引号、Alice的名字、Bob的名字与他加了密的报文一起发送给Trent:

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

    (3)Trent产生一随机会话密钥K,然后,产生两个报文。一个是用他与Alice共享的密钥对Alice的随机数和会话密钥加密,另一个是用与Bob共享的密钥对Bob的随机数和会话密钥加密。他将这两个报文与索引号一起发送给Bob:

I,EA(RA,K),EB(RB,K)

    (4)Bob将用Alice的密钥加密的报文连同索引号一起发送给Alice:

I,EA(RA,K)

    (5)Alice解密报文,恢复出她的密钥和随机数,然后她确认协议中的索引号和随机数都没有改变。

    假设所有随机数都匹配,并且按照这种方法索引号没有改变,Alice和Bob现在相互确认对方的身份,他们就有一个秘密密钥用于通信了。

Kerberos

    Kerberos是Needham-Schroeder协议的变型,将在24.5节中详细讨论它。在基本的Kerberos第5版本的协议中, Trent和Alice、Bob中的每人各共享一密钥。Alice想产生一会话密钥用于与Bob通信。

    (1)Alice将她的身份A和Bob的身份B发送给Trent:

A,B

    (2)Trent产生一报文,该报文由时间标记T、使用寿命L、随机会话密钥K和Alice的身份构成。他用与Bob共享的密钥加密报文。然后,他取时间标记、使用寿命、会话密钥和Bob的身份,并且用他与Alice共享的密钥加密,并把这两个加密报文发给Alice:

EA(T,L,K,B),EB(T,L,K,A)

    (3)Alice用她的身分和时间标记产生报文,并用K对它进行加密,将它发送给Bob。Alice也将从Trent那里来的用Bob的密钥加密的报文发送给Bob:

EK(A,T),EB(T,L,K,A)

    (4)Bob用K对时间标记加1的报文进行加密,并将它发送给Alice:

EK(T+1).

    这个协议是可行的,但它假设每个人的时钟都与Trent的时钟同步。实际上,这个结果是通过把时钟同步到一个安全的定时服务器的几分钟之内,并在这个时间间隔内检测重放而获得的。

Neuman-Stubblebine

    不管是由于系统缺陷还是由于破坏,时钟可能变得不同步。如果时钟不同步,这些协议的大多数可能受到攻击[644]。如果发送者的时钟比接收者的时钟超前,Mallory能够截取从发送者来的报文,当时间标记变成接收地当前时间时,Mallory重放报文。这种攻击叫做隐瞒重放,并有使人气愤的结果。

    这个协议首先在[820]中提出,并在[1162]中改进以图反击这种隐瞒攻击。它是Yahalom协议的增强,是一个非常好的协议:

    (1)Alice把她的名字和随机数一起送给Bob。

A,RA

    (2)Bob把Alice的名字连同她的随机数、和一个时间标记一起,用他与Trent共享的密钥加密,并把加密的结果、他的名字和一个新的随机数一起发给Trent。

B,RB,EB(A,RA,TB

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

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

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

EB(A,K,TB),EK(RB

    (5)Bob解出用他的密钥加密的消息,提出密钥K,并确认TB和RB与它们在第(2)步中有相同的值。

    假设随机数和时间标记都匹配,Alice和Bob就会相信互相的身份,并共享一个秘密密钥。因为时间标记只是相对于Bob的时间,所以不需要同步时钟,Bob只检查他自己产生的时间标记。

    这个协议的好处是:在某些预先确定的时间内,Alice能够用从Trent那里接收的消息与Bob作后续的鉴别。假设Alice和Bob完成了上面的协议和通信,然后终止连接,Alice和Bob也不必依赖Trent,就能够在3步之内重新鉴别。

    (1)Alice将Trent在第(3)步发给她的信息和一个新的随机数送给Bob。

EB(A,K,TB),R’A

    (2)Bob发给Alice另一个新的随机数,并且Alice的新随机数用他们的会话密钥加密。

R’B,EK(R’A

    (3)Alice用他们的会话密钥加密Bob的新随机数,并把它发给Bob。

EK(R’B

    新随机数防止了重放攻击。