1.1 探究加密技术
1.1.1 理解加密技术
加密技术是一门古老而深奥的学科,它对一般人来说是陌生的,因为长期以来,它只在很小的范围内,如军事、外交、情报等部门使用。计算机加密技术是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。在国外,它已成为计算机安全主要的研究方向,也是计算机安全课程教学中的主要内容。
一个密码系统的安全性主要在于密钥的保密性,而不在于算法的保密性。
对于数据的加密的确是这样。对于不愿意让别人看到这些数据(数据的明文)的人,用可靠的加密算法,只要破解者不知道被加密数据的密码,他就无法解读这些数据。
但是,软件的加密不同于数据的加密,它只能是“隐藏”。不管是否愿意让别人(合法用户,或Cracker)看见这些数据(软件的明文),软件最终总要在机器上运行,对机器而言,它就必须是明文。既然机器可以“看见”这些明文,那么Cracker通过一些技术也可以看到这些明文。
于是,从理论上,任何软件加密技术都可以破解,只是破解的难度不同而已。所以,要不想被盗版,就只有增加Cracker的破解难度。
加密也可提高终端和网络通信的物理安全,有3种方法加密传输数据。
(1)链接加密
在网络节点间加密,在节点间传输加密,传送到节点后解密,不同节点对间使用不同的密码。
(2)节点加密
与链接加密类似,不同的只是当数据在节点间传送时,不用明码传送,而是用特殊的加密硬件进行解密和重加密。
(3)首尾加密
对进入网络的数据加密之后,再等数据从网络传送出来之后进行解密,网络本身并不会知道正在传送的数据是否为加密数据。这种加密方法的优点是网络上的每个用户可有不同的加密关键词,并且网络本身不需增添任何专门的加密设备。缺点是每个系统必须有一个加密设备和相应的软件或每个系统必须自己完成加密工作。
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用作敏感信息的加密。数据摘要算法也称为哈希(Hash)算法、散列算法。
摘要是一种防止改动的方法,其中用到的函数叫作摘要函数。这些函数的输入可以是任意大小的消息,而输出是一个固定长度的摘要。摘要有这样一个性质,如果改变了输入消息中的任何东西,甚至只有一位,输出的摘要将会发生不可预测的改变,也就是说输入消息的每一位对输出摘要都有影响。
总之,摘要算法从给定的文本块中产生一个数字签名(fingerprint或message digest),数字签名可以用于防止有人从一个签名上获取文本信息,或改变文本信息内容和进行身份认证。摘要算法的数字签名原理在很多加密算法中都被使用。
1.1.2 摘要算法的分类
1.CRC8、CRC16、CRC32
循环冗余校验(Cyclic Redundancy Check,CRC)算法出现时间较长,应用也十分广泛,尤其是通信领域,现在应用最多的就是CRC32算法,它产生一个4字节(32位)的校验值,一般是8位十六进制数,如FA 12 CD 45等。CRC算法的优点在于简便、速度快,严格地来说,CRC更应该称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。
在WinRAR、WinZIP等软件中,也是以CRC32作为文件校验算法的。一般常见的简单文件校验(Simple File Verify,SFV)也是以CRC32算法为基础,它通过生成一个扩展名为.SFV的文本文件,将文件内容CRC32运算的结果与.SFV文件中的值对比来确定此文件的完整性。
与SFV相关的工具软件有很多,如MagicSFV、MooSFV等。
2.MD2、MD4、MD5
这是应用非常广泛的一个算法家族,尤其是MD5(Message-Digest Algorithm 5,消息摘要算法版本5),它由MD2、MD3、MD4发展而来,由Ron Rivest(RSA公司)在1992年提出,被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD2、MD4、MD5都产生16字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5比MD4更安全、速度更快。
在互联网上进行大文件传输时,都需要用MD5算法产生一个与文件匹配的、存储MD5值的文本文件(扩展名为.md5或.md5sum),这样接收者在接收到文件后,就可以利用与SFV类似的方法来检查文件完整性,绝大多数大型软件公司或开源组织都是以这种方式来校验数据完整性,而且部分操作系统也使用此算法来对用户密码进行加密。另外,它也是目前计算机犯罪中数据取证的最常用算法。
与MD5相关的工具有很多,如WinMD5等。
3.SHA1、SHA256、SHA384、SHA512
SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构——美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位)。由于它产生的数据摘要的长度更长,因此更难以发生碰撞,也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。
SHA1的应用较为广泛,主要应用于CA和数字证书中,另外,在互联网中流行的BT软件也是使用SHA1来进行文件校验的。
4.RIPEMD、TIGER、MAD
RIPEMD是Hans Dobbertin等3人在对MD4、MD5缺陷分析的基础上,于1996年提出来的,有4个标准,分别是128、160、256和320,其对应输出长度分别为16字节、20字节、32字节和40字节。
TIGER由Ross在1995年提出。Tiger号称是最快的Hash算法,专门为64位机器做了优化。
MAD摘要算法的设计是出于利用32位RISC结构来最大其吞吐量,而不需要大量的替换表来考虑的。
MAD算法是以消息给予的长度作为输入,产生一个128位的“指纹”或“消息化”。要产生两个具有相同消息化的文字块或产生任何具有预先给定“指纹”的消息,都被认为在计算上是不可能的。
MAD摘要算法是个数据认证标准。MAD的设计思想是要找出速度更快,比MAD更安全的一种算法,MAD的设计者可以通过使MAD在计算上慢下来,以及对这些计算进行一些基础性的改动来解决安全性这一问题,是MAD算法的一个扩展。
1.1.3 加密技术的演化
数据加密技术源于大约公元前两千年前,埃及人最先使用特别的象形文字作为信息编码来对信息进行加密处理,随着时间的推移,加密技术越来越多地被应用于对数据安全的保护。加密技术首先由恺撒大帝用于战争中的数据加密,也就是非常熟悉的恺撒密码。
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为一段不可读的代码,通常称为“密文”,只有在输入相应的密钥之后才能显示出本来内容,通过这样的途径达到保护数据不被人非法窃取、阅读的目的。
数据加密技术是网络中应用的基本的安全技术,通过对网络中传输的信息进行数据加密来保障其安全性,用很小的代价即可为信息提供相当大的安全保护。数据加密技术是为提高信息系统及数据的安全性和保密性,防止秘密数据被外部破析所采用的主要技术手段之一。随着信息技术的发展,网络安全与信息保密日益引起人们的关注。
随着计算机的发展,人们不断地研究出了新的数据加密方式来保障数据安全,如对称密钥算法和非对称密钥算法。
一个加密系统至少包括如下4个组成部分。
· 未加密的报文,也称明文。
· 加密后的报文,也称密文。
· 加密解密设备或算法。
· 加密解密的密钥。
明文用M(消息)或P(明文)表示,它可以是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。至于涉及计算机,P是简单的二进制数据。明文可被传送或存储,无论在哪种情况,M是指要进行加密的信息。
密文用C表示,它也是二进制数据,有时和M一样大,有时稍大(通过压缩和加密的结合,C有可能比P小些。然而,仅仅加密通常达不到这一点)。
加密函数E作用于M得到密文C,用数学表示为:
E(M)=C
1.1.4 加密技术的必要性
在当今社会,必须要使用加密技术来保护数据的安全。众所周知,在互联网上进行文件传输、发送电子邮件是进行业务往来的重要手段,但互联网是基于TCP/IP协议存在的,TCP/IP协议由于本身固有的不安全性,需要引起人们的高度重视,特别是进行一些机密文件的网络传输。
互联网把全世界连接成一个整体,带来了无限的商机和便利,为了能在安全的基础上享受这些便利,就要使用数据加密技术和基于数据加密技术的数据签名。
加密技术在网络上的应用非常必要,主要就是防止机密文件或有用的内容在网络传输时,被非法截获或破坏。
如果一个公司通过电子邮件给另一个公司发送一份比较机密的文件,说不定此时就会有人准备窃取这份关乎两个公司生死存亡的文件,这样的损失是无法估计的。解决这个难题的方法就是加密,加密后的文件即使被窃取也是不可读的,只是一堆乱码,所以说使用加密技术是当今网络社会的必然趋势。
数字签名基于加密技术,其作用是用来确定用户是否真实存在,一般应用在收发电子邮件上。当用户接收到一封电子邮件,邮件上标有发信人的姓名和邮箱地址,有些人简单地认为邮件标示的发信人的姓名就是真实的,实际上并不完全是这样,这时,就可以利用加密技术基础上的数字签名来确认发信人的真实身份了。
文件加密不只是针对电子邮件和网络上传输的文件,也可以对静态的文件进行加密保护,像PIP(Project Information Portal,项目信息平台)软件就可对磁盘、硬盘中的文件和文件夹进行加密。
加密类型大致可以分为3类。
(1)私用密钥加密技术
即利用一个密钥对数据进行加密,另一方收到数据之后,使用同一个密钥进行解密。这种加密的特点就是运算量小,速度快。缺点是加密解密使用同一个密钥,一方泄露密钥,整个数据信息就会暴露无遗。
(2)公开密钥加密技术
这种加密技术使用一对密钥进行加密,一个是公开密钥,一个是私有密钥。加密时使用公开密钥,接收者收到信息可以使用私有密钥解密。它的安全系数比私用密钥加密技术高,可以广泛用于通信、数字签名上。
(3)不用考虑解密问题
这种加密技术类似于口令加密,用户只需要进行加密后,与以前的加密进行比较就可以了,而不需要考虑解密问题。
1.1.5 加密技术的发展前景
加密技术的渊源距离现代社会甚为久远,最早源于大约公元前两千年前,那时的埃及人就发明了象形文字来保护秘密信息不会轻易被别人发现。它不是现在要讲的加密技术,只是作为一种加密的概念来进行理解。
在现代社会中,加密技术最常用于对军事领域中的机密信息进行加密、破解。随着计算机技术的不断发展,运算能力的不断增强,以往的密码就变得十分不安全,非常容易被破解。于是人们又研究出了新的数据加密方式,如利用ROSA算法产生的私钥和公钥。
加密技术大致有以下几种发展趋势。
(1)私用密钥加密技术与公开密钥加密技术相结合
这两种加密技术各有优势,在实际应用中可以结合使用DES/IDEA和RSA,以DES为“内核”,RSA为“外壳”,对于网络中传输的数据可以用DES或IDEA加密,而加密用的密钥则或能用RSA加密传送,这样既能保证加密信息的安全,又提高了加密和解密的速度,可以看作是加密技术发展的趋势之一。
(2)寻找新的加密算法
现在广泛使用的加密算法,普遍存在这样或那样的缺点和不足,有的加密速度快,却不能保证数据安全,有的算法烦琐,却实现速度极慢。正因为这样,所以跳出常规算法为基础的思路,脱离基于数字问题的构造方法,寻找新的加密方法也是当今加密界的一大趋势。
(3)加密最终要集成到网络和系统中
例如IPv6协议就实现了内置加密的支持,而Intel公司的硬件方面,研制一种加密协处理器,就可以集成到计算机的主机上。