来源:http://zh.wikipedia.org/wiki/IPsec
IPsec (缩写Internet Protocol Security ),以IP Packet(小包)为单位对信息进行暗号化的方式,来对传输途中的信息包进行加密或者防止遭到篡改的一种协议(Protocol)。是保护IP协议 安全通信的标准,它主要对IP协议分组进行加密 和认证 。
IPsec作为一个协议 族(即一系列相互关联的协议)由以下部分组成:
(1)保护分组流的协议;
(2)用来建立这些安全分组流的密钥交换 协议。前者又分成两个部分:加密分组流的封装安全载荷 (ESP)及较少使用的认证头 (AH),认证头提供了对分组流的认证 并保证其消息完整性 ,但不提供保密性 。目前为止,IKE协议是唯一已经制定的密钥交换 协议。
标准现状
IPv6 是IETF 为IP协议 分组通信制定的新的因特网标准,IPsec是其中必选的内容,但在IPv4 中的使用则是可选的。这样做的目的,是为了随着IPv6的进一步流行,IPsec可以得到更为广泛的使用。第一版IPsec协议在RFCs 2401-2409中定义。在2005年 第二版标准文档发布,新的文档定义在RFC4301和RFC4309中
PF_KEY
以下来源:http://linux.chinaitlab.com/unix/18775.html
PF_KEY协议 是IPSec的重要组成部分。密钥管理进程利用PF_KEY与内核的SADB进行通信,实现SA(Security Association,安全 联盟)和SP(Security Policy,安全 策略)的管理。本文将从PF_KEY协议 构造和PF_KEY相关系统调用等方面描述OpenBSD内核中的PF_KEY实现。
利用IPSec技术可在IP层实现对数据包进行保护,降低了互联网 通 信的风险。IPsec的安全服务是由通信双方建立的安全联盟(SA)来提供的。IPsec系统在处理输入/输出IP 流时必须参考安全策略库(SPD),并根据从SPD中提取的策略对IP流进行不同的处理,例如拒绝、绕过和进行IPsec保护。SA和SPD的管理是利用 PF_key API来实现用户进程和内核之间的通信,可以通过手工进行,也可以通过IKE来进行动态协商。
PF_KEY是用户进程操作内核中的SADB(Security Associations Database)和SPD的编程接口。