密文:包李交拿黑走小给赵皮
(4) 一次性密码簿加密法。这种方法要先制定出一个密码薄,该薄每一页都是不同的代码表。加密时,使用一页上的代码加密一些词,用后撕掉或烧毁该页;然后再用另一页上的代码加密另一些词,直到全部的明文都加密成为密文。破译密文的唯一办法就是获得一份相同的密码簿。
计算机出现以后,密码簿就无需使用纸张而使用计算机和一系列数字来制作。加密时,根据密码簿里的数字对报文中的字母进行移位操作或进行按位的异或计算,以加密报文。解密时,接收方需要根据持有的密码簿,将密文的字母反向移位,或再次作异或计算,以求出明文。
数论中的“异或”规则是这样的:1^1=0,0^0=0;1^0=1,0^1=1。下面就是一个按位进行异或计算的加密和解密实例:
加密过程中明文与密码按位异或计算,求出密文:
明文:101101011011
密码:011010101001
密文:110111110010
解密过程中密文与密码按位异或计算,求出明文:
密文:110111110010
密码:011010101001
明文:101101011011
顾名思义,一次性密码簿只能使用一次,以保证信息加密的安全性。但由于解密时需要密码薄,所以想要加密一段报文,发送方必须首先安全地护送密码簿到接受方(这一过程常称为“密钥分发”过程)。如果双方相隔较远,如从美国五角大楼到英国中央情报局,则使用一次性密码簿的代价是很大的。这也是限制这种加密方法实用化和推广的最大障碍,因为既然有能力把密码簿安全地护送到接受方,那为什么不直接把报文本身安全地护送到目的地呢?
正因为传统加密方法在这方面的局限性,人们又想出了很多算法来加强和改进这些方法。下面我们就介绍几个比较著名的方法。
12.1.3 改进的传统加密方法
我们首先需要说明数据块和数据流加密的概念。数据块加密是指把数据划分为某一特定长度的数据块,再分别进行加密。数据块之间的加密是相互独立的,因此,如果内容相同的数据块重复出现,密文也会呈现出某种规律性,从而会降低破密的难度。数据流加密是指使用加密后的密文前面的部分,来参与报文后面部分的加密。这种方法的好处是数据块之间的加密不再独立,即使有相同的数据重复出现,密文也不会呈现出明显的规律性,从而提高破译的难度。改进的传统加密方法便是应用了这种思想,这类方法常划为使用传统加密技术的现代加密方法。
(1) 数据加密标准DES。DES(Data Encryption Standard)是美国政府1977年采用的加密标准,最初是由IBM公司在70年代初期开发的。美国政府在1981年又将DES进一步规定为ANSI标准。
DES是一个对称密钥系统,加密和解密使用相同的密钥。它通常选取一个64位(bit)的数据块,使用56位的密钥,在内部实现多次替换和变位操作来达到加密的目的。DES有ECB,CBC和CFB三种工作模式,其中ECB采用的是数据块加密模式,CBC与CFB采用的是数据流加密模式。
作为第一个公开的新式加密方法,DES的影响非常大。后来提出的许多密码方法都汲取了DES的思想和技术。但是,DES的缺点是它采用的密钥太短,只有56位,也就是说,所有可能的密钥只有256个。采用一些计算网络,若每秒钟测试5亿个密钥,则在4小时以内便可把所有可能的密钥都测试一遍。因此,随着计算机性能的提高,DES的破解难度已经降低,不太实用了。
(2) 三层DES(Triple-DES)。这种方法是DES的改进加密算法,它使用两把密钥对报文作三次DES加密,效果相当于将DES密钥的长度加倍。三层DES克服了DES的显著缺点,即其56位的短密钥。本来,三层DES是通过三次使用DES算法来对数据进行编码加密,在每一层上都使用不同的密钥,这样就可以用一个3×56=168位的密钥进行加密;但许多密码设计者认为168位的密钥已经超过实际需要了,所以便在第一层和第三层中使用相同的密钥,产生一个有效的112位的密钥长度。之所以没有直接采用两层DES,是因为第二层DES不是十分安全,它对一种称为“中间可遇”的密码分析攻击形式来说是极为脆弱的,所以还是采用了三层DES操作。



相关教程