8.3 发送密钥

    Alice和Bob采用对称加密算法进行保密通信:他们需要同一密钥。Alice使用随机密钥发生器生成一个密钥,然后必须安全地送给Bob。如果她能在某个地方碰见Bob(一个僻静的小巷,一个无窗的小屋或是木星的某个卫星上),她能将密钥副本交给他,否则就会出问题。公钥加密算法用最小的预先安排可以很好地解决了这个问题,但是这一技术并不总是有效(参见3.1节)。一些系统使用被公认安全的备用信道,Alice可以通过一个可靠的通信员把密钥传送给Bob,也可以用合格的邮政或通宵传递业务来传送。或者,她可能同Bob一起建立另一个希望无人窃听的通信信道。

    Alice可通过他们加密的通信信道把对称密钥送给Bob。但这是愚蠢的,因为如果信道能够保证加密,那么在同一个信道上明文发送加密密钥就能够保证在该信道上的任何偷听者都能破解全部通信。

    X9.17标准描述了两种密钥:密钥加密密钥和数据密钥。密钥加密密钥加密其它需要分发的密钥;而数据密钥只对信息流进行加密。除少数例外,密钥加密密钥必须进行手工分发(尽管也可在一个防窜改设备里安全进行,如,智能卡)。数据密钥的分发更加频繁,更多细节参见文献[75],密钥分发中用到了这两种密钥的概念。

    对密钥分发问题的另一个解决方法是将密钥分成许多不同的部分(见3.6节)然后用不同的信道发送出去:有的通过电话,有的通过邮寄,有的还可以通过通宵专递或信鸽等等(见图8.2)。即使截获者能收集到密钥,但缺少某一部分,他仍然不知道密钥是什么,所以该方法可以用于除个别特殊情况外的任何场合。3.6节讨论了拆分密钥的有关方案。Alice甚至可以用秘密共享方案(见3.7节),允许Bob在传输过程丢失部分密钥时能重构完整密钥。

    Alice可以面对面的或者用刚讨论过的密钥拆分技术将密钥加密密钥送给Bob,一旦他们两人同时拥有了该密钥,Alice就可以先用它对每天的数据密钥进行加密,然后在同一信道上把它传送给Bob。由于用密钥加密密钥对大量的数据加密速度非常慢,它不须经常改动。然而,密钥加密密钥遭到损害就会使那些用它本身加密的密钥加密的所有信息受到损害,所以必须对它进行安全的存储。

图8.2 通过并行信道的密钥分发

大型网络的密钥分发

    在小型网络中,每对用户可以很好地使用密钥加密密钥。如果网络变大,将很快变得令人讨厌。因为每对用户必须交换密钥,n个人的网络总的交换次数为n(n-1)/2。

    6人网络需交换15次密钥。1000人网络则需近500,000次,在这种情况下,建造一个中央密钥服务器(或服务器组) 会使操作更加有效。

    另外,在3 .1节中讲到的对称密码或公钥密码协议制都提供了安全的密钥分发。