IPSec VPN 原理介绍 | 京东物流技术团队
背景:
什么是 VPN?他是干什么用的?有什么优势?解决我们什么问题?
1 VPN 的概念
VPN 定义
Virtual Private Network,中文名虚拟专用网络,意思是在公用网络上仿真建立一条点到点的专用网络,进行加密通讯,解决远程访问(个人和分支机构到总部)的问题。
要理解 VPN,我们需要先弄了解一个概念——隧道协议,其实质是用一种协议来传输另一种协议,其基本功能是封装和加密。我们给大家列举几个隧道协议:GRE、IPSec、SSL/TLS、VPN(WebVPN)、PPTP、L2TP。
VPN 解决的问题
VPN 是企业分支机构、末端网络以及个人通告公共网络访问内部私网的一个解决方案。公网上存在的问题既是 VPN 需要面对和解决的问题。
广域网存在的隐患:
网上传输的数据有被窃听的风险;
网上传输的数据有被篡改的风险;
通信双方可能被冒充;
VPN 如何保护网络实体间的通信:
通过加密技术防止数据被窃听——数据的私密性;
通过哈希技术防止数据被篡改——数据的完整性;
通过认证机制确认身份,防止数据被截获、重传——数据的源认知;
通过增加序列号机制,防止数据的重放攻击——防重放攻击;
VPN 的优势
VPN 作为一项成熟的技术,广泛应用于组织总部和分支机构之间的组网互联,其利用组织已有的互联网出口,虚拟出一条“专线”,将组织的分支机构和总部连接起来,组成一个大的局域网。
相比于传统专线,vpn 具有安全、成本低、可靠、构建灵活等特点。
VPN 的框架
VPN 的两种框架:
site-to-site VPN,也叫 LAN-to-LAN。
remote-access VPN,即拨号 VPN,一般通过软件进行拨号。
2 IPSec VPN
2.1 引入 IPSec
IP Security,IP 层安全。工作在网络层,针对 IP 包提供如下功能:私密性、完整性、源认证和防重放攻击。
IPSec 是一个开放的标准,与具体的算法没有关联。很多个 RFC 共同定义 IPSec。
2.2 IPSec 私密性保护
IPSec 通过加密技术实现数据的私密性,加密就是把数据的明文格式通过具体的算法变成无法理解的密文格式。
加密算法的发展:
古典加密算法(算法都是保密不公开的,古典加密算法就是在研究各种算法)
现代加密算法:现代加密学的所有算法都是公开的,但是现代加密算法加入了一个 key,主要在研究 key,现代加密算法都是通过异或运算与数据难题在设计
现代加密算法分类:
对称加密学:加密解密使用相同的 key,典型的对称算法:DES,3DES,AES
非对称加密学:又叫公共密钥系统,每种算法存在 2 个 key:public key 和 private key。两个 key 都可以用来加密数据,但是解密必须非对称,公钥加密私钥解密,私钥加密公钥解密。典型的公共密钥算法有 RSA(DSA)和 DH。
对称加密算法的缺陷:
密钥的分发问题;
key 的数量与参与者的数量呈正比,密钥管理困难
对称加密算法的优点:
算法快,不需要消耗很多资源;
明文密文几乎等长,不需要浪费网络带宽
非对称加密算法缺点:
算法需要很长时间进行加解密,不可能通告非对称算法实现传输数据的加密;
算法冗长,密文远远大于明文;
非对称加密算法的优点:
非常安全,不可能被破解,非对称算法都是基于现有的属性南通设计的;
可用来支撑数字签名;
现有安全模型的操作规范:
实体间交换公钥
发送方通过公钥加密对称算法的 key,得出密文,这个密文只有私钥持有者可以解密
接收方通过私钥解密密文,得到对称算法的 key
通过这个 key 运行对称算法
2.3 IPSec 的数据完整性保护
数据完整性指发送方到接收方的整个过程数据没有发生任何变化。IPSec 通过哈希技术实现完整性校验,哈希是数据的指纹算法。
哈希的特征:
不可逆(哈希的结果不可能反推明文)
等长(不同的哈希算法,对不同大小的数据,得到哈希结果总是相同的)
雪崩(微小的变化会引起完全不一样的结果)
开销少
介绍两种哈希算法:
MD5:哈希结果 128bit;
SHA:哈希结果 256bit;
2.4 IPSec 的数据源认证
源认证是用来对数据发送方进行合法性校验的方法。IPSec 提供两种方式实现源认证:
HMAC:在 MD5 的算法中,加入一个变量 key,只有 key 相同才能导致 MD5 结果相同,通过这种方式可实现数据的源认证。IGP 的认证中,都是 HMAC;
数字签名:指发送方通过自己的私钥对数据的指纹进行加密,得出加密后的哈希,这个东西就是数据签名,数字签名只能使用发送方的公钥进行解密,这样发送方无法抵赖(最严谨的源认证)。
注意:在整个安全模型中,如果使用到私钥在进行加密,肯定是出现了数字签名
2.5 IPSec 框架
前面提到,IPSec 不是一个特定协议,而是一组操作流程,有多个组件构成:
封装协议(AH,ESP)
加密算法(RSA,DH,DES,3DES,AES)
认证协议(MD5,SHA)
ESP 封装为数据提供了如下功能:私密性、完整性、源认证和防重放攻击。
概念介绍:SA:Security Association,安全关联是指一组用来保护信息的策略和密钥。安全关联的概念是 IPSec 的基础。所有 AH 和 ESP 的实现都必须支持安全关联。
安全关联的两种模式:transport mode 和 tunnel mode。通过两种设备的位置,可以判断当前网络模式应该使用哪种封装模式:
通讯点设备:真正的数据发起和接收设备。
加密点设备:IPSec 实施设备,可以是路由器、防火墙等。
transport mode:通讯点即为加密点,可以试试传输模式,有两种场景会使用:GRE over IPSec、内网设备间部署 IPSec
tunnel mode:通讯点不等于加密点一定使用隧道模式。因为通讯点位于网络内部,发出的数据包是私网地址,不可全局路由,所以必须实施新的 IP 头封装,让数据包全局可路由。
3 IPSec 工作流程步骤
3.1 整体工作流程
流量触发 IPSec;
IKE 阶段 1,在 VPN 设备间协商 IKE 的安全策略,建立一个安全的 channel——控制层面;
IKE 阶段 2,在 VPN 设备间通过安全的 channel 去协商 IPSec 的策略,用来保护数据;——数据层面;
通过对感兴趣流设施安全保护,来转发数据;
隧道终结。
VPN 设备对感兴趣流量的匹配:设备接口下存在一个 map,用来定义感兴趣流的,如果数据撞上 map 则需要应用 IPSec 保护,否则 bypass
概念穿插:
IKE:internet KEY Exchange,因特网密钥交换,目前使用 IKEv1 版本,包括如下内容:
ISAKMP:因特网安全管理和密钥管理协议,端口号 500;
OAKLEY:用来定义 IKE 的密钥交换方式,当前的定义是使用 DH 实现。
SKEME:用来定义 IKE 职场的加密算法。
IKE 的两种模式:main mode(主模式)和积极模式(用于拨号 vpn)
IKE 主模式操作过程:
IKE 协商——构建控制层面;
IPSec 协商——协商数据层面;
两个阶段需要进行 9 个包交换,第一个阶段 6 个包,3 次交换,第二个阶段 3 个包,两次交换。
3.2 IKE 阶段 1
主要功能介绍:
协商 IKE 策略(第 1,2 两个包)——第一次交换;
交换 DH 组(第 3,4 两个包)——第二次交换;
验证 peer 的合法性(第 5,6 两个包)——第三次交换。
第一次交换:VPN device 把本地所有的 IKE policy 打包,发起 ike 的 proposal
IPSec 设备会进行策略比较,总是从 policy-id 小的开始 match,如果存在可以 match 的 policy 则提议被通过,如果所有的 policy 无法 match,则 IKE 协商失败,进入第二次交换。
因为加密算法没统一,没有加密 key,所以第一次交换过程肯定是明文交换。
第二次交换:交换的是 DH 组信息,在这个交换过程中,设备不可能把本地的 psk 进行发送(psk 严格本地保留),只是用来交互几个 DH 的公开值。
因为 key 还没协商,所有依然是明文交换。
在第二次交换后,VPN 设备通过 cookie+psk 可以推导出三个密钥:
SKEIDa:用来通过 1,2 个包协商出来的加密算法保护 5,6 包
SKEIDe:用来通过 1,2 个包交换出来的哈希算法对 5,6 包进行认证
SKEIDd:这个密钥是在第二个阶段用来衍生 IPSec 的 key,如果这个密钥被攻破,所有 IPSec 就没有意义
第三次交换:第三次交换的主要功能是用来做 peer 的身份验证。
第三次交换是在建立了安全的 channel 下交换的,第五第六个包是加密的,也是被认证的。
在 psk 的验证中,其实 vpn 设备只是通过 5,6 包的源 IP 地址进行校验。psk 的关键作用只是参与 DH 算法,用来做 key 衍生,如果 psk 不同 key 不同,协商失败。
IKE 第一阶段协商结果,即产生 IKE SA,也叫 isakmp sa
3.2 IKE 阶段 2
本阶段涉及 3 个包,两次交换,也叫做快速模式。
快速模式下的所有包都是通过 SKEIDa 进行加密,SKEIDe 进行认证,所有读取报文都是加密的数据。
此过程交换并匹配 IPSec 的安全参数(转换集),VPN 设备把本地的所有转换集打包发送,match 的时候与 IKE 的 1,2 包交换是相同的,同时只要转换集匹配则通过 DH 的第三个 key-SKEIDd 进行 IPSec 加密算法密钥的推导。
IKE 第二阶段协商结果是 IPSec sa。
SA 的三要素:
SPI(安全参数索引),用来描述一个 SA,用于 IPSec 快速匹配,告诉对端通过这个 SPI 对应的 SA 对该数据进行解密,让加解密更加高效,占用 4byte;对于一个对应的感兴趣流,一端的 outbound SPI 肯定是对端的 inbound SPI(因为数据保护使用的是对称算法,必须保证加解密 key 相同)
安全协议标识:标识该 SA 是 AH 安全关联或 ESP 安全关联。
IP 目的地址:只允许使用单一地址,表示 SA 的目的地址。
4 扩展话题
SA 的切换探讨:
SA 的主要内容就是对称密钥的 key 与哈希算法的 key,当一个 SA 使用的越频繁,就代表 key 越需要更新,SA 的切换必须做到不丢包。
IKE 在可以超时前就会重新推算新的 SA,防止切换瞬间带来的丢包。
所有的 IPSec SA 都是通过 IKE 的 SKEIDd 在推算,如果这个 SKEIDd 被曝光,会导致所有的 IPSec SA 全部可推算
PFS(完美向前保护): 因为默认的 IPsec key 间存在互相推导关系,导致不够安全,PFS 强制每一次重新计算 SA 需要重新通过 DH 推导 SKEIDd。
RRI(反向路由注入):
如果策略 1 能够成功的协商 SA,则往本地路由表注入一条远端通讯点的静态路由
DPD(dead peer detection):
如果对端失效,本端无法检测,导致数据层面转发黑洞,解决方案是必须让本端可以检测到对端失效,同时删除与对端的 SA,重新寻找 peer 去建立 SA
DMVPN 和 NHRP(可自行了解)
作者:京东物流 陈旭辉
来源:京东云开发者社区 自猿其说 Tech 转载请注明来源
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/14ff7b185426f5fe01d1e2497】。文章转载请联系作者。
评论