IPSec
基于通信IP环境下一种端到端,保证数据安全的机制
包含 两个安全协议,一个密钥管理协议, 标准价秘密技术为基础
- DES/其他分组加密算法
 - 键值hash算法认证
 - 公钥有效的数字证书
 
- AH协议提供信息源验证、完整性保证
 - ESP提供信息源验证、机密性、晚自习保证
 - ISAKMP 交流共享安全信息
 
安全功能
隧道协议
- 实现VPN通信
 - 数据起源地验证; —— 数据可靠
 - 无连接数据的完整性验证
 - 数据内容机密
 - 抗重播保护
 - 有限数据流机密性保证
 
AH 认证报头 Authentication Header
IP数据包服务
- 无连接数据完整性验证
 - 数据源身份认证
 - 防重放攻击
 
不提供
- 数据保密性
 - 键值hash函数而非数字签名 (数字签名会降低网络吞吐率
 
数据完整性通过Hash函数如MD5校验保证。数据源身份认证通过计算验证码加入共享密钥实现; AH头序列号可以防止重放攻击
ESP encapsulating security payload 封装安全有效载荷协议
- 数据保密性
 - 无连接
 - 数据源认证
 
使用ESP验证数据完整性,ESP不包含IP报头中固定的字段认证:
 比AH多了以下内容
- 数据包加密 —— 一个数据包加密,整个数据包或者IP包的载荷部分
 - 数据流加密
 
IKE 因特网密钥交换协议额
协商AH和ESP协议使用的加密算法
- 身份认证
 - 协商加密
 - 生成共享的会话密钥
 
IKE将密钥协商结果留在 SA中,供AH和ESP通信使用。DOI使用IKE进行协商SA的协议统一分配标识符。 DOI将IPSec和RFC文档联系在一起
安全联盟(Security Association)
两台IPSec计算机在交换数据之前,必须首先建立某种约定,这种约定,称为“安全联盟"或"安全关联"。双方就保护信息,交换信息等公共安全设置达成一致 —— 让两种计算机安全交换一套密钥
IPsec提供多个选项进行网络加密认证:确定所需安全服务,通信双方明确规定需要使用的算法。例如,DES或IDEA 用来 加密 ;MD5或SHA用于完整性 服务 )。在确定了算法以后,双方必须共享会话密钥
SA有二义性:IPSec SA或IKE SA
- AS是单向的,一堆通信系统至少要两个AS 
  
- 一个处理 SA(out)
 - 一个为 SA(in)
 
 
每个 SA可由一个三元组唯一确定
<SPI, 源/目的IP地址, IPSec协议>
安全参数索引(Security Parameter Index,SPI) 随机选取的惟一字符串
安全协议识别码 区分AH还是ESP 标识同一个目的地的SA
源/目的IP地址。表示对方IP地址,对于外出数据包,指目的地址;对于进入IP包,指源地址
IPSec协议:采用AH或ESP
 
if : 当一个系统需要对发送的包使用IPSec实施保护时
then : 
    查询数据库中的安全联盟 
    进行特定处理
    安全连接的SPI插入到IPSec报头
if 当对等接收方收到数据包时
then
    用SPI和目的IP地址
    从网络数据库中查询相对应的安全联盟
    安全处理
 
两大主要任务就是创建和删除
- 手工管理:SA的内容由手工指定、手工维护。
 - IKE自动管理:通过一个Internet标准密钥管理协议来完成
 
要求用户使用程序的一个接口和IPSec内核通信, 以便实现对SA数据库的管理
- 先协商SA参数
 - 用SA更新SAD(安全联盟数据库)
 
安全联盟数据库包含每个SA的参数信息:
- AH\ESP算法密钥
 - 序列号
 - 协议模式
 - 有效期
 
人工密钥协商必须支持。通信双方离线同意SA各项参数
- 电话/电子邮件进行SPI分配,参数选择 
  
- 容易出错
 - 不版权
 - 人工方式删除
 
 - SA没有周期限制 
  
- 不会过期
 
 
已经配置好的IPSec环境中,SA建立可以用 因特网标准密钥管理协议(IKE完成
if 安全策略找不到SA
    then IPSec 自动调用IKE
        IKE与目标主机,途中router/host协商SA
        SA创建好加入SAD数据库
        数据包会用SA参数实现安全服务
 
删除SA的理由
- 存活时间过期
 - 密钥被破解
 - SA加密/解密 or验证字节数超过策略设定的某一个阈值
 - 另一端要求删除
 
SAD Security Association Database,安全联盟数据库
所有SA存于存储的列表
对于外出流量
if IPSec需要处理 && SA不存在
    then IPSec 启动IKE协商SA
        存储SAD中
进入流量:
if IPSec需要处理
    then IPSec在IP包找出三元组,在SAD查找SA
 
SP安全策略和 SPD安全策略数据库
SECURITY POLICY 对IP数据包
- 提供何种保护?
 - 何种方式保护?
 
SP根据源IP,目的IP,入数据,出数据表示。
 IPSec定义用户如何设置安全册率 —— “选择符”设置大小。控制IP地址以及传输层协议,TCP/UDP端口等
SECURITY POLICY DATABASE —— 所有SP集中存储的列表
接受/收到IP的处理方法
- 丢弃:流量不能离开host或发送导应用程序,也不能转发
 - 不用IPSec,对流量作为普通流量处理,不需要额外的IPSec保护
 - IPSec,对流量用用IPSec保护,指向一个SA(不存在要协商
 
IPSec工作模式
传输模式、隧道模式(AH和ESP都支持这两种模式
传输模式
- 保护IP包有效负荷 
  
- TCP
 - UDP
 - ICMP
 
 
用于主机之间安全通信
对IPv4,有效负荷是报文头后面的数据
 IPv6是基本报头+扩展报头部分

隧道模式
- 保护整个IP包
 
给IP包增加AH or ESP字段
在外部新增IP头
原始包/内部包通过隧道从IP一段传到另一端
路由器检查最外面的IP头而不是内部的IP头
IP报文目的地址可能不一致(多用于至少一端为安全网关,如防火墙,路由器的时候
后续防火墙后的host可以内部地址通信,无需IPSec
 

IPSec实现方式
主机、路由器/防火墙,两者中同时实施部署
- 集成。 
  
- IPSec集成到IP协议。
 - 处理IP源代码,
 - 适用于在主机和安全网关中实现
 
 - BITS。 
  
- “堆栈中的块”(BITS)实现。 IPSec插在IP协议栈和链路层之间
 - 不用处理IP源代码
 - 适用对原有系统升级改造
 - 用于主机
 
 - BITW 
  
- “线缆中的块(BITW)”实现
 - IPSec在一个设备中
 - 设备接入host或者router
 - 类似BITS,支持路由器和防火墙需要当安全网关
 
 

对比
| 传输模式 | 隧道模式 | |
|---|---|---|
| 处理 | AH ESP处理有效再付,不改IP头 | 原来的整个IP包都受到保护,并被当作一个新的IP包的有效载荷。 允许网络设备,如router扮演IPSec代理角色,host发送接受内容,router完成数据加密和解密  | 
| 优点 | 每个数据包只增加少量字节 公网可以看到源地址目标地址,中间网络可以根据IP头进行处理(但第四次还是加密的  | 于不用修改任何端系统就可以获得IP安全性能。  防止通信量分析攻击——内外IP头不一样  | 
IPSec传输模式只能用于源和目的系统都理解IPSec协议的情况下。 多用隧道
隧道有点:不修改网络结构的host,server,OS或任何app

IPSec数据包信息格式
认证报头AH
IPSec协议之一
- IP提供完整性
 - 数据源身份验证
 - 有限的抗重放服务
 - 不对受保护的IP数据包进行加密。不提供保密性
 
定义
- 保护方法
 - 头的位置
 - 身份认证覆盖范围
 - 输入输出处理规则
 - 没对所用身份验证算法定义
 
用处
- 保护上层协议(传输
 - 保护IP包(隧道
 
协议代号是51 == AH保护一个IPv4数据包协议进行阻断
下一个头字段表示 下一个头字段表示AH头之后
- 传输模式。 将是处于保护中的上层协议的值,比如UDP或TCP协议的值
 - 隧道模式:数值4表示在隧道模式下,其数值4表示IP-in-IP(IPv4)封装;数值41表示IPv6封装
 

- 负载长度字段:32位字为单位的长度减去2来表示
 - SPI字段中包含SPI: 该字段和外部IP头的目的地址一起,用于识别对这个包进行身份验证的安全联盟
 - 序列号是一个单向递增计数器
 - 身份验证数据字段是一个可变长度字段,其中包括完整
性校验的结果。该字段长度必须是 该字段长度必须是32位字的整数倍 
AH运行模式
传输模式:上层协议;隧道模式:完整IP数据包
 要对外部IP头固有部分身份验证
传输模式
保护的是端到端的通信。通信的终点必须是 通信的终点必须是IPSec终点。 AH头紧跟在IP头之
 后(包括任意选项)以及需要保护的上层协议之前

在IPv6环境下,AH被看作是端对端的有效负载。中间router不处理。AH出现在IPv6基础报头、跳点、路由和分片扩展报头后面。验证同样包括整个包(设置为0就不需要验证
隧道模式
将自己保护的整个数据包封装起来。另外,在AH头之前,另添加了一个IP头。 可替换端对端安全服务的传输模式
- 无保密协议
 - 无法抵御通信流分析
 - 确保传输过程不被修改 
  
- 当事人发送
 - 新的非重放数据包
 
 
外出数据包首先必须匹配一个SPD条目(表示采用AH保护),
然后查找SAD看是否存在一个合适的 看是否存在一个合适的SA。
if not 
    then可用IKE动态地建立一个
else 
    then 相应的SA对数据包进行安全处理
      顺序由它的设计协定而定义
 
ESP封装安全载荷
混合安全服务
- 机密性
 - 数据源身份验证
 - 完整性
 - 抗重播
 
选择数据源验证时才可以选择抗重播服务。接收方单方面选择抗重播服务。
ESP单独应用或者IP验证头AH结合使用,或者采用嵌套形式。安安全服务可在一对通信主机、一对安全网关之间,一个安全网关和一台主机的实现。

ESP头可在位置
- IP头之后
 - TCP or UDP头之前
 - 封装在IP头之前(隧道模式
 
封装安全有效载荷分组格式
ESP紧跟在IP协议头之后
- IPv4没区别,协议头字段是50
 - IPv6在扩展头之后和目的地头之间
 
可选项若未选。不被包含在传送分组中,也不会进行ICV的加u四年
加密验证算法
通用的、可灵活扩展的协议
标准要求所有的ESP实现支持密码分组链方式(CBC)的DES作为缺省的算法 作为缺省的算法。然而,这种规定并不是强制性的。可以使用加密算法或者不加密
DES-CBC用64比特一组的加密数据 比特一组的加密数据(密文)来代替64比特一组的未加密数据(明文)。
- 随机,64bit初始化向量 用于 加密第一个明文分组
 - 确保铭文信息开头相同可以保证加密信息的随机性
 
传输模式和隧道模式类似前者
传输模式ESP
IPv4意指把ESP放在IP头(和它包含的任何其它选项)之后,但是在上层协议之前
如果选择身份验证,则在ESP报尾之后添加ESP认证数据字段。身份验证范围包含所有密文以及ESP头。

IPv6中,ESP被看作端到端的有效载荷,路由不对其检查处理。目标选项扩展头既可以在ESP头之前,也可以在ESP头之后。
ESP仅保护ESP之后的字段

隧道模式ESP
在主机或者安全网关上实现。安全网关(保护用户传输流量 保护用户传输流量)实现时必须采用隧 实现时必须采用隧道模式
ESP保护整个内部IP分组,其中包括整个内部IP头,加入新的IP头部


因特网密钥管理协议
IPSec并没有提供如何建 并没有提供如何建立该安全联盟的机制
IETF分为两部分
- IPsec提供分组级别安全处理
 - 因特网密钥管理协议IKMP负责协商安全联盟
 
IKE(Internet Key Exchange)
- 两个实体之间建立一条经过认证的安全隧道
 - 并对用于IPSec的安全联盟进行协商
因特网安全联盟和密钥管理协议 简历安全联盟和密钥框架 
密钥管理需求
AH和ESP的参与双方需要共享密钥,这可以通过手工(Manual)密钥分发或者带外(out-of-band)密钥分发来实现
问题
- 密钥有可能丢失/妥协/过期
 - 需要管理的安全联盟数目太多,手工分发密钥技术将无法满足可伸缩性
 
要求
- 独立于特定的密码算法
 - 独立于特定的密钥交换协议
 - 密钥管理实体的认证
 - 不安全传输通道上建立SA
 - 资源的有效使用
 - 按需产生主机和基于会话的SA
 
IKE对应的特性
- 密钥产生和身份认证过程
 - 自动密钥更新
 - 每个安全协议(AH,ESP)有自己的安全参数索引(SPI)空间
 - 内置保护:资源耗尽攻击,连接/会话劫持攻击
 - 前向保密性(Perfect Forward Security
 - 分阶段方法:第一阶段建立密钥交换的密钥和SA,第二阶段建立数据传输的SA
 - 端口500实现
 - 支持面向主机(IP地址)和面向用户(长期身份)证书
 - ISAKMP交换使用强认证方法
 
认证方法
认证必须是双向认证。
- 预共享密钥(Pre-shared Keys
 
- 相同密钥预先装在主机上。IKE计算hash发送对方认证
 
- 公钥加密
 
- 无法提供抗拒绝服务能力
 - 只支持RSA公钥加密算法
 
- 数字签名
 
- 和前面的类似,但是它可以提供抗拒绝服务。当前支持RSA公钥加密算法和数字签名标准
 
是数字签名还是公钥加密都需要使用数字证书来完成公钥 数字证书来完成公钥/私钥的映射
密钥交换
DH协议就可让双方协商一个会话密钥。这个过程是经过认证的,以防止中间人攻击.
IKE使用Oakley来实现,基于DF,防止中间人攻击
两个阶段组成
 一阶段
- 建立ISAKMP安全联盟 
  
- ( 假设并没有安全通道存在
 - SA由ISAKMP拥有
 - 只协商一个SA —— ISAKMP SA
 - 只提供一个建议,就是使用Oakley为密钥交换方法
 
 
二阶段
- 前两条消息是发起者提供一个建议,其中包含一个或多个变换。响应者选择其中某个变换 应者选择其中某个变换。此外还要产生一个 此外还要产生一个Cookie,用于预防拒绝服务攻击。Cookie对(发起者和响应者Cookie)还可识别ISAKMP SA
 - 下两个消息为DH密钥交换
 - 最后两条用于认证
 
第一阶段产生的ISAKMP SA保护后续所有的第二阶段
 ISAKMP消息。
- 更新第一阶段的密钥材料
 - 实体交换SA的建议,使用某个建议
 - 三个工作模式 
  
- 快速模式
 - 信息模式
 - 新租模式
 
 
ISAKMP结构
适应不同类型的服务,含13种已定义的负载。负载时ISAKMP消息基本构造块
交换类型定义了五种
- 基本
 - 身份保护
 - 纯认证
 - 积极
 - 信息
 
IKE协议
混合型协议,包括
- ISAKMP
 - Oakley
 - SKEME
 
对比ISAKMP
- IKE定义密钥交换过程
 - ISAKMP只顶一个通用可被密钥交换协议使用框架
 
四种认证方式
- 数字签名
 - 公开密钥
 - 修正的公钥密钥
 - 预共享字符串
 
交换模式
- 主模式(一阶段
 - 积极(一阶段
 - 快速(二阶段
 - 新组(一阶段后i而上新组
 
前三用于协商SA,后1用于协商DH算法
IPSec/IKE系统处理
- 认证和密钥交换创建IKE SA和两个设备之间的安全隧道
 - IPSec使用的共享密钥和IKE共享密钥不一样 
  
- 需要用新算法推导IPSec密钥
 - 前向保密性指长期使用的主密钥泄露,不会导致过去的会话密钥泄露
 
 - 可用DH推导确保前向保密性 or 最初创建的IKESA用DH交换的共享密钥和随机数进行hash运算获得 
  
- 前一种安全性高,速度慢
 
 
对分组,要按照IPSec处理
IKE过程在Bob和Alice之间创建了一个安全隧道,IPSec SA协商于该隧道上完成

Bob向Alice发送数据,Bob的router看到数据包,检查安全策略并给包加密后再传输。安全策略告诉router IPSec另一端时Alice的router,检查IPSec SA,没有需要从IKE获得一个。

若未共享IKE SA,协商IPSec前建立IKE SA —— 交换数字证书,数字证书需要有信任的认证中心签名.IKE激活后,路由器协商IPSec SA。统一加密算法、认证算法
总流程
- B的router对B的数据包加密,发送
 - A的路由器接受IPSec包,router查询IPSec SA,处理完后发送A
 
IPSec体系结构

- A向B发送消息
 - A的IPSec驱动器检查IP筛选器,检查是否需要保护,如何保护
 - 驱动通知IKE协商
 - B的IKE收到安全协商通知
 - 主机建立一阶段 SA 
  
- 此时各自生产主密钥
 - 若已建立一阶段,可直接进行二阶段SA协商
 
 - 建立二阶段SA 
  
- 入站SA和出站SA
 - SA包括密钥和SPI
 
 - A的IPSec驱动使用出战SA对数据包 
  
- 签名(完整性
 - 加密
 
 - 驱动将数据包给IP层,IP层转发给B
 - B的网络适配器驱动程序收到数据包交给IPSec驱动程序
 - IPsec驱动程序入栈SA检查完整性,解密
 - 发给TCP.IP驱动程序,再经TCP/IP驱动给主机B的APP
 
使用IPSec保护的数据包不能通过网络地址译码 数据包不能通过网络地址译码NAT。IP地址不能被NAT改变——否则完整性检查失败



















