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头部
![这里插入图片描述](https://img-blog.csdnimg.cn/d02236a70d6549d7a26aaeefc8efef13.png)
因特网密钥管理协议
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改变——否则完整性检查失败