Linux下因特网密钥交换协议设计与实现
Linux下因特网密钥交换协议设计与实现
[摘要]介绍IPSec协议和因特网密钥交换协议(IKE),然后结合具体的科研工作,详细阐述在Linux操作系统上实现IKE协议的一种具体实现方案,解决如何在Internet中进行密钥自动协商的问题。
[关键词]IPSec协议 IKE协议 安全关联(SA)
中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)0410037-02
IPv4协议中定义的IP数据包本身并不包含任何安全特性,很容易便可伪造出IP包的源地址、修改其内容、重发以前的包以及在传输途中拦截并查看包的内容。针对IPv4的先天不足,IPSec协议提供了一种标准的、健壮的以及包容广泛的安全机制,可用它为IP及上层协议(如UDP和TCP)提供安全保证。但是IPSec协议要得到广泛的应用,必须解决如何在Internet中进行密钥的自动协商问题,这也将是本论文的重点。
一、IPSec和IKE
(一)IPSec协议
IPSec协议是新一代因特网的安全标准,它是个协议族,包括Authentication Header(AH协议)、Encapsulating Security Payload(ESP协议)和Internet Key Exchange(IKE协议)。IPSec 为TCP/IP协议栈中的网络层(IP层)提供数据加密和身份认证等服务,可以有效地保护IP 数据报的安全。当两个网络之间的通信需要经过不安全的第三方网络时,可利用IPSec协议来构造一个基于网络层(IP)的虚拟私用网络。IPSec可有效地保护IP数据报的安全,具体保护形式包括:数据起源地验证、无连接数据的完整性验证、数据内容的机密性(是否被别人看过)、抗重播保护、以及有限的数据流机密性保证。
IPSec协议有两种模式:传输模式和通道模式。传输模式保护IP的负载,它适用于主机,但当网关做主机使用时,也可使用此种模式。在传输模式中,AH和ESP保护的是传输负载。传输模式下,AH嵌套 ESP 的例子如图1所示。
图2 通道模式下 AH 嵌套 ESP
通道模式保护整个IP包,在数据报的最终目的地不是安全终点的情况下,通常需要在这种模式下使用IPSec,它既适用于主机,也适用于安全网关。通道模式下AH嵌套ESP的例子如图2所示。
(二)因特网密钥交换协议(IKE)
IKE协议是个通用的因特网密钥交换协议,不仅可以用于IPSec的安全关联的协商,也可以用于像OSPF这类需要协商安全信息的场合。在用IPSec保护一个IP包之前,必须先建立一个安全联盟(安全关联)。正如前面指出的那样,安全关联可以手工创建或动态建立。Internet密钥交换(IKE)用于动态建立安全关联。IKE代表IPSec对安全关联进行协商,并对安全关联数据库进行填充。IKE属于一种混合型协议,建立在由Internet安全联盟和密钥管理协议(ISAKMP)定义的一个框架上,同时,IKE还实现了两种密钥管理协议的一部分:Oakley和SKEME。此外,IKE还定义了它自己的两种密钥交换方式。
二、Linux下IKE协议的设计与实现
Linux 目前是操作系统中的研究热点,有庞大的研究群体和使用者都在研究和使用它,这在很大程度上可以帮助我们深入我们的研究领域,并及时地找到足够多的用户测试我们的研究成果,对研究的深入和科技成果转化有积极的意义。本文所涉及的系统的模块结构如图3所示,本论文的重点在于IKE的实现部分,它所涉及的模块包SAD(Security Association Database)模块、NSM(Network Security Messaging)模块、PF_KEY套接字模块、IKE守护进程模块和手动密钥管理模块。
图4 安全关联数据库结构示意图
(一)安全关联数据库(SAD)
SAD包含每一个SA的参数信息,例如该SA所采用的IPSec协议、安全参数索引(SPI)、目的地址、认证和加密算法、密钥、SA生存时间、当前序列号、抗重放攻击窗口大小和一些统计信息(如:接收包和发送包的数量,出错数量)等。安全关联数据库的结构如图4所示。
(二)PF_KEY套接字
PF_KEY套接字是一个通用的密钥管理应用程序接口(API),不仅适用于IPSec协议,也适用其它网络安全服务。PF_KEY套接字是套接字协议族中的一个新成员,可被具有可信任优先级的密钥管理程序用来和操作系统内核中的密钥管理部分(如:SADB)进行通信。我们对 Linux2.2.14 的内核进行了修改,使其支持PF_KEY套接字协议族,这样在应用程