这部分包括以下内容:
这部分讨论基本的加密技术和涉及的问题,它构成了下面对加密学和VPN完整性讨论的基础。
非常简单的加密算法是打乱了字母表排列的顺序。参看以下范例:
加密算法是按字母升序的顺序进行的,把a改为b,m改为n等。
解密算法是按字母降序的顺序进行的,把b改为a,n改为m等。
参看以下范例:
THIS IS A SECRET MESSAGE
对加密者而言,知道这是明文文件。经过上面加密算法处理后,改为T到U, H到I等,组成加密文本:
UIJT JT B TFDSFU NFTTBHF
这种算法可在希望彼此秘密通讯的各组员间共享。但是,如果一名组员离开了该组,就必须给该组设计一个全新的算法,从而保证了组通讯的安全性。
因此不能把这样的固定算法透漏给除预期接收人之外的任何人。
目前所有的加密算法使用的都是密钥。在用密钥加密的算法里,算法本身可让人了解,但是,没有适当的密钥谁也不可能轻易解开发给其他人的信息。
在上面例子的算法中,密钥是加密和解密过程中字母转动的顺序数。考虑到英语中有26个字母,可用的最大循环是25。可以组合的数目限制就是我们所知的算法密钥空间。
自然,以上算法非常简单,密钥空间很有限制。任何有纸,笔和算法知识的人能够用指定密钥在几分钟内击溃加密信息,方法是测试所有的可能组合直至出现看似正常的文本。
通过测试所有可能组合的方法解开信息,密钥空间越大,攻破所需的时间就更长。
如果所有破译专家使用以上算法进行破译的字母是2个,如字母VQ,无从得知是转换一步得到UP,或是转换两步得到TO。
有了更多的加密文本,就可以更容易地解决上面这种摸棱两可的情况。两个加密词"VQ AQW"在上面指定的情况下可以分别解密成TO YOU" 和"UP ZPV"。在此,我们已经了解到正确的顺序数是2。
您不应该用同一个密钥给太多的数据加密。如果可能,应该一次更换一个密钥。
上面情景中指定的字母循环示范很难满足现实情况,但能很清楚地说明加密的基本概念。
目前最佳的加密算法都是全公开的。即:它们的安全性不依靠对设计保密来控制。算法的强度依赖于密钥的安全性。
对于所有实际用途,用这种算法攻破加密信息的方法是,尝试使用所有可能的密钥逐一测试,直至找到正确的解开信息的密钥。这就是所知的强力攻击加密信息。
具有确定确切密钥的能力,意味着必须知道信息解密后期望看到的内容。如果设置自动工具在英文里搜索单词,如果原始信息是用瑞典语写的,就无论如何也找不到正确密钥。考虑到这一点,如果能够猜测到通过VPN连接的数据流类型,就可以更容易地侵入VPN连接。
强力攻击需要的时间取决于已有的密钥空间,在很大程度上更取决于运气。
40位的密钥空间可以形成1,099,511,627,776个独特组合。我们认为这么大的密钥空间足够安全了,但近来先进的计算机技术能够大大加快攻破速度。一个学生通过使用几台教室里配置的标准PC,用指定的足够复杂的加密算法,在一周内就可以攻破这样的密钥。一个庞大的组织或国家,访问多台超型计算机,也有可能在最短的时间内攻破密钥。
密钥长度每增加一个比特,都会使独立的组合数增加一倍。以上面的学生为例,46位的密钥意味着彻底搜索将花费他整整一年的时间,更确切地说就是64周。攻破50位的密钥恐怕要用10年的时间。
注:以上计算加密强度的测量方法并不精确。如果一种算法不够复杂(即较快),有人能够用同样的时间段尝试更多组合,即需要一个更长的密钥。如果算法更复杂,从保密看,更短的密钥也能够提供同样的保护性。
我们可以看到,有的公司在市场上推广产品的时候,打着新超级密码技术、独家密码技术等旗号。但是,如果这样的加密算法强度,取决于没有人了解其工作原理,那么只要大量推广该产品,其算法的安全性就会大打折扣。如果有缺陷,电脑黑客所需做的工作就是把购买产品的算法转换出来即可。这种有缺陷的算法一旦暴光,产品就无安全性可言了。
我们并不是说这种私有超级加密法不存在。历史已经证明,这种尝试最终以失败告终。设计一种安全算法而不经过多年对数学和加密理论的研究,然后让得出的结果经受公众多年的考验,实践证明这种做法的可行性几乎为零。而且,如果算法的安全性取决于算法的机密性本身,那么攻破此算法只是时间问题,到那时,恐怕所有用户都已经访问其内部了。
经得起考验,不依赖设计本身安全性的加密算法可以称为强加密算法。
假设加密算法是一个防止公开查看加密信息的盒子。
如果我们设计的安全性非常差,并把它放在偏僻、隐蔽的地方,只要没有人发现存放的地方,秘密是很安全的。我们还可以告诉朋友放置的地方和(密钥)的组合方式,这样他们可以分享我们的秘密。但是,如果有人知道安全文件的位置(算法的工作原理),这种算法就会被公布于众,而无法再使用。
如果我们设计的很安全,可以把它放在市中心。我们可以在当地报纸公开这种安全设计,让每一个希望查看的人看到相同的、公开的此安全设计副本。如果不知道适当的组合方法,没有人能够了解安全文件的内容,那么我就具有很强的安全性。
安全性强的算法只取决于密钥(即:组合),密钥可以轻易改变不同的安全性,以便为不同信任度的人存储信息。
目前,有多种认为具有强加密性的算法。大多数都可在Ipsec框架里实施,但官方规定的标准只有2种:DES(数字加密标准)和3DES(Triple-pass DES)。
DES使用56位密钥,我们认为它与多数使用40位密钥的算法具有同等的安全强度。3DES是使用三种不同的密钥进行三次DES处理,组成168位的理论密钥长度。然而,因为其有效密钥空间比168位的短得多,所以有些密码研究员称,用密码分析法破译3DES加密信息时可能会有捷径。
许多Ipsec实施方案支持其他通用的加密算法。
阿姆瑞特防火墙Ipsec实施方案支持以下加密算法:
DES (56 bits)
3DES (168 bits in theory)
Blowfish (40-448 bits)
CAST-128 (128 bits)
AES (x-y bits)
Ipsec除加密外,还用认证确保加密数据的整体性和真实性。
你可以简单地认为,加密可以提供足够的保护,确保无人可以听懂传输内容。但是,加密技术对修改加密数据没有任何保护措施。
如果有人能够截取加密数据流并对它进行修改,接收端在解密收到的信息后,其结果也被改变了。当然,对截取数据流的人而言,修改后的内容是无法预料的,可是,如果其目的是用这种巧妙的方式进行破坏,那么只修改加密数据就足够了。例如,如果发送的文件要打印成千上万份,谁希望每十页就出现一些乱码呢?
在这里,就需要使用认证技术了。它向接收者证明,数据确实是由原来的发送者发送的。更重要的是,它证明了数据自发送后未做过任何改动。
认证不具有自动防范入侵者破坏加密数据流的功能。不过,如果数据被改动,它能够检测出来,并重新发送被修改的数据。如果所有加密数据均被改动,数据流确实被破坏,但还是可以接收到破坏的数据。
与固定连接相比,从整体上说,我们认为这些特性是令人满意的。如果使用光纤这样的固定连接,光纤还是会被切断,使通讯中断。然而,如果保护私网固定连接的唯一方式是电缆的安全性,而缺少任何物理保护措施,仍然不能保证有人会挖掘光纤,并监听发送的所有内容或改动发送数据。有了Ipsec提供的加密和认证VPN,那么,唯一令人担忧的问题就是物理通讯受到破坏了。
加密不仅仅是在VPN中使用的。可以对文件分别加密,对硬盘加密,也可对各个连接和协议加密。
VPN,如Ipsec,并不是解决人们要求的所有机密性和整体性的法宝。
在过去几年中,许多应用程序借助SSL, TLS 和SSH协议基于对话进行加密保护。
SSL,套接字层加密,是用来保护多种协议的标准化加密通讯方式。在访问某安全的网站时,可能已经注意到,URL都是以https://而不是以http://字母开头。这就是把HTTP包在了SSL里。
TLS,传输层安全,是继SSL之后的技术,具有与SSL非常相似的功能,有了更多的固定标准,并遵守IETF。
SSH,安全壳,以逐渐成为一个国际标准。主要应用于基于命令行方式的远程管理,和在shell环境中建立连接等方面。
所有这些协议间共同点是,希望进行安全通讯的各个应用程序必须执行自己的加密算法。如果某应用程序内不包括一个加密引擎,一般说来,就不能使用以上这些基于对话的协议了。
基于对话的协议很容易设置,因为不需要任何扩展的硬件,几乎不要求对其上运行的非加密通讯工作进行任何配置,就能够轻易地提供基于用户的认证。
VPN是在比基于对话协议低一级的协议层上工作:它是对原始IP数据包而不是各自单独的TCP会话来工作。
对一个多用户主机里,如Unix主机或终端服务器,VPN不能很容易地区分各个用户。而是以同样的方式对待所有的用户。固定连接的私网就是这种情况,因此,请记住,地下光纤可以做的,是提供良好的连通性。
我们不期望看到基于对话的加密标准会在未来消失。而希望在未来相当长的时间里与VPN共同发展。可能像Ipsec这样的VPN,会成为未来所有加密环境的法宝,但是目前还远远不能满足要求。
对于希望了解更多密码学信息的朋友,我们不能在短暂的介绍里满足您的要求,因此,推荐《Applied Cryptography》, Second Edition by Bruce Schneier, ISBN 0-471-12845-7这本书供您阅读。
《Applied Cryptography》对密码学进行了详细介绍,而且涉及到对称性和不对称性加密,认证和一次性补丁的课题。该书还为对实施自己加密软件感兴趣的人员提供了算法示范和源代码。