IPSec VPN原理介绍 | 京东物流技术团队

京东云开发者
• 阅读 265

背景:

什么是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)

IPSec VPN原理介绍 | 京东物流技术团队

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 整体工作流程

  1. 流量触发IPSec;
  2. IKE阶段1,在VPN设备间协商IKE的安全策略,建立一个安全的channel——控制层面;
  3. IKE阶段2,在VPN设备间通过安全的channel去协商IPSec的策略,用来保护数据;——数据层面;
  4. 通过对感兴趣流设施安全保护,来转发数据;
  5. 隧道终结。

VPN设备对感兴趣流量的匹配:设备接口下存在一个map,用来定义感兴趣流的,如果数据撞上map则需要应用IPSec保护,否则bypass

IPSec VPN原理介绍 | 京东物流技术团队

概念穿插:

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 扩展话题

  1. SA的切换探讨:
    SA的主要内容就是对称密钥的key与哈希算法的key,当一个SA使用的越频繁,就代表key越需要更新,SA的切换必须做到不丢包。
    IKE在可以超时前就会重新推算新的SA,防止切换瞬间带来的丢包。
    所有的IPSec SA都是通过IKE的SKEIDd在推算,如果这个SKEIDd被曝光,会导致所有的IPSec SA全部可推算
    PFS(完美向前保护): 因为默认的IPsec key间存在互相推导关系,导致不够安全,PFS强制每一次重新计算SA需要重新通过DH推导SKEIDd。
  2. RRI(反向路由注入):
    如果策略1能够成功的协商SA,则往本地路由表注入一条远端通讯点的静态路由
  3. DPD(dead peer detection):
    如果对端失效,本端无法检测,导致数据层面转发黑洞,解决方案是必须让本端可以检测到对端失效,同时删除与对端的SA,重新寻找peer去建立SA
  4. DMVPN和NHRP(可自行了解)

作者:京东物流 陈旭辉

来源:京东云开发者社区 自猿其说Tech 转载请注明来源

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
OpenVPN下载、安装、配置及使用详解
原文:http://www.cnblogs.com/CakaSWM/p/5582236.html一、目的:通过云服务器的外网地址,将没有外网的服务器的端口地址转发到外网,使其能够通过外网进行访问。二、原理:  1.虚拟专用网VPN  虚拟专用网VPN(virt ual private network)是
虚拟私有云的定义
虚拟私有云(VPC)是一个公共云计算资源的动态配置池,需要使用加密协议、隧道协议和其他安全程序,在民营企业和云服务提供商之间传输数据。一个VPC基本上把提供商的多租户架构变成单租户架构。在定义上类似虚拟专用网络(VPN)。一个VPN能够被用于在公共性网,例如互联网技术上根据专用型隧道施工传送数据,该隧道施工不可以键入未适度数据加密的数据信息。安全性的额外等
Stella981 Stella981
3年前
Amazon VPC 常见问答2
可以使用哪种客户网关设备连接AmazonVPC?您可以创建的VPN连接有两种:静态路由VPN连接,以及动态路由VPN连接。支持静态路由VPN连接的客户网关设备必须能够:使用预共享密钥建立IKE安全关联以隧道模式建立IPsec安全关联利用AES128位加密功能
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Linux应急响应(一):SSH暴力破解
0x00前言SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。SSH口令长度太短或者复杂度不够,如仅包含数字,或仅包含字母等,容易被攻击者破解,一旦被攻击者获取,可用来直接登录系统,控制服务器所有权限。0x01应急场景某天,网站
Stella981 Stella981
3年前
Linux应急响应(二):捕捉短连接
0x00前言​短连接(shortconnnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。在系统维护中,一般很难去察觉,需要借助网络安全设备或者抓包分析,才能够去发现。0x01应急场景​
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
一次MTU问题导致的RDS访问故障
导语VPN是一种通过公网连接两个或多个私网站点的专用网络,使得这些站点仿佛是通过专线连接在一起。IPSec是一套协议框架,用于保证数据传输的私密性,完整性,真实性。但是VPN网络经常会带来一些连通性上的问题,通常与MTU设置的不合理