购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 密码学中的指数爆炸

从上一节中我们领教了几何级数增长的神速。由于数字的不断翻倍,一个数列从很小的一个数字很快就增长成一个非常庞大的数字。对于 q n n =1,2,3…,当 q >1时, q n 会随着指数 n 的增加而急剧增加,我们把这种现象形象地称为“指数爆炸”。指数爆炸的现象被很好地应用在密码学当中,请看下面这个实例。

对称密码体制是一种经典的加密体制策略。加密方A和解密方B共享一个密钥Key。加密方A使用密钥Key对明文进行加密操作生成密文,解密方B使用同样的密钥Key对密文进行解密操作生成明文。整个过程如图1-3所示。

图1-3 对称密码体制的加密与解密

在整个加密解密过程中密钥Key是一个关键的因素。如果密钥在传输过程中被他人截获,那么密文将会不攻自破(前提是知道了加密的算法)。所以密钥一般是不会轻易让人拿到的。

如果一个人没有得到密钥却想破译密文,那只能做出和密钥长度相同的字节流,一个一个地尝试解密。这种方法称为“暴力破译法”,虽然算法形式最为简单,但是这种方法的性能也更加依赖于密钥Key的长度。假设密钥Key的长度为2位(bit),如果应用暴力破译法解码,最多需要尝试4次,即:

00,01,10,11

但是如果密钥Key的长度增加到3位,则暴力破译法尝试的次数便要翻倍,最多需要尝试8次,即:

000,001,010,011,100,101,111

但是实际应用中不可能使用这样简单的密钥,因为那将失去加密的意义。一般都要使用32位、64位甚至更长的密钥。那么如果使用64位的密钥,应用暴力破译法最坏的情况下需要尝试多少次才能译码?

分析

如果采用64位的密钥,该密钥可能的0/1组合共有2 64 =18 446 744 073 709 551 616个之多!如果我们从00…0(64个0)开始逐一枚举并尝试解密,而真正的密码却是11…1(64个1),那这样就需要尝试2 64 =18 446 744 073 709 551 616次才能找到真正的密钥,也就是最坏的情况了。因此暴力破译法的效率是很低的。

我们要讨论的并不是暴力破译法的性能问题,而是讨论密钥的长度对暴力破译法性能的影响。虽然64位的密钥并不长,但是如果应用暴力破译法尝试每一个可能的组合,则需要尝试2 64 次。这是一个惊人的天文数字,即便一台每秒钟运算百亿次的计算机,也需要昼夜不停地工作58.5年才能完成尝试每一种组合。

这便是指数爆炸的威力。对于暴力破译法,其时间复杂度为 O (2 n ),其中 n 为密钥Key的长度。也就是说应用暴力破译法尝试密钥的次数跟Key的长度 n 是成指数关系的,密钥的长度每增加1位,尝试的次数就扩大1倍,因此当密钥的长度增大至64位时,尝试的次数已经达到一个天文数字2 64

所以较长的密钥Key能给加密系统带来更大的安全性,至少在暴力破译的前提下,达到一定长度的密钥是在人类可操控的时间范围内和现有能力下是很难破解的。 CxssVCnZ8usyb61lfahaG+GXj8dVQTN/mAYeixB1MKpojNlF1AjNfyxVTx0oODZL

点击中间区域
呼出菜单
上一章
目录
下一章
×