在互联网上的持续不断的不安全推动了IETF组织去开发统一的安全架构,能够符合国家关于加密通信的使用的法律。本文是对IP安全架构的规范和相关草案的一个简介。
  
  一、前言
  
  因特网技术的兴起,互连技术的成长,使得大家愈来愈仰赖Internet这个应用广泛的公众网络。因此如何让使用者透过因特网通讯,而不用担心传送的信息封包被截取、假冒,就显得相当重要。因为这些封包内容可能有你的ID,信用卡号码等重要的个人数据。
  
  事实上,这几年来因特网上的安全标 准有很多。例如:RFC1508和1509所规定的GSSAPI(Generic Security Service Application Program Interface),Telnet,FTP和HTTP都可以使用;因特网工程小组(Internet Engineering Task Force; IETF)的PSRG小组所订定的PEM标准可以达到E-mail的安全性,而网络最著名的E-mail安全软 件则是P. Zimmermann的PGP(Pretty Good Privacy);其它如EIT的S-HTTP(Secure HTTP),Netscape的SSL(Secure Sockets Layer),Microsoft的PCT以及上面提及的GSSAPI均可建立HTTP的安全机制,Visa的SET(Secure Electronic Transfer)则能达到安全的电子商务(Electric Commerce)。这些不论是对话层(Session Layer)或应用层(Application Layer)上的安全机制,使用者必须使用专属的通讯协议,或特定厂商的产品。
  
  所以会有这样的问题,可以说都是TCP/IP惹的祸,IP标头中有来源(Source),目的(Destination)地址,装载数据(Payload),而TCP只负责将信息切割成封包,若遗失封包TCP再重送,所以TCP/IP根本没有安全性可言,使用一般Sniffing软件工具,即可一目了然地看到这些信息。
  
  为了确保在任何IP网络上拥有安全的私密通信,也为了整合不同标准及不同厂商产品, IETF着手订定了一套开放标准网络安全协议IPSec (IP Security)。将密码技术应用在网络层,以提供传送、接收端做数据的认证(Authentication)、完整性(Integrity)、存取控制(Access Control)、以及机密性(Confidentiality)等安全服务。高层的应用协也可以直接或间接地使用这些安全服务。
  
  IPSec是设计来达到网络层中端对端安全通讯的第三层协议,它主要的架构是IP认证标头(Authentication Header; AH)以及IP封装安全装 载(Encapsulating Security Payload; ESP)。IP AH提供数据的完整性和认证,但不包括机密性,而IP ESP原则上只提供机密性,但也可在ESPHeader中订定适当的算法及模式来确保数据的完整性并认证,IP AH和IP ESP可以分开使用或一起使用。完整的IPSec还应包括IP AH和ESP中所使用金钥的交换和管理,也就是安全群组(Security Assocication; SA)和密钥管理IKE(Internet Key Exchange), IPSec架构图,其中DOI(Domain of interpretation)是为了让其它协议可以使用ISAKMP而订定的Framework,让我们很清楚知道IPSec和IKE所扮演的角色。
  
  本文的第二部份将介绍IP AH,第三部份的内容是IP ESP,第四部份叙述安全群组SA的观念,第五部份则是以一个实际的例子来说明IP AH和IP ESP实际运作的情形,第六部份介绍SKIP及ISAKMP/Qakley两个IETF所参考的金钥管理协议。ISAKMP/Oakley较有弹性且能支持较多的协议,已被选为IPv6的IPSec金钥管理协议。最后一部份则是以ISPec的角度来看它在×××上的应用,并整理列出目前×××符合IPSec标准的商用产品。
  
  虽然针对IP层的安全机制尚有 其它的IP Tunneling技术,例如基植于PPP而发展的PPIP(Point-to-Point Tunneling Protocol),这是 由Microsoft和Ascend所共同提出,可支持IP/IPX/NetBEUI,支持的厂商则有Nortel,3COM。另外L2TP(Layer 2 Tunneling Protocol)则是融合了PPTP和Cisco的L2F(Layer 2 Forwarding),主要的厂商有Nortel和IBM。
  
  本文主要介绍IFTF所制定的开放标准IPSec,因为它能整合不同的×××系统而达到安全地网络互连目的。
  
  二、IP AH格式
  
  IP AH提供认证及装载数据的完整性,但不含机密性。由于它不提供机密性,所以不受密码组件有对外输出的官方限制,故能横跨不同的国家的因特网使用。
  
  IP AH使用需要128位金钥的MD5(Message Digest 5)计算出整个数据的杂凑函数值(注:此单向杂凑数也可使用SHA- 1(Secure Hash Algorithm-1)),使得接收端(知道密钥的人)也可以验证、计算是否使用相同的密钥以检查数据是否正确完整,若检 查不符则将此封包丢弃。依据IPSec规定,IPv6每部主机均应能提供密钥长度128位的MD5,而所有IPv4也应宣告能支持此项AH功能。
  
  IP AH的格式,其中每项字段的意义分别叙述如下:Next Header长度8个位,这个标头是定义AH后面数据的类型;数据长度字段也是8个位,它决定认证数据域位的长度,另外还有16个保留位做未来之用。安全参数索引(Security Parameter Index;SPI)是长度32个位的虚拟随机数,决定安全群 组SA的内容,例如"0"是表示没有SA,而1~255则是保留值。在SPI后面的是顺序号码字段(Sequence Number Field),加入 这个号码可防止重送***(Replay Attack)。最后一个字段是认证数据长度是可变的(32位的倍数)。显示了使用信息摘要函数MD5,它产生 128位的杂凑函数值。从图中也可看出对IPv4或IPv6而言。IP AH是在IP标头和TCP(或UDP)之间。
  
  在IPSec中不管是IP AH或IP ESP,均有两种不同的操作模式,隧道模式(Tunneling Mode)及传送模式 (Transport Mode)。还没介绍IPAH两种模式前,我们先来解释最常使用的技术 "隧道模式"的观念,整个IP datagram被包在新的datagram中。分别为原始的IP datagram,AH传送模式及AH隧道模式,对于 AH隧道模式而言,最后它只是一个新的IP datagram而已。
  
  三、IP ESP格式
  
  IP ESP标准描述如何加密IP的装载数据(Payload) ,加密的范围可以是整个IPDatagram或者只是上层TCP,UDP,或ICMP数据(完全决定在使用隧道模式或传送模式)。IP ESP所使用的保密技术是数据保密标准(Data Encryption Standard; DES)或是Triple-DES,模式则是加密区块链(Cipher Block Chain ;CBC)。除了加密以外,IP ESP也能应用在认证,完整性,以及防止重送***。
  
  IP ESP的隧道模式及传送模式各有其优点。隧道模式可以在两个Security Gateway间建立一个安全"隧道",经由这两个Gateway Proxy的传送均在这个隧道中进行。反观传送模式加密的部份较少,没有额外的IP标头,故工作效率较佳。
  
  这两种模式的操作详细说明如下:
  
  1.传送模式:
  
  IP ESP的传送模式,ESP标头直接加在欲传送的数据前,这种模式可节省频宽。因为IP标头不需加密,所以不像隧道模式,一个封包中有两个IP标头。
  
  首先将IP装载数据使用ESP封装起来(ESP Header和ESP Trailer)。传送端利用使用者ID和目的端地址以得到SA环境 (下一节会加以介绍),然后用加密算法(DES或Triple-DES)加密传送的数据。接收端收到ESP封装的封包时直接处理IP标题(因为没有加 密),然后从ESP Header拿取SPI值以得到相对的SA,再利用SA的安全环境所订的解密函数解出所加密的资料。
  
  对传送模式而言,解密的人就是目的地址端的使用者。但是针对Firewall, Gateway Proxy而言,使用隧道模式则较为合适,因为他们并不是原始的送,收端。
  
  2.隧道模式
  
  隧道模式可以简单地用一句话来说明"IP-in-IP"。首先使用SA的相关讯息将IP的封包加密(含IP标头),接下来在前面加上ESP  Header。然后Prepend新的IP标头。接收端收到ESP封包后,使用ESP Header内容中的SPI值决定SA,然后解出ESP  Header后的装载数据,就可以取回原始的IP标头与封包,可以继续地往下传。
  
  ESP Header及ESP Trailer的内容,ESP Header包含了SPI值,启始化向量IV,及顺序号码字段等,其中顺序号码可防止重送***。
  
  3.IP AH与IP ESP混合使用
  
  IP AH与IP ESP可以独立或分开使用。是先加密再认证,数据认证之前作加密。则是先认证再加密,它的好处是对认证数据也有加密,因此没有人可以更动认证数据。
  
  在介绍完下一节安全群组SA的观念之后,我们将会以一个实际的例子来说明IPSec中IP Header ,IP AH, IP ESP, SPI等的操作情形。
  
  第一代的IPSec版本于1995年提出(rfc 1825, rfc 1826, rfc 1827),它对金钥的交换和管理并未定义,所强调的内容是封包转换的格式。但网络安全规格近年来改革频繁,目前最新的IPSec版本已于1998年提出(rfc 2401, rfc 2402, rfc 2406),增加自动金钥交换且更新了封包转换的格式,使得IPSec架构愈趋完整。
  
  四、安全群组SA
  
  在IPSec标准中最重要的项目就是SA,它定义了一个安全的"环境",这个环境的内容包含了IP封包加密,解密,和认证的相关讯息,叙述如下:
  
  ·密码功能:提供加密或认证或两者同时。
  
  ·密码算法:例如加/解密使用DES(或 Triple-DES)认证使用MD5 (或SHA-1)。
  
  ·密码算法中所使用的金钥,金钥的生命周期等。
  
  ·是否有启始化向量。
  
  ·SA的生命周期
  
  SA可以使用安全参数索引 SPI(32位)来描述,也就是一个SPI值决定一个特定的SA,而主机的IP地址与SPI则定义了唯一的SA。例如主机A可以通知主机B SPI值为1000,它所相对的SA环境,密码功能为有只加密,用DES,金钥为0x1234567890abcdef(长度64位,其中8个位为同 位)。所以主机A就可以藉由SPI 1000的值来加密它的数据,然后传送到主机B。当B收到封包后利用主机A和SPI的值就可以决定出SA而解密取回原始数据。

在了解IPSec协议的工作原理后,我们来看它不同的用场合,值得注意的是在网络层提供安全机制,对应用层而言是完全透通的(trarsparent)。IPSec可以装设在gateway或主机上,或是两者同时,若IPSec装在gateway上,则可在不安全的Internet上提供一个安全的信道,若是装在主机,则能提供主机端对端的安全性。分别是gateway对gateway,主机对gateway,主机对主机三种可能的应用状况。
  
  IPSec的优点
  
  IPSec在传输层之下,对于应用程序来说是透明的。当在路由器或防火墙上安装IPSec时,无需更改用户或服务器系统中的软件设置。即使在终端系统中执行IPSec,应用程序一类的上层软件也不会被影响。
  
  IPSec对终端用户来说是透明的,因此不必对用户进行安全机制的培训。
  
  如果需要的话,IPSec可以为个体用户提供安全保障,这样做就可以保护企业内部的敏感信息。
  
  IPSec正向Internet靠拢。已经有一些机构部分或全部执行了IPSec。IAB的前任总裁Christian Huitema认为,关于如何保证Internet安全的讨论是他所见过的最激烈的讨论之一。讨论的话题之一就是安全是否在恰当的协议层上被使用。想要提供IP级的安全,IPSec必须成为配置在所有相关平台(包括Windows NT,Unix和Macintosh系统)的网络代码中的一部分。
  
  实际上,现在发行的许多Internet应用软件中已包含了安全特征。例如,Netscape Navigator和Microsoft Internet Explorer支持保护互联网通信的安全套层协议(SSL),还有一部分产品支持保护Internet上信用卡交易的安全电子交易协议(SET)。然而,×××需要的是网络级的功能,这也正是IPSec所提供的。
  
  ×××工作原理
  
  IPSec提供三种不同的形式来保护通过公有或私有IP网络来传送的私有数据:
  
  ·认证:可以确定所接受的数据与所发送的数据是一致的,同时可以确定申请发送者在实际上是真实发送者,而不是伪装的。
  
  ·数据完整:保证数据从原发地到目的地的传送过程中没有任何不可检测的数据丢失与改变。
  
  ·机密性:使相应的接收者能获取发送的真正内容,而无意获取数据的接收者无法获知数据的真正内容。
  
  在IPSec由三个基本要素来提供以上三种保护形式:认证协议头(AH)、安全加载封装(ESP)和互联网密钥管理协议(IKMP)。认证协议头和安全加载封装可以通过分开或组合使用来达到所希望的保护等级。
  
  对于×××来说,认证和加密都是必需的,因为只有双重安全措施才能确保未经授权的用户不能进入×××,同时,Internet上的窃听者无法读取×××上传输的信息。大部分的应用实例中都采用了ESP而不是AH。密钥交换功能允许手工或自动交换密钥。
  
  当前的IPSec支持数据加密标准(DES),但也可以使用其它多种加密算法。因为人们对DES的安全性有所怀疑,所以用户会选择使用Triple-DES(即三次DES加密)。至于认证技术,将会推出一个叫作HMAC(MAC 即信息认证代码Message Authentication Code)的新概念。
  
  认证协议头(AH) 是在所有数据包头加入一个密码。正如整个名称所示,AH通过一个只有密钥持有人才知道的"数字签名"来对用户进行认证。这个签名是数据包通过特别的算法得 出的独特结果;AH还能维持数据的完整性,因为在传输过程中无论多小的变化被加载,数据包头的数字签名都能把它检测出来。不过由于AH不能加密数据包所加 载的内容,因而它不保证任何的机密性。两个最普遍的AH标准是MD5和SHA-1,MD5使用最高到128位的密匙,而SHA-1通过最高到160位密匙 提供更强的保护。
  
  安全加载封装(ESP)通过对 数据包的全部数据和加载内容进行全加密来严格保证传输信息的机密性,这样可以避免其他用户通过监听来打开信息交换的内容,因为只有受信任的用户拥有密匙打 开内容。ESP也能提供认证和维持数据的完整性。最主要的ESP标准是数据加密标准(DES),DES最高支持56位的密匙,而Triple-DES使用 三套密匙加密,那就相当于使用最高到168位的密匙。由于ESP实际上加密所有的数据,因而它比AH需要更多的处理时间,从而导致性能下降。
  
  密钥管理包括密钥确定和密钥分发两个方面,最多需要四个密钥:AH和ESP各两个发送和接收密钥。密钥本身是一个二进制字符串,通常用十六进制 表示,例如,一个56位的密钥可以表示为5F39DA752E0C25B4。注意全部长度总共是64位,包括了8位的奇偶校验。56位的密钥(DES)足 够满足大多数商业应用了。密钥管理包括手工和自动两种方式。
  
  人工手动管理方式是指管理员使用自己的密钥及其它系统的密钥手工设置每个系统。这种方法在小型网络环境中使用比较实际。手工管理系统在有限的安全需要可以工作得很好。使用手工管理系统,密钥由管理站点确定然后分发到所有的远程用户。真实的密钥可以用随机数字生成器或简单的任意拼凑计算出来,每一个密钥可以根据集团的安全政策进行修改。
  
  自动管理系统能满足其他所有的应用要求。使用自动管理系统,可以动态地确定和分发密钥,显然和名称一样,是自动的。自动管理系统具有一个中央控制点,集中的密钥管理者可以令自己更加安全,最大限度的发挥IPSec的效用。 另一方面,自动管理系统可以随时建立新的SA密钥,并可以对较大的分布式系统上使用密钥进行定期的更新。自动管理模式是很有弹性的,但需要花费更多的时间及精力去设置,同时,还需要使用更多的软件。
  
  IPSec的自动管理密钥协议的默认名字是ISAKMP/Oakley。互联网安全组织及密钥管理协议(Internet Security Association and Key Management Protocol ISAKMP)对互联网密钥管理的架构以及特定的协议提供支持。Oakley 密钥使用的协议基于Diffle-Hellman 算法,但它也提供额外的安全功能。特别是Oakley包括认证用户的机制。
  
  IPSec的实现方式
  
  IPSec的一个最基本的优点是它可以在共享网络访问设备,甚至是所有的主机和服务器上完全实现,这很大程度避免了升级任何网络相关资源的需 要。在客户端,IPSec架构允许使用在远程访问介入路由器或基于纯软件方式使用普通MODEM的PC机和工作站。通过两种模式在应用上提供更多的弹性: 传送模式和隧道模式。
  
 
 
  IPSec数据包可以在压缩原始IP地址和数据的隧道模式使用。
  
  传输模式通常当ESP在一台主机(客户机或服务器)上实现时使用,传输模式使用原始明文IP头,并且只加密数据,包括它的TCP和UDP头。
  
  隧道模式通常当ESP在关联到多台主机的网络访问介入装置实现时使用,隧道模式处理整个IP数据包:包括全部TCP/IP或UDP/IP头和数 据,它用自己的地址做为源地址加入到新的IP头。当隧道模式用在用户终端设置时,它可以提供更多的便利来隐藏内部服务器主机和客户机的地址。
  
  ESP支持传输模式,这种方式保护了高层协议。传输模式也保护了IP包的内容,特别是用于两个主机之间的端对端通讯(例如,客户与服务器,或是两台工作站)。传输模式中的ESP加密及有时候会认证IP包内容,但不认证IP的包头。这种配置对于装有IPSec的小型网络特别有用。
  
  但是,要全面实施×××,使用隧道模式会更有效。ESP也支持隧道模式,保护了整个IP包。为此,IP包在添加了ESP字段后,整个包以及包的安全字段被认为是新的IP包外层内容,附有新的IP外层包头。原来的(及内层)包通过"隧道"从一个IP网络起点传输到另一个IP网点,中途的路由器可以检查IP的内层包头。因为原来的包已被打包,新的包可能有不同的源地址及目的地址,以达到安全的目的。
  
  隧道模式被用在两端或是一端是安全网关的架构中,例如装有IPSec的路由器或防火墙。使用了隧道模式,防火墙内很多主机不需要安装IPSec 也能安全地通信。这些主机所生成的未加保护的网包,经过外网,使用隧道模式的安全组织规定(即SA,发送者与接收者之间的单向关系,定义装在本地网络边缘的安全路由器或防火墙中的IPSec软件IP交换所规定的参数)传输。
  
  以下是隧道模式的IPSec运作的例子。某网络的主机甲生成一个IP包,目的地址是另一个网中的主机乙。这个包从起始主机被发送到主机甲的网络边缘的安全路 由器或防火墙。防火墙把所有出去的包过滤,看看有哪些包需要进行IPSec的处理。如果这个从甲到乙的包需要使用IPSec,防火墙就进行IPSec的处 理,并把网包打包,添加外层IP包头。 这个外层包头的源地址是防火墙,而目的地址可能是主机乙的网络边缘的防火墙。现在这个包被传送到主机乙的防火墙,中途的路由器只检查外层的IP包头。主机 乙网络的防火墙会把外层IP包头除掉,把IP内层发送到主机乙去。
  
  IPSec 及×××
  
  由于企业及政府用户需要把它们的专用WAN/LAN 架构与互联网连接,以便访问互联网的服务,所以他们非常热衷于部署安全的IP。用户需要把它们的网络与互联网分隔,但同时要在网上发送及接收网包。安全的IP就可以提供网上的认证及隐私机制。
  
  因为IP安全机制是独立定义,其用途与现在的IP或IPv6不同,IP安全机制不需要依靠IPv6部署。我们可以看到安全IP的功能会首先被广泛使用,它会比IPv6先流行起来,因为对IP层的安全需求远比增加IPv6功能的需求多很多。
  
  有了IPSec,管理人员就有了实施×××的安全标准。此外,所有在IPSec中使用的加密及认证算法已经过仔细的研究和几年的验证,所以用户大可放心地将安全问题交付给IPSec。