1.Isakmp头格式 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Initiator ! ! Cookie ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Responder ! ! Cookie ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload ! MjVer ! MnVer ! Exchange Type ! Flags ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Message ID ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.SA Payload 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload ! RESERVED ! Payload Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Domain of Interpretation (DOI) ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ! ~ Situation ~ ! ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Next Payload(1个八位字节)--消息中下一个载荷的载荷类型标识符。如果当前载荷处于消息的最后,此字段位0。当它们作为安全联盟协商的一部分时,此字段绝不能包含提议或转换载荷的值。例如,在交换的第一条消息中,此字段将包含值“10”(Nonce载荷的类型),在标识保护交换中的第一条消息中,此字段将包含值“0”。 Reserved(1个八位字节)――未用,置为0 Payload Length(2个八位字节)――以八位字节为单位,整个安全联盟载荷的长度,包括SA载荷,所有提议载荷,和所有与被提议安全联盟相连的传输载荷。 DOI(4个八位字节)――有了它协商才可以进行。DOI是一个32位无符号整数。在阶段1的交换中DOI的值如果为0,说明ISAKMP SA可在第二阶段中用于任何协议,如果ISAKMP SA在第二阶段用于IPSec,则 DOI的值指定为1。所有其它的DOI值留给IANA以备后用。在没有参考一些公开规范,如 Internet RFC之前,是不会随便指定一个DOI值的。这个字段必须在安全联盟载荷之内。 Situation(可变长度)――由DOI字段定义,用于标识协商发生在什么环境下。环境用来做出关于所协商的安全属性的策略决定。此字段必须包含在安全联盟载荷之内。
3.Proposal Payload报文格式 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload ! RESERVED ! Payload Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Proposal # ! Protocol-Id ! SPI Size !# of Transforms! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! SPI (variable) ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 提议载荷包含用在安全联盟协商中的信息。提议由安全机制,或转换组成,用来加强通信信道的安全。 Next Payload(1个八位字节)――表示消息中下一个载荷的载荷类型。此字段只能包含值2或0。如果消息中还有额外的提议载荷,此字段为2。如果当前提议载荷处于安全联盟提议的最后,此字段为0。保留(1个八位字节)――未用,置为0。 RESERVED (1个八位字节) —— 未使用, 设置为0. Payload Length(2个八位字节)――以八位字节为单位,整个提议载荷,包括普通载荷头,提议载荷,和所有与此提议相关的转换载荷。当同一个提议号对应有多个提议时,载荷长度字段仅用在当前的提议载荷,而不是对所有的提议载荷。 Proposal #(1个八位字节)――标识当前载荷的提议号。 Protocol-Id(1个八位字节)――指定当前协商中的协议描述符。实例中可能包括ISAKMP、IPSEC ESP、PSEC AH、OSPF,TLS等。 SPI 大小(1个八位字节)――以八位字节为单位,由协议-ID所定义的SPI 长度。在ISAKMP中,ISAKMP头部的初始和响应cookie对是ISAKMP SPI,因此,SPI大小是不相关的,可能从0到16。如果SPI大小非0,SPI字段的内容必须忽略。如果SPI的大小不是4个八位字节的整数倍,它对SPI字段,和消息中的载荷联盟有一些影响。解释域(DOI)将规定对于其它协议的SPI大小。 # of Transforms(1个八位字节)――定义该提议对应多少个转换。 SPI (variable)――发送实体的SPI。当SPI不是4个八位字节的整数倍时,不会对载荷进行填充,然而,它可以用在消息的末尾。 提议载荷的载荷类型是2。 4.Transform Payload报文格式 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload ! RESERVED ! Payload Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Transform # ! Transform-Id ! RESERVED2 ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ! ~ SA Attributes ~ ! ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 转换载荷包含用在安全联盟协商中的信息。传输载荷由特定安全机制,或传输组成,用来加强信道的安全。传输载荷同样包括和特定传输相关的安全联盟属性。这些SA属性是DOI特有的。 Next Payload(1个八位字节)――消息中下一个载荷的载荷类型标识符。这个字段是3或0。在提议中有额外的传输载荷,此字段为3。如果当前传输载荷处于提议的最后,此字段为0。 Payload Length(2个8位字节)――以八位字节为单位,当前载荷的长度,包括普通载荷头,传输值,和所有SA属性。 Transform #(1个八位字节)――标识当前载荷的转换。如果在一个提议载荷内,对于一个特定的协议有多个转换被提议,那么,每一个转换载荷有一个转换号码。 Transform-Id (1个八位字节)――指定当前提议中协议的转换标识符。这些传输有DOI定义,并且独立于所协商的协议。 RESERVED2(2个八位字节)――未用,置为0。 SA Attributes(可变长度)――此字段包括在传输-ID字段中对于给定传输的安全联盟属性。如果SA属性并不是成4字节整数倍,则使用填充物填充。 传输载荷的载荷类型为3。
5.Key Exchange Payload报文格式 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload ! RESERVED ! Payload Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ! ~ Key Exchange Data ~ ! ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 密钥交换载荷用来支持各种密钥交换技术 Next Payload(1个八位字节)――消息中下一个载荷的载荷类型标识符。如果当前载荷处于消息的最后,此字段为0。 RESERVED(1个八位字节)――未用,置为0。 Key Exchange Data(可变长度)――用来产生会话密钥的数据。此数据有DOI和联盟密钥交换算法来解释。此字段同样可以包含前置的密钥指示符。密钥交换载荷的载荷类型为4。
6.Vendor ID Payload报文格式 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload ! RESERVED ! Payload Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ! ~ Vendor ID (VID) ~ ! ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 厂商ID载荷包括由厂商定义的常量。由厂商用来鉴别和区分他们实现的远程实例。 Next Payload (1个八位字节)――消息中下一个载荷的载荷类型标识符。这个字段是3或0。在提议中有额外的传输载荷,此字段为3。如果当前传输载荷处于提议的最后,此字段为0。 RESERVED(1个八位字节)――未用,置为0。 Vendor ID (可变长度) —— Hash of the vendor string plus version (as described above).
7.ID Payload报文格式
1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload ! RESERVED ! Payload Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ID Type ! DOI Specific ID Data ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ! ~ Identification Data ~ ! ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
标识载荷包括用于交换标识信息的特定DOI数据。此信息用来决定通信对等实体的同一性,还可以用来决定信息的可靠性。 Next Payload(1个八位字节)--消息中下一个载荷的载荷类型标识符。如果当前载荷处于消息的最后,此字段为0。 RESERVED(1个八位字节)――未用,置为0。 Payload Length(2个八位字节)――以八位字节为单位,当前载荷的长度,包括普通的载荷头。 ID Type(1个八位字节)――指定被使用的标识类型,由DOI定义。 DOI Specific ID Dat(3个八位字节)-包含DOI 专用标识数据。如果未用,此字段必须置为0。 Identification Data(可变长度)--包含通信实体的标识信息。此字段的值是DOI定义的,而且,格式由ID类型字段来指定。 标识载荷的载荷类型为5。
|
|