📄 rfc2401.txt
字号:
主机 1------------安全网关 1-------------Internet-----------安全网关 2------------主机 2
| | | |
| | | |
| ------------ ----安全连接 1(隧道)---------------- |
--------------------------------------安全连接 2(隧道)------------------------------------------
这两种方式也可以被组合。例如,一个SA束能由一个隧道模式SA和一个或两个传输模式SAs构成应用于序列。(参看4.5节“安全连接的基本组合”。)值得注意的是嵌套的隧道也能发生在任何隧道源或目的端点都不相同的地方。在这种情况下,没有与嵌套隧道相关的带有束的主机或网关存在。
对于传输模式SAs,只有一个安全协议序是合适的。AH应用于更高层协议和IP头。因此在和ESP联合使用时,如果AH使用传输模式AH应该在IP后作为第一个头出现,并应在ESP出现之前。在这种情况下,AH被使用于ESP的输出的密文。相对应的,对于隧道模式的SAs,人们可以使用多个AH和ESP次序。所需要的SA束类型集将在4.5节中描述,这些类型必须被一个适当的IPsec实现所支持。
4.4安全连接数据库
在一个IPsec实现中,和IP传输处理相关的大量细节是一个本地化的问题,它并不受标准的约束。然而,一些处理的外部特性(external aspects)必须标准化以保证相互可操作性,以提供一个最基本的管理能力,这对于IPsec产品化使用时非常必要。这一节描述了和安全连接相关的IP传输处理的通常模式,以达到相互可操作性和功能性的目标。下面所描述的模式仅作参考,适合的实现并不需要在细节上和这一仅作示例的模式相一致,但这一实现的外部特性必须和这一模式外部的显著特征能构成一种映射。
这一模型中有两个数据库:安全策略数据库和安全连接数据库。前者定义了一个决定从主机、安全网关、BITS或BITW IPsec实现输入、输出IP传输的部署。后者包括和每一个安全连接相关的参数。这一节也定义了选择符、IP集和高层协议域值的概念。该值被策略数据库用来把传输映射到一个策略,即SA(或SA束)。
每一个被激活IPsec的接口需要内部和外部数据库(SAD和SPD)表面上的分离,这是因为大量作为选择使用的域具有有向性。典型的,对于主机或安全网关(SG)就有一个这样的接口。注意安全网关中有至少两个接口,但面对合作网(corporate net)的“内部”接口通常没有被激活的IPsec,因此它仅需要一对SADs和一对SPDs。另一方面,如果一台主机有多个接口或一个安全网关有多个外部接口,那么每一个接口有独立的SAD和SPD对也许是有必要的。
4.4.1安全策略数据库(SPD)
根本上,安全连接是一个用来在IPsec环境中增加安全策略的管理结构。因此SA处理必不可少的元素是一个下层的安全策略数据库,它定义哪些服务将被提供给IP数据报,用什么方式把哪些服务提供给IP数据报。数据库和其接口的形式超出了这一规范的讨论范围。然而,这一节定义了一个必须被提供的最小管理功能,它允许用户或系统管理员控制IPsec如何应用于主机或一个安全网关收发传输。
在所有传输(输入和输出)包括非IPsec传输的处理过程中,SPD必须被考虑。为了支持这,对于输入、输出传输SPD需要不同的入口。我们可以把这看成彼此独立的SPDs(输入和输出)。另外,对于每一个被激活IPsec接口,必须提供一个表面上独立的SPD。
SPD必须区分受IPsec保护的传输和允许通过IPsec的传输。这运用于由发送者使用的IPsec保护和必须有接收者参与的IPsec保护。对于任何输出或输入的数据报有三种可能的选择:丢弃、穿过IPsec或使用IPsec。第一种选择是指根本不允许退出主机、穿过安全网关,或最终传递到某一应用程序。第二种选择指的是允许通过而不用额外IPsec保护的传输。第三种选择指的是需要IPsec保护的传输并且对于这样的传输SPD必须规定提供的安全服务,所使用的协议、算法等等。
对于每一个IPsec实现,必须由一个可供管理的接口。它允许用户或系统管理员管理SPD。特别的,每一个输入或输出包受制于IPsec的处理,SPD必须定义在每一种情况下什么行为将被接受。因此可供管理的接口必须允许用户(或系统管理者)定义安全处理,这一安全处理被运用于任何进出系统的包,基于包基的包。(在一个利用套接口的主机中IPsec实现里,SPD也许不必要在每一个包基(packet basis)上考虑,但效果是同样的。)对SPD的管理接口必须允许创建和4.4.2节定义的选择符相一致的入口,并且必须支持这些入口的顺序(ordering)匹配。通过各种选择符中通配符的使用,又由于一个基于单一UDP或TCP连接的所有包趋于匹配一个单一的SPD入口,可以减少对SPD规范过分细节化的需求。选择符和在无状态防火墙或过滤路由器中能发现的以及用当前方式可管理的相类似。
在主机系统中,应用程序可以为其产生和使用传输选择安全处理方法。(对于IPsec实现,提出(signalling)需求的方法超出了本标准的范围)然而,系统管理员必须能够规定用户或应用程序是否可以覆盖(缺省)系统策略。值得注意的是应用程序定义的策略可以满足系统需求以至于系统不必作额外的超出系统需要的IPsec处理,但要满足应用程序需要。本文档不定义管理接口的形式。对于主机与安全网关管理接口形式可以不同,对于主机接口也有基于socket的也有BITS实现的。但本文档定义了一个所有IPsec实现必须支持的SPD元素集标准。
SPD包括策略入口的有序列表。每一个策略入口由一个或多个选择符标识,这些选择符定义了被这一策略入口包含的IP传输。(所需选择符类型在4.4.2节定义)这些选择符定义了策略或IPsec处理的粒度。每一个入口包括一个标识,它标识匹配这一策略的传输是允许通过,丢弃,还是进行IPsec处理。如果运用IPsec处理,入口应包括SA(或SA束)的规范。该规范列举了IPsec协议、模式和使用的算法,包括了任何嵌套需求。例如,入口需要对所匹配的传输进行保护,在传输模式时,ESP使用3DES-CBC(3DES-CBC with an explicit IV),在隧道模式时,AH内嵌套的ESP使用HMAC/SHA-1。对于每一个选择符,策略入口规定怎样为新的安全连接数据库(SAD,参看4.4.3节)从SPD和包中得到相应的值(注意现在对于IP地址仅支持值域;对于所用选择符可以使用通配符表达):
a.使用包自有的值――这将限制SA使用到一些包。这些包对此选择符有这个包的值,即使对于此策略入口选择符有一个允许值范围或有一个通配符。
b.使用和策略入口相关的值――如果仅是个单值,则(a)和(b)没什么区别。但是,选择符取值允许是域值或统配符时,在是域值的情况下,(b)能使SA使用于在范围内任何带有选择符值的包,而不仅仅是用于带有可以触发SA创建选择符值的包。在通配符的情况下,(b)允许SA使用于带有任何此选择符值的包。
例如,假设有一个SPD入口允许源地址是主机地址范围内的任意值(192.168.2.1到192.168.2.10)。并假设待送包源地址为192.168.2.3。根据此选择符策略入口描述的是选择符值的源,对于SA下列任何值可以使用。
Source for the value to be used in the SA example of new SAD selector value
------------------------------------------------- --------------------------------------------
a. packet 192.168.2.3 (one host)
b. SPD entery 192.168.2.1 to 192.168.2.10(range of hosts)
注意如果对于源地址SPD入口有一个允许的通配符值,SAD选择符值可能是通配符(任何主机)。情况(a)能使用于禁止共享,甚至在和同一个SPD入口相匹配的包之间。
正如下面4.4.3节所描述的,选择符可以包括“通配符”入口,因此对于两个入口的选择符可能重复。(这和ACLs之间、路由器过滤入口之间、包过滤防火墙出现的重复相类似。)因此为了确保SPD入口的一致性、处理的可推断性,SPD入口必须有序,必须总以相同顺序查找以便一致的选择首次匹配入口。(此需求是是必要的,因为通过SPD入口的传输处理结果必须唯一确定,但如果对于某些选择符使用通配符则无法规定SPD的入口。)关于对于SPD入口包匹配的更多细节将在第5节提供。
注意如果ESP被规定,认证与加密必须也只能取其一。因此必须能对初值为NULL的认证或加密算法设置SPD值。但是这些服务中必须有至少一个被选择,即不能把它们都配置成空值。
SPD能把传输映射到特殊的SAs或SA束。因此它既能作为安全策略的参考数据库又能作为以存在SAs(或SA束)的映射。(为容纳上述通过、丢弃的策略,SPD也必须提供一个能把传输映射到这些功能上的方法,即使(per se)没有IPsec处理。)SPD操作的方式对于输入、输出传输是不同的,对于主机、安全网关、BITS和BITW实现也是不同的。5.1和5.2节分别描述SPD在输入、输出处理的使用。
由于安全策略也许需要多余一个SA应用于一个特定序列集合的传输,SPD的策略入口必须保护这些当前的有序需求。因此对于一个确定的IPsec实现必须有可能使输入、输出包通过SAs序列进行处理。从概念上讲,对于输出处理,可以想象成来自于一个有活动SAs的SPD入口链(到SAD),并且每一个入口由单一SA或由一构成SA束的有序SAs列表组成。当某一包匹配于某一SPD入口,并且一个已存在SA或SA束能用于此传输时,此包的处理就被列表中的SA或SA束入口所控制。对于一个采用多重IPsec SAs输入的IPsec包,基于目的地址、IPsec协议和SPI的查找应定义成一个单一SA。
SPD用以控制所有通过IPsec系统的传输流,包括来自/到安全网关后入口的安全和密钥管理传输(例如,ISAKMP)。这意味着ISAKMP传输必须在SPD中有明确的解释,否则它将被丢弃。注意安全网关能以多种方式禁止加密报文通过,例如,对于ESP包在SPD中有DISCARD入口,或提供代理密钥交换。后一种选择中,传输在安全网关内部路由到密钥管理模块。
4.4.2选择符
SA(或SA束)或许是详细的或许是粗略的,这有赖于选择符所定义的SA的传输集。例如,两主机之间所有的传输可以通过单一SA来传输,并且给予一个统一的安全服务集。另外,一对主机间的传输可以通过多重SAs,而不同的SAs提供不同的安全服务,这有赖于使用的应用程序(正如下一代协议和端口域中定义)。同样,一对安全网关之间的所有传输能基于单一SA,或为每一个通讯主机对指派一个SA。为了SA管理有利于SA粒度的控制,必须支持接下来的选择符参数。注意在带有ESP头的包接收情况下,例如一个封装的安全网关或BITW实现处,传输层协议、源/目的端口和名字(如果有)可能是“OPAQUE”,即因为加密或分片而不可达的。还要注意源和目的地址应该既可以是IPv4的也可以是IPv6的。
* 目的IP地址(IPv4或IPv6):这或许是单一IP地址(点播的,多播,广播或多重组播),或许是一个地址范围(包含的高或低值),地址加掩码或一个通配符地址。最后三种被用来支持共享同一个SA的多目的地系统。(例如,一个安全网关后)。注意这一选择符同用以唯一表示一个SA的<Destination IP Address, IPsec Protocol, SPI>元组中的“目的地IP地址”域有概念上的不同。当一个隧道化的包到达了隧道的终点时,它的SPI/Destination address/Protocoal常常用来在SAD中寻找此包的SA。这一目的地址来自于封装的IP头。一旦包通过隧道模式的SA处理和传出隧道后,将在输入SPD中查找它的选择符。输入SPD有一个称之为目的地址的选择符。这一IP目的地址是内部(封装后的)IP头中的一个。在传输包的情况,只有一个IP头并且是明确的。[所有的实现均需要]
* 源IP地址(IPv4或IPv6):这或许是一个单一IP地址(点播的,多播,广播或多重组播),或许是一个地址范围(包含的高或低值),地址加掩码或一个通配符地址。最后三种被用来支持共享同一个SA的多源地地址的系统。(例如一个安全网关后或一个多宿主主机中)。[所有的实现均需要]
* 名称:有两个情况(注意这些名称格式在IPSec DOI支持。)
1. 用户ID
a. 一个有完全权限的用户名称串(DNS),例如,mozart@foo.bar.com
b. X.500 著名的名称,例如,C = US,SP = MA,O = GTE网际互连,CN = Stephen T.Kent
2. 系统名称(主机,安全网关,)
a. 一个有完全权限的DNS名称,例如,foo.bar.com
b. X.500 著名的名称
c. X.500 一般的名称
注意:此选择符的一个可能取值是“OPAQUE”(不透明)。
[以下实例的需要,注意手动密钥的SAs不需要名称格式的支持而非地址。
* 用户ID
—本地主机实现
—仅有一个用户,BITW和BITS作为主机实现
—对于输入处理的安全网关实现
* 系统名称—所有实现]
* 数据灵敏级:(IPSO/CIPSO 标记)
[对于所有如在8节描述的提供信息流安全的系统需要,对于所有其他系统可选]
* 传输层协议:从IPv4“协议”或者IPv6“Next Header”域得到。这可以是一个单个协议数。这些包域可以不包含传输协议,因为IP扩展头的存在,例如,一个路由器头,AH,ESP,分片头,目的选项,跳连跳选项。注意在一个具有ESP头的包的接收实例中可以不提供传输协议,因此“OPAQUE”的一个值应该得到支持。
[所有实现都需要]
注意:为了探明传输协议,一个系统必须检查报头的“协议”或者“下个头”域,直到遇到它认为是一个传输协议,或者遇到不在其扩展头列表中的报头,或者遇到一个表示传输协议不透明的ESP头。
* 源端口和目的端口(如TCP/IP):这些可能是个别的UDP/TCP端口或者通配端口。(下个协议域和源/目的端口域(在和源/目的地址域的连接中),作为一个SA选择符有时当作“面向会话的加密”)。注意在一个具有ESP头的包的接收实例中可以不提供源端口和目的端口,因为“OPAQUE”的一个值应该得到支持。
下面的表总结了包和SPD中“Next Header”的值与SPD和SAD的源端口选择符值的关系。
包的下个头 SPD的传输层协议 SPD和SAD的源端口选择符值
--------------- ------------------------ -----------------------------------------
ESP ESP或者任何 任何(例如,不顾它)
不管 任何 任何(例如,不顾它)
特定值 特定值 不是任何(例如,丢弃包)
分片
特定值 特定值 实际端口选择符
不分片。
如果包分段了,端口信息就不能在当前分段中获得。若这样就丢弃这个分段。首分段应该发送ICMP PMTU,这个分段含有端口信息。[可以被支持]
IPsec实现信息内容决定怎样使用选择符。例如,集成到栈中的主机实现可以利用套接口。当新的连接建立时,SPD可能协商并且把SA(或SA束)绑定到套接口。所以通过那个套接口发送的传输不必导致对SPD/SAD额外的查询。相反,BITS,BITW或安全网关实现需要查看每个套接口,完成基于选择符的SPD/SAD查询。在传输流、安全连接和安全策略之间选择符域的允许值是不同的。
下面的表总结了在SPD和SAD中需要表示的入口的类型。它显示了这些入口怎样同数据传输中属于IPsec屏蔽的域关联起来。(注释:源和目的地址的“wild”和“wildcard”入口包含掩码,范围等。
域 通信值 SAD 入口 SPD 入口
-------- ------------- ---------------- --------------------
src addr single IP addr single,range,wild single,range,wildcard
dst addr single IP addr single,range,wild single,range,wildcard
xpt protocol* xpt protocol single,wildcard single,wildcard
src port* single src port single,wildcard single,wildcard
dst port* single dst port single,wildcard single,wildcard
user id* single user id single,wildcard single,wildcard
sec. labels single value single,wildcard single,wildcard
* 这些域的SAD和SPD入口可能是“不透明的”的,因为传输值是加密的。
注意:原则上,一个能够在SPD中有选择符和选择符值的入口不能对SA或SA束绑定协商。
例子包含了选择符值,这些选择符用来选择丢弃的传输或枚举列表,这个列表引起为列表中的项(item)创建独立的SA项。现在,这个为本文档的未来版本留下,对SPD和SAD来说,需要的选择符列表和选择符值是相同的。但是,如果可以不误导用户相信管理接口正在创建带有这些选择符值的SA,有一个“支持”使用不能协商的选择符值的管理接口是可以接受的。例如,接口可以规定一个枚举列表的值,但将引起为列表中入口创建独立策略和SA。厂家可以支持这样的接口,该接口让它的用户制定清晰简明的策略规范更加容易。
4.4.3安全连接数据库(SAD)
每个IPsec实现都有一个名义上的安全连接数据库,在数据库里,每个入口定义了一个SA联合的参数。每个SA在SAD中有一个入口。对于输出处理,SAD入口被SPD中的入口指定。注意,如果当前SPD入口不指向对包合适的SA,实现就创建一个适当的SA(或SA束)并把SPD入口链接到SAD入口(参看5.1.1节)。对输入处理,SAD中的每个入口由目的IP地址,Ipsec协议类型和SPI索引。下面的参数与SAD中的每个入口相关联。这个描述并不意味是MIB库,只是作为一个用来支持在IPsec实现中的SA所需的最小数据入口的规范。
对于输入处理:下面的报文域用来查找SAD中的SA:
* 外部头的目的IP地址:IPv4或IPv6的目的地址。
[所有实现需要]
* IPsec协议:AH或ESP,在数据库中用做SA查询的索引。制定用在这个SA之上的传输的IPsec协议。
[所有实现需要]
* SPI:32位值,用于区分不同的SA,这些SA在相同的目的地结束并使用相同的IPsec协议。
[所有实现需要]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -