使用数字签名的密钥交换

    在会话密钥交换协议期间采用数字签名也能防止“中间人攻击”。Trent对Alice和Bob的公开密钥签名。签名的密钥包括一个已签名的所有权证书。当Alice和Bob收到密钥时,他们每人都能验证Trent的签名。那么,他们就知道公开密钥是哪个人的。密钥的交换就能进行了。

    Mallory会遇到严重的阻力。他不能假冒Bob或者Alice,因为他不知道他们的私钥。他也不能用他的公开密钥代替他们两人的公开密钥,因为当他有由Trent签名的证书时,这个证书是为Mallory签发的。他所能做的事情就是窃听往来的加密报文,或者破坏通信线路,阻止Alice和Bob谈话。

    这个协议也动用Trent,但KDC遭受损害的风险比第一种协议小。如果Mallory危及到Trent的安全(侵入KDC),他所得到的只是Trent的私钥。这个密钥使他仅能对新的密钥签名;它不会让他对任何会话密钥解密,或者读取任何报文。为了能够读往来的报文,Mallory不得不冒充网络上的某个用户,并且欺骗合法用户用他的假的公开密钥加密报文。

    Mallory能够发起那种攻击。持有Trent的私钥,他能够产生假的签名密钥去愚弄Alice和Bob。然后Mallory就能够在数据库中交换他们真正的签名密钥,或者截取用户向数据库的请求,并用他的假密钥代替。这使他能够发起“中间人攻击”,并读取他人的通信。

    这种攻击是可行的,但记住Mallory必须能够截取和修改信息。在一些网络中,截取和修改报文比被动地坐在网络旁读取往来的报文更难。在广播信道上,如无线网中,几乎不可能用其他报文来替代某个报文(整个网络可能被堵塞)。在计算机网络中做这种事要容易些,并且随时日的推移变得越来越容易,例如IP欺骗、路由攻击等等;主动攻击并不一定表示有人用数据显示仪抠出数据,且也不限于三字符的代理。

    密钥和报文传输

    Alice和Bob在交换报文前不需要完成密钥交换协议。在下面的协议中,Alice在没有任何以前的密钥交换协议的情况下,将报文M传送给Bob:

    (1)Alice产生一随机会话密钥K,并用K加密M。

EK(M)

    (2)Alice从数据库中得到Bob的公开密钥。

    (3)Alice用Bob的公开密钥加密K。

EB(K)

    (4)Alice将加密的报文和加密的会话密钥传送给Bob。

EK(M),EB(K)

    为了增加安全性,防止“中间人攻击”,Alice可对传输签名。

    (5)Bob用他的私钥将Alice的会话密钥K解密。

    (6)Bob用会话密钥将Alice的报文解密。

    这个混合系统表示,公开密钥密码怎样被经常用于通信系统的。它可以和数字签名、时间标记以及任何其它安全协议组合在一起使用。

    密钥和报文广播

    没有理由认为Alice不会把加了密的报文传送给几个人。在这个例子中,Alice就把加密报文传送给Bob、Carol和Dave:

    (1)Alice产生一随机会话密钥K,并用K加密报文M。

EK(M)

    (2)Alice从数据库中得到Bob、Carol和Dave的公开密钥。

    (3)Alice用Bob的公开密钥加密K,用Carol的公开密钥加密K,用Dave的公开密钥加密K。

EB(K),EC(K),ED(K)

    (1)Alice广播加密的报文和所有加密的密钥,将它传送给要接收它的人。

EB(K),EC(K),ED(K),EK(M)

    (5)只有Bob、Carol和Dave能用他们的私钥将K解密。

    (6)只有Bob、Carol和Dave能用K将Alice的报文解密。

    这个协议可以在存储转发网络上实现。中央服务器能够将Alice的报文,连同特别加密的密钥一起转发给Bob、Carol和Dave。服务器不一定是安全的或者可信的,因为它不可能对任何报文解密。