在信息传输的过程中会发生截取,中断,篡改和伪造四种威胁,使得信息的完整性,可用性和保密性严重下降,影响着我们的信息安全。而加密技术是对付这四种安全威胁的有力武器。好的加密技术能隐藏自己的身份使得他不被中断和截取,若加上必要的验证信息则可以校验其是否被篡改和伪造。所以在互联网背景下,对加密技术的需求更加迫切,要求更加高,其作用也越来越重要。本文先介绍加密技术对四种安全威胁的低档,在介绍目前流行的加密算法的应用。
加密几乎就是针对截断攻击而产生的。截断攻击就是指一些未授权方获得了访问资源的权利,通俗来讲就是被人窃取。而此时的信息如果是加过密的,其表现就是不能识别的乱码,那么窃取者若不能正确解密,那么该信息对他来说是无用的,于是起到了保护作用。任何一种加密技术都具有伪装自己的特点,所以对付截断攻击是必然的。
中断攻击是指系统资源的丢失,不可得或不可用。这类例子包括恶意的硬件破坏,程序或数据文件被删除或操作系统文件管理器出现故障,导致不能找到所需的磁盘文件。这时如果对系统资源或权限获得设置了加密则可以有效抵挡此类攻击,首先,资源的加密使得他被保护,不能被外人发现,即使攻击者已经知道,他若不能获得访问和删除的权限,对他来说依然是没有用的。
如果未授权方不仅访问了资源而且修改了其内容,这称为篡改。有时候篡改对于攻击者本身也许是无意义的,但是会影响到接收者得到的信息的正确性。通过加密有时可以达到校验的作用,比如在发一条信息的同时附上其校验信息比如HASHCODE,既可以达到伪装的效果又可以防止被篡改或者传输过程中随机产生的差错。
伪造是指未授权放在计算机系统中创建假冒的对象。入侵者想网络通信系统中插入伪造的事物处理或想数据库中添加记录。使用合适的加密也可以防止伪造,一方面加密可以保护权限,使得入侵者不能得到修改的权限。另一方面,可以通过加密起到证书的作用以确保信息来源的正确性,如RSA公钥算法就具有电子证书的作用。
加密技术的使用由来已久,最早的有凯撒加密,它是替换加密法的代表,这种加密也可以起到伪装作用防止截断入侵。他历时千年却经久不衰,他的特点是加密解密过程都非常简单快捷,只要把原文的字母固定替换为另一个字母就可以产生一堆看不懂的东西了,这种加密增加了密文的混乱性。因为这种加密太简单,所以破解也是很简单的。由于替换加密属于流加密,所以流的顺序是没有被破坏的,这就为破解提供了突破口,另外由于某一字母固定替换为另一字母,还可以通过某一字母的统计规律来破解,比如字母E在英文中出现的频率是0.1268,那么分析密文中某一字母出现频率与这个值非常接近那么可以断定该字母是E的替换。虽然这种替换加密安全性不高,但作为简单快捷的加密方式也是有一定使用价值的。
另一种称为置换加密,这种加密有别于流加密的不同之处就是破坏了流的顺序对原文进行了重排,这种加密有时也成为块加密,它增加了密文的扩散性。这对防止破解与篡改是很有帮助的,如果密文被插入了新的东西那么会破坏整个译文的正确性,而块加密很难通过统计方法得到破解。快加密虽然具有很好的扩散性,但是加密过程却非常繁琐,而且会出现错误扩散的可能,如果传输产生一个错误那么可能整个译文都受到影响。这种加密方式不宜用于大规模的数据。
再来介绍两种加密思想,对称加密与非对称加密。对称加密是指加密的密码与解密密码是相同的如DES,非对称加密是指加密与解密使用的密码是不同的如RSA,这两种密码方法各有自己的用途,是当前计算机信息传输中使用最多的两种方法。
DES算法是替换加密与置换加密复杂而细致的结合。它的算法的健壮性源自于对这两种加密技术的重复使用,一个紧接着一个,一共进行16次循环。透过16次反复替换和置换追踪单独的一位,其复杂性使普通的研究者最多能发现算法的一些一般性质。DES 使用一个56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。替换为它提供了混乱性,置换为它提供了扩散性,可见DES是一种非常好的加密算法。由于它的加密与解密使用的是同一个密码,这样使得密码的保护尤为重要,一旦密码在交换过程中被窃取,那么一切将是没有意义的。
RSA公钥算法可以称得上非对称加密中的代表。它用来加密与解密的密钥是不同的,所以可以拿出一个作为公钥,得到公钥的一方可以读取私钥持有者发出的信息,却不能伪造私钥者的信息,私钥者也可以接读取公钥持有者发出的信息而不被他人所截取。这就避免了DES算法中密码交换的危险,因为不需要交换私钥就可以完成信息的安全传输,公钥是公开的,任何人可以获得,不用担心被非法者持有。从安全角度来看这种算法可以说是登峰造极了,但在实际应用中的缺点也是不能忽视的,其一就是这对公密钥的产生,这需要大整数的计算和大素数的判别,这是一套非常复杂的算法,另外其加密过程也比DES慢好几倍,因此这种算法通常只用来加密小规模数据。一个很好的想法就是用来交换DES的密码,用接收密码者的公钥来加密,这样的密码只有持有私钥才能读取,这样就把DES密码交换的安全性提升到了RSA的水平,然后再用DES加密大量的信息,这样的结合就有了安全性与快捷性的共同提高。RSA另一个广泛的应用就是数字签名。由于公钥只能解码私钥加密的信息,所以私钥的持有者发出的信息具有不可伪造的特点,于是私钥持有者可以为自己设定数字签名,使用私钥加密自己的身份信息并公开同时公开公钥,这样大家知道了公钥就可以读取自己的身份信息,如果伪造者不能得到私钥那么就不能用公钥解开,而私钥是不能向任何人透露的。
另外有一种重要加密称为单向加密,即只能加密,不能解密,最典型的就是HASH编码。如果使用同一原文加密得到同一密文,而得到密文却很难得到正确的原文,另一方面可能同一密文有多个原文与之对应,于是这种加密方式多用来做比较验证,如验证数据传输过程中有没有发生错误,可以在发送时附上其HASH编码,在接收时再做一次,比较两次HASH值是否一致,如果原文一致,那么密文也一定相同。还会用于验证密码,通常数据库中保存的密码是很有可能被他人看到的,但如果使用了单向加密即使看到也很难推出真正的密码。而在密码验证时求取其HASH值与数据库比较如果相同则可以通过验证。
可以看到形形色色的密码技术为我们安全传输信息提供了保障,不同的密码方式也对应着不同的应用,使用正确的加密方式对我们安全快捷的信息传输具有深远意义,因此学好密码学是非常有用的,我们也期待更好的密码技术可以产生,以便更好的为信息安全服务。