|
数据加密源远流长,在古代的战争中,数据加密与解密主要用来保证书信的安全。在近代的历次战争中,随着对数据信息量需求的急剧扩大,数据加密应用越来越宽广,加密的手段也越来越先进。现在,数据加密在军事上的应用仍然十分广泛,而且,在全球信息化的浪潮中,数据加密在网上银行、电子商务、电子政务等领域正发挥着越来越重要的作用。当人们在ATM(自动取款机)取款时,当人们拨号上网时,当人们使用IP电话卡时,当人们使用电话银行时,当人们使用证券通时,数据加密和解密都默默地发挥作用。 下面是数据加密与解密中常用的几个术语。 ☆ 明文:人和机器容易读懂和理解的信息称为明文。明文既可以是文本、数字,也可以是语音、图像、视频等其它信息形式。 ☆ 密文:通过加密的手段,将明文变换为晦涩难懂的信息称为密文。 ☆ 加密:将明文转变为密文的过程。 ☆ 解密:将密文还原为明文的过程。解密是加密的逆过程。 ☆ 密码体制:加密和解密都是通过特定的算法来实现的,该算法称为密码体制。 ☆ 密钥:由使用密码体制的用户随机选取的,唯一能控制明文与密文转换的关键信息称为密钥。密钥通常是随机字符串。 在加密与解密过程中要注意一条重要原则:明文与密文的相互变换是可逆变换,存在并只存在惟一的、无误差的可逆变换。 根据数据加密的方式,可以将加密技术分为对称加密和非对称加密。也称为密钥加密技术和公钥加密技术。 1. 密钥加密技术 密钥加密(Secret-Key Encryption),也称为对称加密(Symmetric Encryption),加密和解密过程都使用同一密钥,通信双方都必须具备这个密钥,并保证该密钥不被泄漏。 在使用密钥加密技术进行通信前,双方必须先约定一个密钥,这个约定密钥的过程称为“分发密钥”。然后在通信中,发送方使用这一密钥,并采用适当的加密算法将明文加密后发送。当接受方收到密文后,采用解密算法(通常是加密算法的逆算法),并把密钥作为算法中的一个运算因子,就可以将密文转化为明文。该明文与发送方的明文一致。
(1) 块加密和流加密 根据所加密的数据形式,可以将密钥加密技术分为块加密(Block Cipher)和流加密(Stream Cipher)。 块加密,是指对定长的数据块进行加密,数据块之间的关系不依赖于加密过程。即当两个数据块内容相同时,无论加密过程中的顺序怎样,得到的密文也完全相同。 流加密,是指数据流的加密,加密过程带有反馈性,即前一字节加密的结果作为后一字节加密的密钥。当两个数据块内容相同时,只要加密过程中的顺序不同,得到的密文就有所不同。可见,流加密方式具有更强的安全性。 (2) 替代密码和换位密码 密钥加密技术从本质上讲是使用替代密码和换位密码进行加密的。 替代密码是指明文中每一个字符被密文中另一个字符所替代。接收者对密文进行逆替换就能得出明文。 例如:英文中的26个字母中,隔3个字母进行替代,即e代表a,f代表b,g代表c,…,a代表w,b代表x,c代表y,d代表z。那么明文“computer”可变换为“gsqtyxiv”, “gsqtyxiv”是无意义的字串,不说规则,别人就不知道是什么意思。如果接受方收到字串,只要进行逆替换,就可以得到“computer”了。 替代密码有简单替代密码(单字母密码)、多明码替代密码、多字母替代密码、多表替代密码等。上述例子就是最简单的简单替代密码,这种简单替代密码的安全性较差,因为它没有隐藏起英文字母的出现频率,而英文字母出现频率是特定的。比如,字母e出现的频率最高,大约为12.7%。所以,如果用简单替代密码传送大量的英文文本,就容易被被别人破解。 换位密码不隐藏原来明文中的字符,它只是按照一定的密钥将明文中的字符打乱,从而达到保密的效果。在一种纵行换位密码中,明文以固定宽度写在纸上,然后按竖直方向读出的字串为密文。解密时,密文按n行排列(n=总字符÷固定宽度,取整数,只入不舍。当n正好是整除得到时,每行都有n个字符;当n不是正好整除得到时,前m行有n个字符,其余的行有n-1个字符,m为除法结果中纯小数部分用分数表示时的分子)。垂直读取就得到明文。 (3) 数据加密标准DES 数据加密标准DES(Data Encryption Standard)是美国国家标准研究所制定的数据加密算法。1973年和1974年美国联邦注册大会上美国国家标准局(NBS)两次公开征集标准密码算法,候选算法是从国际商用机器(IBM)公司1970初开发出的一个叫Lucifer的算法发展起来的算法。1976年11月23日,DES被采纳作为美国联邦的一个标准,并授权在非密级政府通信中使用。 DES是分组算法的一种,是一种对称算法。DES算法以64位为分组对数据进行加密。64位为一组的明文从算法的一端输入,另一端输出64位一组的密文。DES加密和解密使用同一种算法,但是加密和解密时的密钥并不相同。 尽管DES以64位为分组,但是密钥的长度只有56位,这是因为每字节的第8位通常用作奇偶校验位。DES算法的细节都是公开的,所以用DES加密时,安全性依赖于密钥。 分组加密算法,以64-位为分组,为一对称算法,加密和解密用的是同一种算法,但加密和解密时所采用的密钥并不相同 DES采用的运算只用到标准的算术和逻辑运算。DES是混乱和扩散的组合,一次加密或解密总共有16轮,也就是要完成一次加密(解密)过程,必须在明文(密文)分组上实施16次相同的组合技术。 DES的安全性长期受到人们的怀疑,因为它对密钥依赖性很强,而且美国国家安全局(NSA)曾对算法进行过改动。随着计算机技术的发展,56位长的密钥对于保密价值高的数据不够安全。有专家在1993年声称DES的寿命将在20世纪90年代末期结束,然而,现在该标准仍然被广泛使用。
2. 公钥加密技术 非对称加密技术中,公开密钥密码技术是较为成熟的一种。1976年,美国密码学家Diffie和Helleman提出了公钥密码加密的基本思想,这是密码学上重要的里程碑。这一思想的主要内容为:在不降低保密的基础上,在采用加密技术进行通信的过程中,不仅加密算法本身可以公开,甚至加密用的密钥也可以公开。 使用公钥密码体制对数据进行加密与解密时,使用一个密码对,其中一个用来加密,称为加密密钥,又称公钥;另一个用于解密,称为解密密钥,又称私钥。公钥和私钥在数学上相互关联。公钥可以对外界公开,而私钥自己保管,必须严格保密。 (1) 公钥加密的通讯过程 这里以一个例子说明公钥加密的通讯过程:假设张三想要从李四处接收资料,在采用公钥加密体制时,张三用某种算法产生一对公钥和私钥。然后把公钥公开发布,李四得到公钥后,把资料加密,传送给张三。张三用自己的私钥解密,得到明文。
(2) RSA算法描述 在许多符合这种思想的算法中,RSA算法是第一个成熟的,理论上最成功的公钥加密算法,基于数论中的大数分解的难度。其公开密钥和私人密钥是一对100位以上的十进制的大素数的函数。从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。而分解两个大素数之积的问题又称为大数的因式分解问题,是数论中古老的难题,目前还没有解答出来。其安全性是较高的。 RSA算法:选取两个长度相同的大素数p和q。计算n=pq,随机选取公钥e,使得e和(p-1)(q-1)互素。根据d = e-1 (mod((p-1)(q-1)))计算出d。注意d和e也互素,e和n是公钥,d是私钥。两个大素数p和q不再需要,可以被丢弃,但是不能泄漏。RSA算法可以用表6.3概括。 3. 密钥加密技术和公钥加密技术的比较 |