IP的功能是基于IP报头的。图5-1所示的是IPv4报头。
在本书中,我们不会解释报头里的每一个字段。感兴趣的读者可以参考Tan-nenbaum文献(2003)获取更多细节。
报头固定部分是20B,其他任选字段可以扩充报头。因此,它的长度是可变的,IP报头长度(IP Header Length,IHL)字段决定了报头的长度。因为IHL字段是4bit,IPv4报头总的长度最多是15个字,即60B,所以这意味着任选字段最多有40B的空间。IPv4起初有5个任选字段,其中一个是有关安全的,用来说明包的保密程度,以及源节点不希望传输包通过的路由器。虽然明确指出哪个文件是保密的,这多少有些用处,尤其在军用方面,但是这也有助于敌手识别哪个包有机密内容。结果,这个字段一般不使用,也没能证明它的有效性。
IP安全协议(IPsec)是为了IP提供数据机密性、数据完整性和抗抵赖服务而开发的。这个设计是与加密算法相独立的、允许多粒度,比如保护两个路由之间所有通信或两个主机之间的一个单向TCP连接。它有两种工作模式:传输模式和隧道模式(见图5-2)。
图5-1 IPv4报头
图5-2 IPsec协议模式
a)传输模式 b)隧道模式
为了把一个可选报头插入IP报头和TCP报头之间,传输模式使用了IPv4的“协议字段”。协议字段通常是指封装在IP包里的传输层协议。它可能是TCP、用户数据报协议(User Datagram Protocol,UDP)或者是其他协议。当使用IPsec协议时,这个字段指的是IPsec协议的报头。
当优先使用隧道模式时,IP包是封装在另一个应用IPsec协议的IP包里,这是为了在两个节点之间创建一个安全隧道,这两个节点不必是在一个连接终端节点的主机或路由器(见图5-3)。像这样一个隧道也能用在聚合多个流为一个单个数据流时,这使敌手更不容易进行流量分析。(www.xing528.com)
图5-3 IPsec协议隧道模式
IPsec协议报头有两种形式:认证头(Authentication Header,AH)和封装安全载荷(Encapsulating Security Payload,ESP)。图5-4是认证头中字段的示意图。认证头的安全参数索引是安全关联(Security Association,SA)的标识符。虽然IP不是一个基于端到端的、面向连接的协议,但是IPsec协议要求创建一个安全关联,这个安全关联是对安全参数索引在一段时间内有效的基本协定。序列号(Sequence Number,SN)是每一个有相同安全参数索引的IPsec协议报头的唯一号码。当所有序列号都用在同一个安全参数索引时,会选择一个新安全参数索引,这意味着终止了之前的安全关联,并创建了一个新的安全关联。这两个字段是为了保护免受重放攻击。认证数据是对包和共享密钥进行哈希运算的结果,例如,一个哈希消息认证码(Hash Message Authentication Code,HMAC)。我们将在第9章中详细解释用于认证的哈希方案。认证数据确保IP包的完整性。
图5-4 认证头
认证头用于数据完整性和抗抵赖服务,但不能用于数据机密性。封装安全载荷头支持数据机密性,除了安全参数索引和序列号字段,还有用于加密的初始矢量字段。这个初始矢量通过选择的加密算法使用。
IPsec协议报头插入到IP报头和IP包其余部分之间,这通过IPv4报头的proto-col字段来表明。IPv6有一个字段叫next header(下一个报头),它取代了IPv4中的protocol字段(见图5-5)。IPv6包的报头是可以扩展的,next header字段会告诉现在报头之后将是哪种类型的报头。因此,认证头(AH)和封装安全载荷(ESP)是IPv6的报头扩展。
图5-5 IPv6报头
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。