PowerPoint 演示文稿
IPSec VPN 协议原理
目录
一、VPN概述
二、IPSec VPN
三、IKE协议
虚拟专用网(Virtual Private Network,VPN)是在公用网络(通常是因特网)中建立专用的数据通信网络的技术。
在虚拟专用网中,任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是利用公用网络的资源动态组成的逻辑专网。
一、VPN概述
1.1 VPN的概念
一、VPN概述
1.2 VPN的应用
数据机密性保护
数据完整性保护
数据源身份认证
重放攻击保护
因此,VPN具有成本低廉、配置灵活的优点,加上具有足够强的安全性,被企业用户甚至各国军政用户广泛使用。我们工作中也遇到越来越多使用此类协议的信号。
一、VPN概述
1.3 VPN的功能
按照在不同OSI协议层上的实现,VPN技术可分为如下几类:
应用层: SSL VPN
会话层: Socks5 VPN
网络层: IPSec VPN
数据链路层: PPTP及L2TP
这些VPN技术各有特点,但目前应用最多的是IPSec VPN。
一、VPN概述
1.4 VPN的分类
目录
一、VPN概述
二、IPSec VPN
三、IKE协议
IPSec(Internet协议安全)是一个标准网络安全协议,为IP网络通信提供安全服务。
IPSec包括两种安全协议:
验证头协议AH(协议号51),只有认证功能
封装安全载荷协议ESP(协议号50),具有加密和认证功能,是最常用的协议。
IPSec使用因特网密钥交换协议IKE(UDP端口号500)进行密钥协商和管理。
二、IPSec VPN
2.1 IPSec 介绍
IPSec有隧道(tunnel)和传输(transport)两种封装模式。
二、IPSec VPN
2.2 IPSec 模式
安全关联(Security Association,SA )
SA是两个通信实体经协商建立起来的一种协定。它决定了用来保护数据包安全的IPSec协议、密钥以及密钥的有效存在时间等。
SA是单向的:In和Out方向各需要一个SA
与协议相关:每个安全协议各需要一个SA
创建方式:手工、IKE协商
二、IPSec VPN
2.3 术语和基本概念
安全参数索引(SPI)
32比特的数值,用于查找SA。SPI、IP目的地址、安全协议号三者结合起来共同构成三元组,来唯一标识一个特定的SA
SA生存时间(Life Time)
定义SA的有效时间,基于时间和流量两种生存周期。
变换方式(Transform Mode)
定义报文的保护方式。包括安全协议、安全协议使用的算法、安全协议对报文的封装形式等
二、IPSec VPN
2.3 术语和基本概念
下一头部:8比特,标识认证头后面的下一个负载类型
填充字段:变长,大多数加密算法要求输入数据包含整数个分组,因此需要填充
负载数据:包含由下一头部字段给出的变长数据
SPI:32比特,用于标识有相同IP地址和相同安全协议的不同SA。由SA的创建者定义,只有逻辑意义
ESP认证
ESP尾
负 载
ESP头
IP头
填充(0~255字节)
下一头部
填充长度
认证数据
(变长的)
负载数据
(变长的)
序列号
安全参数索引(SPI)
填充长度:8比特,给出前面填充字段的长度,置0时表示没有填充
下一头部
填充长度
认证数据
(变长的)
填充(0~255字节)
负载数据
(变长的)
序列号
安全参数索引(SPI)
32位
ESP头部
ESP尾部
ESP认证数据
加密的
认证的
序列号:32比特,一个单向递增的计数器,用于防止重放攻击,SA建立之初初始化为0,序列号不允许重复
2.4 ESP报文格式
认证数据:一个变长字段,也叫Integrity Check Value,由SA初始化时指定的算法来计算。长度为32比特的整数倍
目录
一、VPN概述
二、IPSec VPN
三、IKE协议
IKE(Internet Key Exchange,因特网密钥交换协议):是以受保护的方式动态协商安全关联SA的一种协议。它定义了通信实体间进行身份认证、协商加密算法以及生成共享的会话密钥的方法。
IKE属于一种混合型协议,在由ISAKMP协议定义的框架之上,定义了自己的密钥管理方式。因此其报文格式符合ISAKMP协议。
三、IKE协议
3.1 IKE介绍
3.2 ISAKMP报文格式
ISAKMP头
UDP头
IP头
载荷1
UDP头
载荷n
……
载荷内容
载荷头
载荷长度
保留值0
下一载荷类型
1字节
1字节
2字节
对于最后一个载荷,其“下一载荷类型”字段为0
“载荷长度”包含4字节载荷头长度
3.3 IKE消息头格式
三、IKE协议
3.4 载荷类型
NONE 0
安全关联(SA) 1
建议(P) 2
变换(T) 3
密钥交换 (KE) 4
标识(ID) 5
证书(CERT) 6
证书请求(CR) 7
散列(HASH) 8
签名(SIG) 9
Nonce (NONCE) 10
通知(N) 11
删除(D) 12
厂商标识(VID) 13
常见载荷
认证方式:
预共享密钥(Pre-Shared Key,PSK),双方事先约定好一个共享的密钥,通常为可见字符组成的字符串。
数字签名,利用数字证书来表示身份,用数字签名算法计算出一个签名来验证身份。
加密算法:
DES、3DES、AES等(使用CBC模式)
密钥交换方法:
DH交换
散列算法:
MD5、SHA1等
三、IKE协议
3.5 SA中常用算法
三、IKE协议
3.6 IKE 协商
IKE协商分为两个阶段
阶段1:协商IKE SA,为保证阶段2的安全通信。
主模式:6个消息交互
野蛮模式:3个消息交互
阶段2:协商IPSec SA,为保证数据的安全通信。
快速模式:3个消息交互
阶段1:主模式
举例:主模式+快速模式
消息1&2:Cookie交换与IKE SA协商
消息1、2通过交换SA载荷进行协商IKE安全提议。
IKE协商发起端FW1
IKE协商响应端FW2
计算Cookie-i=MD5(源目IP、随机数、日期和时间)
(1)Cookie-I,SA
计算Cookie-r=MD5(源目IP、随机数、日期和时间)
根据消息1携带的载荷协商IKE安全提议。
(2)Cookie-I, Cookie-r,SA
消息报样
消息1
消息报样
消息2
消息3&4:DH密钥交换与生成
交换DH变换的公共密钥、随机数,从而生成IKE SA相关密钥
消息3、4通过交换KE和Nonce载荷交换生成密钥的信息。
IKE协商发起端FW 1
IKE协商响应端FW 2
计算C= gx mod p;生成大随机数Ni。
(3) Cookie-i, Cookie-r,C,Ni
计算D= gy mod p;生成大随机数Nr。
(4)Cookie-i, Cookie-r,D,Nr
DH 密钥交换原理
安全性基于素数域上离散对数分解的困难性
消息报样
消息3
消息报样
消息4
消息5&6:认证并建立一个安全通道
消息5、6通过交换ID载荷和HASH载荷对对等体进行验证,这些信息都是加密的。
IKE协商发起端FW 1
IKE协商响应端FW 2
计算gxy mod p;
根据Pre-shared KEY、DH秘密、大随机数计算密钥。
(5)Cookie-i, Cookie-r,IDi,HASH_i
计算gxymod p;
根据Pre-shared KEY、DH秘密、大随机数计算密钥。
(6)Cookie-i, Cookie-r,IDr,HASH_r
加密信息
IKE密钥计算方法
前提条件:双方有共同的PSK,计算出DH公共密钥gxy,其它元
素均来自前4个消息报文
基本算法:HMAC-HASH,带密钥的HASH算法,其定义为:
HMAC-HASH(K,M)=HASH(K⊕opad|HASH(K⊕ipad|M)),其中K为密钥,用0x00填补到64字节,外层填补opad为64个0x5c,内层填补ipad为64个0x36。HMAC-HASH结果长度取决于HASH算法:MD5时为16字节,SHA1时为20字节。
首先计算:
SKEYID=HMAC-HASH(PSK, nonce_i|nonce_r)
SKEYID_d=HMAC-HASH(SKEYID, gxy|cookie_i|cookie_r|0)
SKEYID_a=HMAC-HASH(SKEYID, SKEYID_d|gxy|cookie_i|cookie_r|1)
SKEYID_e=HMAC-HASH(SKEYID, SKEYID_a|gxy|cookie_i|cookie_r|2)
IKE密钥计算方法
IKE密钥key的生成取决于其长度keylen与SKEYID_e长度(HASH结果的长度hashlen)之间的关系:
若keylen≤hashlen,则key=MSBkeylen(SKEYID_e);
否则,key=MSBkeylen(K1|K2|K3 …)
K1=HMAC-HASH(SKEYID_e,0)
K2=HMAC-HASH(SKEYID_e,K1)
K3=HMAC-HASH(SKEYID_e,K2)
……
阶段2:快速模式
举例:主模式+快速模式
IDur
IDui
KE (gXi)
HASH1
Ni
SAui
ISAKMP头(CKY-I ,CKY-R)
IP+UDP头
IDur
IDui
KE (gXr)
HASH2
Nr
SAur
ISAKMP头(CKY-I ,CKY-R)
IP+UDP头
HASH3
ISAKMP头(CKY-I ,CKY-R)
IP+UDP头
发起者
回应者
IKE协商发起端FW 1
IKE协商响应端FW 2
利用安全密钥、 M_ID、随机数Ni’、SAi等信息计算hash1;
Cookie-i, Cookie-r,hash1,Sai,Ni’
Cookie-i, Cookie-r,hash2,SAi,Nr’
利用安全密钥、 M_ID、随机数Nr’、SAr等信息计算hash2;
利用双方的随机数根据指定的算法推导出IPSec-SA的密钥;
利用安全密钥、M_ID、Ni、Nr计算hash3
利用双方的随机数根据指定的算法推导出IPSec-SA的密钥;
Cookie-i, Cookie-r,hash3
3个消息:协商IPSec SA
IPSec密钥计算方法
IPSec密钥:key=MSBkeylen(K1|K2|K3…),
K1=HMAC_HASH(SKEYID_d, Protocol|SPI|nonce_i|nonce_r)
K2=HMAC_HASH(SKEYID_d, K1|Protocol|SPI|nonce_i|nonce_r)
K3=HMAC_HASH(SKEYID_d, K2|Protocol|SPI|nonce_i|nonce_r)
……
对于IPSec中的ESP协议,Protocol值为3,消息中其它元素均来自快速模式。
由于通信双方在快速模式中指定的SPI(即各自ESP报面中的SPI)值不同,因此双方生成的IPSec密钥也不同。
33
IPSec密钥计算方法
如果双方使用完美前向安全(Perfect Forward Secrecy,PFS)属性,则快速模式前2个包强制重新进行DH交换,这使得IPSec密钥不依赖主模式中DH交换,并且新的DH交换在快速模式中加密传输,增加了安全性。此时,
K1=HMAC_HASH(SKEYID_d, gxy|Protocol|SPI|nonce_i|nonce_r)
K2=HMAC_HASH(SKEYID_d, K1|gxy|Protocol|SPI|nonce_i|nonce_r)
K3=HMAC_HASH(SKEYID_d, K2|gxy|Protocol|SPI|nonce_i|nonce_r)
……
34
IV生成方法
由于主模式协商的加密算法都使用CBC模式,因此还需要为协商阶段的加密包生成IV(ESP包的IV在报面显示)。
主模式第5包:IV=HASH(gx|gy)
主模式第6包IV为第5包密文最后一个分组
快速模式第一包:IV=HASH(主模式第6包最后一个分组|消息ID)
快速模式后两个包IV为前一包密文最后一个分组
VID载荷
VID(Vendor ID)为厂商标识,通常为厂商定义的字符串经散列生成。VID能标识VPN设备厂商甚至型号,还能标识设备支持的一些协议(如NAT穿越)。
VID在我们的工作中非常重要,它的设备识别功能不但能在信号侦察中帮助判断用户性质,在网密情分析、系统攻击研究工作中也能发挥重要作用。
VID载荷
参考资料
[RFC2407] The Internet IP Security Domain of Interpretation for ISAKMP
[RFC2408] Internet Security Association and Key Management Protocol (ISAKMP)
[RFC2409] The Internet Key Exchange (IKE)
IPSec VPN中SA属性定义
练习题
/docProps/thumbnail.jpeg