完全保密-密码术的奥秘

时间:2024-07-01 19:59:05

完全保密

到目前为止,我们所描述的大致情景是:一个发送者试图将一保密信息发送给预定的接收者,且在此过程中发送者使用了一个密码系统使得所传输的密文在第三方眼里是篇不可识别的电文。然而,即便第三方没能拦截到这次信息传输,但也有可能(尽管大多数情形下这种可能性是极其微小的)他们已经猜到了信息的内容。所以,给信息加密并不能确保第三方无法取得信息的内容,通信者所能指望的最好结果是当第三方设法拦截时,其拦截到的东西不能给他们带来任何有助于了解信息真实内容的情报。换句话说,密码系统应该迫使截获了密文的人仍要去猜测信息的内容。当然,密码系统完全无法阻止攻击者猜测信息。

完全保密-密码术的奥秘

能够达到上述目标的系统即可被认为提供了完全保密。现在我们举一个小例子说明完全保密是可以做到的。

假定X先生正准备作出一个将严重影响一家公司股票值的决定。如果他作出的决定是“买”,那么股票就将升值。但如果决定“卖”,则将导致股票暴跌。此外假定公众知道他将传送这两个信息中的一个给他的股票经纪人。很清楚,任何人只要先于经纪人得知了这个决定,那他就有机会利用这个情报,根据决定的内容或是获利或是规避灾难性的损失。自然,无论如何,任何人都可自由地猜测信息的内容并采取相应的行动。他们有50%的胜算,但这样的行动与赌博没什么区别。

X先生希望一作出决定就尽快把他的决定通过公共网络发送出去。为了保护他们的利益,他和他的经纪人约定信息在加密后传送。一种选择是使用简单代换密码,我们已经说过,这对保护短信息来说往往就足够了。但在这个特定的例子中,每个信息因其长度的不同而具有独特性。假定拦截者知道通信使用的密码系统,那么当他得到了密文的长度后,他将对该信息的内容有100%的把握,尽管他还不能确定所用的密钥。

另一种选择是使用下述系统,其中两个密钥k1和k2具有均等的可能性。为了描述完整的算法,我们使用标准的数学符号。对于密钥k1,明文信息“买”的密文是0,而“卖”的密文是1,我们简写为Ek1(买)=0和Ek1(卖)=1。表达式Ek1(买)=0应读作“使用密钥k1对明文‘买’加密的结果是0”。全部密码是:

密钥k1:Ek1(买)=0,Ek1(卖)=1

密钥k2:Ek2(买)=1,Ek2(卖)=0

下列图示是上述密码的等价写法:

应用这个系统时,比如说拦截者截获了0这个信息,那么他能推断出的所有结论就是:如果通信者使用的密钥是k2,则该信息为“卖”;如果使用的是k1,则信息为“买”。于是,拦截者将被迫去猜通信者到底用的是哪个密钥,因为这两个密钥被选用的机会均等,他能猜对的概率是50%。

注意,实质上在拦截到密文之前,攻击者唯一能做的就是去猜这个信息。而一旦得到密文,他们能做的仍是去猜密钥。由于密钥的个数与信息的数目相同,所以前后两次猜对的机会是相等的。这就是完全保密。在这个特定的例子中,攻击者猜中信息的机会有50%,这是很高的几率了。这样,尽管我们实现了完全保密,但我们并没有提供额外的保护措施来增加信息保密的可能性。不管怎么说,这种弱点要归因于信息的数量太小,而不是加密手段太差。

在真实生活的一些情景中,潜在信息的数量非常有限,此时信息被猜中的危险大于加密信息被破译的危险。一个几乎涉及到我们每个人的例子是在自动柜员机ATM)上使用带身份识别号码的信用卡或借记卡。在此情景中,使用者都有一个身份识别号码PIN)用以证实他们拥有这张卡。如果PIN要经过某财政机构的中心计算机的确认,那么从ATM到主计算机间的信息传送是有加密保护的。如果使用者的卡丢了,那么任何捡到卡的人都可以将它插入ATM中,并键入他“猜测的”PIN。大多数PIN是由四个(十进制)数字组成的,所以至多有10,000个不同的PIN。那个捡到卡的人理论上可以不断地去猜那个PIN,直到找到正确的为止,这比破译密码要容易些。何况,对此问题也不存在密码术上的解决方法。认识到这一事实,大多数系统只允许出现三次输入错误,之后ATM将把卡吞掉。可见,在某些情况下,密码术只能部分地解决安全问题,为了提高安全性,需要实施特别的管理决策,上例就是众多例子中的一个。

也许值得注意的是,在我们关于完全保密的简单例子中,两个集团一知道他们可能需要交换机密信息时,或许就已作出使用何种密钥的协定。这个协定可能是在他们两家之一的基地秘密作出的。这些密钥的保密可能会采用物理手段,比如在使用之前将它们锁在保险箱里。这一做法的意义在第八章讲述密钥管理时,就变得显而易见了。

尽管上面那个关于完全保密的例子中仅含有两个信息,但对于任何长度信息的通信,都可以设计出类似的保密方案。当然,完全保密只能在密钥数量至少与信息数量一样多的情况下才能实现。