IPSec ×××原理
使用×××带来的×××
l 数据安全 data security
l 带宽保证 lack of edicated bandwith between sites
×××技术分类
二层××× (Layer 2 ×××):增加一个二层传输头部,能够封装各种三层流量,IP,IPX,AppleTalk,多播;很好的QOS保障
l ATM
l Frame Relay
三层××× (Layer 2 ×××):增加一个三层传输头部
l GRE,完整的×××功能,但 完全没有安全功能
l MPLS,any to any,虚拟×××云,但需要SP接入点
l IPSec,省钱,安全,带宽无法保证
两种×××模型
站点到站点(Lan to Lan,site to site),应使用路由器来实现
ATM,IPSec,GRE,MPLS
远程访问(remote access),应使用ASA实现
IPSec,PPTP(VPDN),L2TP+IPSec(VPDN),SSL ×××
 
IPSec简介
l 插入一个预定义的头部
l 网络层加密安全
 
IPSec组成部分
ESP(负载安全封装)协议,封装协议
l AH(认证头)协议,封装协议
l IKE(Internet密钥交换协议),交换加密认证算法,密钥信息
IPSec模式
传输模式(transport mode)
在原始数据包的IP头部和负载之间插入
隧道模式(tunnel mode)
一般的L2L和remote access模式都是采用隧道模式
在原始数据包的IP头部之前插入IPSec头部,再在IPSec头部之前增加新的全局IP头部
概念:通讯点和加密点
通讯点和加密点一致为传输模式,不一致为隧道模式
 
ESP协议(encapsulated security payload)
协议号50
PS:常用协议号(区别于端口号)
icmp         1
ip               4
tcp             6
udp           17
l ESP在数据包的IP头部后面插入ESP头部,在数据包的尾部插入ESP尾部和ESP认证字段
l ESP只对负载部分(ESP头部到ES认证字段之间,不包括ESP头部和认证字段,或者说是原始数据包负载和ESP尾部字段)加密
l ESP对ESP头部字段和数据负载部分做验证
l ESP具有防重放功能(通过序列号位实现)
ESP包结构
ESP头部字段包括
l SPI(security parameter index)安全参数索引,用于标示SA,在IKE协商阶段由对端决定
l sequence number序列号,用于接收窗口和防重放
l IV(initialization vecter初始化向量)值,随机值用于CBC加密
l ESP头部不加密
ESP尾部字段包括
l padding length(垫片长度),标示加密时对数据块的补足长度,根据算法不同而异
l next header
ESP认证字段
l 使用HMAC
l 96位长度(MD5是128,SHA是160位,只取前96位)
 
ESP包的处理流程
outbound方向
1.       填充
修改IP头部的next header为50(表明后面数据部分为ESP)
生成ESP头部字段(SPI,SN,IV)
负载部分padding填充
成成ESP尾部字段(padding长度,修改next header)
2.       加密
使用协商的加密算法(由SPI决定)将负载和ESP尾部加密
3.       验证
使用协商的验证算法(由SPI决定)对ESP头部和加密数据进行哈希计算,并将计算结果生成ESP验证部分
4.       重新校验CRC
重新计算CRC并修改
 
inbound
1.       检查处理SA是否存在(决定解密和验证算法)
2.       检查序列号是否有效(防重放)
3.       对数据包进行完整性和来源验证
4.       解密
5.       有效性验证,包括模式是否匹配(隧道or传输),是否满足感兴趣流
6.       依据模式不同转入下一级处理
 
ESP分片
分片:出站数据包大于MTU时会进行分片
先加密后分片
l 不是一个推荐的操作,因为会增大接受路由器或防火墙的压力
l 先对数据包加密,再进行分片
l 接收路由器负责重组装分片
l 接收路由器负责解密
l 无法执行CEF
l 数据包非正常(理解)传输中可能会出现被拦截的情况
先分片后加密(默认)
l 推荐操作,重组装分片的压力由终端来负担
l 先把数据包分片,在对数据包加密
l 接收路由器只负责解密
l 终端负责重组装分片
l 正常的数据包,可自由传输
l 可路由加速(CEF)
 
 
AH协议(authentication header认证头部)
l 区别于ESP,AH会对IP头部做一定范围的认证而EPS完全不对IP头做认证
l AH只有一个头部字段
l AH协议号1
l 不执行加密(严重问题,所以应用很少)
AH包结构
只有头部
 
AH会对IP头部的部分字段做验证(为什么不是全部:因为IP头部在传输中会发生改变,比如TOS,TTL,CRC)
因为AH会对源目IP做验证,所以使用AH封装IPSec ×××是无法穿越NAT的
 
SA(security association安全联盟)
SA是IPSec的一个基本组成部分,SA是SADB的一个条目,它包含了双方关于IKE和IPSec已经协商完毕的安全信息,简单来讲就是决定了封装方式,加密算法,验证算法,密钥等
两种类型的SA
l IKE SA or ISAKMP SA,定义IKE协商的SA(双向的)
l IPSec SA,定义数据流的SA(单向的)
两者类型的SA都是由IKE协商产生
IPSec数据库
SPD(security policy database安全策略数据库)
决定了什么流量接受IPSec处理(定义感兴趣流)
SADB(security association database安全关联数据库)
维护每一个SA包含的参数
SPD(定义选择器)
l 源地址
l 目的地址
l 名字
l 传输层协议
l 源目端口号
l 满足感兴趣流的动作:旁路/接受(bypass),丢弃(discarded),加密(IPSec)
SADB
序列号
序列号overflow
防重放窗口
SA lifetime
mode
AH authentication alogrithm
ESP authentication algorithm
ESP encryption algorithm
Path MTU(用于检测路径上的最小MTU,以防止分片)
 

选择器:定义对什么样的数据执行安全
inbound
策略:用什么样的方法执行安全
 
 


 

outbound
SPD-----------------------------SADB---------------------------﹛
 
SADB的每一个条目决定了一个特定的SA参数,当一个IPSec SA被创建,SADB更新所有关于这个SA的参数。当一个inbound IPSec数据包抵达,SADB给予外层IP欧布的目的IP地址,SPI和IPSec封装协议(ESP/AH)检索数据库一伙的相应的SA,然后用这个SA的相关参数处理这个inbound IPSec数据包。对于outbound IPSec数据包处理的相关参数,是由SPD相关联的SA来获取