全面认识IPSec
IPSec是如何工作的以及我们为什么需要它?在下面这篇文章中我们将进行详细阐述。
IP安全(IPSec)体系结构由一系列协议组成,制订这些协议主要是为了确保通过IP网络进行的数据通信的整体性、保密性和验证。一方面,IPSec标准的灵活性已经引起了商业界的兴趣; 另一方面,也正是这一灵活性使我们能够认识到这些协议因其复杂性的缘故而带来的问题。就像其他安全系统一样,糟糕的管理很容易导致重大的系统故障。
IPSec可在以下三个不同的安全领域使用:虚拟专用网络(VPN),应用级安全以及路由安全。目前,IPSec 主要用于VPN。在应用级安全或路由安全中使用时,IPSec还不是一个完全的解决方案,它必须与其他安全措施配合才能更具效率,从而妨碍了它在这些领域的部署。
IPSec操作
IPSec有以下两种操作模式:传送模式和隧道模式。如果以传送模式操作,源主机和目的地主机必须直接执行所有密码操作。加密数据是通过使用L2TP(第二层隧道协议)而生成的单一隧道来发送的。数据(密码文件)则是由源主机生成并由目的地主机检索的。这种操作模式可以实现端对端安全。
如果以隧道模式操作,除了源主机和目的地主机之外,特殊的网关也将执行密码操作。在这种模式里,许多隧道在网关之间是以系列的形式生成的,从而可以实现网关对网关安全。不管使用何种模式,重要的是: 一是使网关能够确认包是真实的; 二是使网关能够从两端对该包进行判断,这样能够抛弃无效包。
在IPSec里需要两种类型的数据包编码(DPE),它们就是验证标题(AH)和封装安全净负荷(ESP) DPEs。这些编码可以为数据提供网络级安全。AH可以提供包的真实性和整体性。验证是通过键标散列函数,即人们所熟知的MACs(信息验证码)而实现的。这个标题也禁止非法修改,并具有提供防回复安全的选项。AH可以在多个主机、多个网关或多个主机与网关、以及所有实现AH之间实现安全。ESP标题可以提供加密、数据封装以及数据保密。数据保密是通过对称密钥加密而实现的。
包在经过各种不同的隧道和网关的过程当中,还要添加其他标题。每经过一个网关,数据报都要进行状态包检测新的标题。包含在这一标题里的是安全参数索引(SPI)。SPI可以确定用上一个系统查看该包时所使用的算法和密钥。净负荷在此系统中也受到保护,因为数据中的任何变化或错误都会被检测到,从而导致接收方放弃该包。标题在每一个隧道的开始处应用,并在每个隧道的末端进行确认和删除。这种方法可以防止形成没必要的包占用总开销。
IPSec的一个重要部分就是安全关联(SA)。SA使用SPI编号,AH和ESP携带该编号来显示包使用的是哪一个SA。IP目的地地址也包含在内,用来显示端点:这可能是防火墙、路由器或终端用户。安全关联数据库(SAD)可用来存储所有用过的SA。SAD将使用安全政策来显示路由器应该对包做些什么。三个范例包括:同时放弃包、只放弃SA、替换不同的SA。使用中的所有安全政策都存储在安全政策数据库之内。
IPSec存在的问题
在某些情况下,直接的端对端通信(即传送模式)是不可能的。以下就是一个简单的例子,在这个例子里,H1和H2是一个直通隧道上的两台主机,其中,H1使用的是作为FW1的防火墙。
在一个大型分布式系统或域间环境里,各种不同的地区安全政策都将对端对端通信带来重大问题。在上面例子里,假设出于指令检测的目的,FW1需要检查通信内容,这样,就需要在FW1处制订政策,来否决所有的加密通信,以便执行其内容检查要求。然而,H1和H2在没有注意到防火墙及其政策规则存在的情况下,建立了一条直通隧道。因此,FW1将放弃所有通信。这种情况表明,每一项政策只能满足其相应的要求,而所有政策则将造成冲突。
IPSec的一个最大缺陷就是其复杂性。一方面,IPSec的灵活性对其流行做出了贡献; 另一方面,它也造成了混乱,并导致安全专家宣称:“IPSec包含了太多的选项和太多的灵活性。”IPSec的许多灵活性和复杂性归源于如下事实: IPSec是通过委员会程序开发出来的。由于委员会的“政治”特性的缘故,其他的性能、选项和灵活性常常被添加到了标准之中,以满足标准化机构不同部门的需要。这一过程与在制订高级加密标准(AES)的过程中所使用的标准化过程形成了十足的对比,高级加密标准(AES)取代了1998年失效的数据加密标准。
把这种方法与NIST(国家标准与技术学会)用来制订AES的方法进行对比是很有指导意义的。NIST组织了有效竞争的方法来取代委员会。几个小组提出了各自的建议,并从其中的建议当中选择一项建议。在编写建议的时候,有一个淘汰阶段,5个留下的侯选者当中的任何一个所制订的标准都比任何委员会曾经制订出来的标准要好得多。
另外,供IPSec使用的许多文档都非常复杂和混乱。没有提供任何概述或介绍,也无法识别IPSec的目标在何处。用户必须把这些碎片组合起来,并尽力使那些被认为非常难读懂的文档看起来更有意义。如果想弄清楚用户都会遇到些什么麻烦,大家可以想想ISAKMP技术规范。这些技术规范丢失了很多关键性的解释,包含了太多的错误,而且在很多地方互相矛盾。
尽管如此,IPSec并不是完美的,与以前可用的安全协议相比,它只是一种巨大的改进。作为例子,大家可以想想流行的安全系统安全套接层(SSL)。SSL已广泛地部署于各种不同的应用之中,它不可避免地局限于如下事实: 它只能在传送/应用层使用,从而要求对希望具备使用SSL能力的任何应用进行修改。由于IPSec是在第三层使用,因此,它只要求对操作系统而不是使用IPSec的应用进行修改。
小结
IPSec融合了所有最常用的安全服务,其中包括验证、完整性、保密性、加密和认可。然而,IPSec的主要缺陷就是其复杂性以及其相关文档的混乱性质。尽管有这么多缺陷,许多人都相信,IPSec将成为最好的可用安全系统之一。人们希望, IPSec将来再版时,能够出现更多的改进, 现在发现的体系结构所存在的问题能够得到解决。