网络安全 第十四章 VPN 技术

网络安全 第十四章 VPN 技术

VPN 概述

VPN:虚拟专用网(Virtual Private Network),是指将物理上分布在不同地点的网络通过公用网络连接而构成逻辑上的虚拟专网。

主要功能是为不在内网的用户、远程机提供安全地访问内网的技术。

其特点有:费用低、安全保障、服务质量保证、可扩充性和灵活性、可管理性。

关键技术:隧道技术、加/解密技术、密钥管理技术、身份认证技术、访问控制。

IPSec VPN

IPSec 是用于提供 IP 层安全性的协议。其工作原理类似包过滤防火墙,IPSec 网关通过查询安全策略数据库(SPD)决定对接收到的 IP 数据包进行转发、丢弃或 IPSec 处理。

IPSec 网关可以对 IP 数据包只进行加密或认证,也可以对数据包同时实施加密和认证。

无论加密还是认证,IPSec 都有两种工作模式:传输模式和隧道模式。

  • 采用传输模式时,IPSec 只对 IP 数据包的净荷进行加密或认证
    • 封装数据包继续使用原 IP 头,IPSec 头插入到原 IP 头和传输层头部之间
  • 采用隧道模式时,IPSec 对整个 IP 数据包进行加密或认证
    • 产生一个新的 IP 头,IPSec 头被放在新 IP 头和原 IP 数据包之间

IPSec VPN 主要由管理模块、数据加/解密模块、密钥分配和生成模块、数据分组封装/分解模块、身份认证模块、加密函数库。

IPSec 中的主要协议:AH(Authentication Header)、ESP(Encapsulating Security Payload)、IKE(Internet Key Exchange)。

AH

AH 为 IP 报文提供数据完整性和鉴别功能(数据源身份认证)。使用 HMAC 算法。采用 HMAC 算法的双方事先共享密钥。所有的 IPSec 必须实现两个算法 HMAC-MD5 和 HMAC-SHA1。AH 只涉及认证,不涉及加密。

AH 和 ESP的最大区别有两个:一个是 AH 不提供加密服务;另一个是它们验证的范围不同,ESP 不验证 IP 报头,而 AH 同时验证部分报头,所以需要结合使用 AH 和 ESP 才能保证 IP 报头的机密性和完整性。

AH 报文头部:

  • 下一个头(8 位):表示紧跟在 AH 头部后面的协议类型。在传输模式下,该字段是处于保护中的传输层协议的值,如 6(TCP),17(UDP)或50(ESP)。在隧道模式下,AH 保护整个 IP 包,该值是 4,表示是 IP-in-IP 协议
  • 有效载荷长度(8 位):其值是以 32 位(4 字节)为单位的整个AH 数据(包括头部和变长验证数据)的长度再减 2
  • 保留(16 位):准备将来对 AH 协议扩展时使用,目前协议规定这个字段应该被置为 0
  • 安全参数索引 SPI(32 位):唯一标识有相同 IP 地址和相同安全协议的不同 SA,0 被保留用于本地实现,1-255 被 IANA 保留将来使用
  • 序列号(32 位):一个单调递增的计数器,为每个 AH 包赋予一个序号。当通信双方建立 SA 时,初始化为 0。SA 是单向的,每发送/接收一个包,外出/进入 SA 的计数器增 1。该字段可用于抗重放攻击
  • 验证数据:可变长,取决于采用何种消息验证算法。包含完整性验证码,也就是 HMAC 算法的结果,称为 ICV(Integrity Check Value),它的生成算法由 SA 指定

传输模式下的 AH 认证工作原理:

隧道模式下的 AH 认证工作原理:

注:NAT 和 AH 是无法共存的(IP 校验问题),只和 ESP 的隧道模式共存。

ESP

ESP 协议提供数据完整性验证和数据源身份认证的原理和 AH 一样,只是和 AH 比 ESP 的验证范围要小些。ESP 协议规定了所有 IPSec 系统必须实现的验证算法:HMAC-MD5,HMAC-SHA1,NULL。ESP 加密采用的则是对称加密算法,它规定了所有 IPSec 系统必须实现的加密算法是 DES-CBC 和 NULL,使用 NULL 是指实际上不进行加密或验证。

ESP 报文头部:

  • 安全参数索引 SPI(32位):唯一标识有相同 IP 地址和相同安全协议的不同 SA,0 被保留用于本地实现,1-255 被 IANA 保留将来使用
  • 序列号(32位):一个单调递增的计数器,用于抗重放攻击
  • 报文有效载荷:是变长的字段,如果 SA 采用加密,该部分是加密后的密文;如果没有加密,该部分就是明文
  • 填充项:是可选的字段,为了对齐待加密数据而根据需要将其填充到 4 字节边界
  • 填充长度:以字节为单位指示填充项长度。保证加密数据的长度适应分组加密算法的长度,也可以用以掩饰载荷的真实长度对抗流量分析
  • 下一个头:表示紧跟在 ESP 头部后面的协议,其中值为 6 表示后面封装的是TCP
  • 验证数据:是变长字段,只有选择了验证服务时才需要有该字段

传输模式下的 ESP 工作原理:

隧道模式下的 ESP 工作原理:

IKE

IKE 是一种混合型协议,由 RFC2409 定义,包含了 3 个不同协议的有关部分:ISAKMP、Oakley 和 SKEME。

  • OAkley 由某大学学开发,定义 IKE 提供了一个多样化,多模式的应用
  • SKEME 由个人开发,提供了 IKE 交换密钥的算法,如 DH 算法
  • ISAKMP 由美国国家安全处开发,一个通用的可以被任何密钥交换协议使用的框架

IKE 用于动态建立安全关联(SA, Security Association)。主要分两个阶段:

  1. 建立 IKE SA,即在通信双方之间协商密钥,在对等体之间创建了一条安全通道
  2. 利用这个既定的 SA 为 IPSec 建立安全通道,建立 IPSec SA

SA

IPSec 对数据流提供的安全服务通过安全关联 SA 来实现,包括协议、算法、密钥等内容,具体确定了如何对 IP 报文进行处理。一个 SA 就是两个 IPSec 系统之间的一个单向逻辑连接,输入数据流和输出数据流由输入安全关联与输出安全关联分别处理。安全关联由一个三元组(安全参数索引(SPI)IP目的地址安全协议号(AH或ESP))来唯一标识。

  • SPI
    • 序列号计数器
      • 单调递增计数器,用于生成 AH 或 ESP 头中的序列号域,溢出之前,SA 会重新协商
    • 序列号溢出
      • 用于外出包处理,标识序列号计数器溢出时,一个 SA 是否仍可以用来处理其余的包
    • 抗重放窗口
      • 使用一个 32 位计数器和位图确定一个输入的 AH 或 ESP 数据包是否是一个重放包
    • AH 认证密钥
      • AH 认证密码算法和所需要的的密钥
    • ESP 认证密钥
      • ESP 认证密码算法和所需要的的密钥
    • ESP 加密算法
      • ESP 加密算法,密钥,初始向量,工作模式
    • 操作模式
      • 传输模式/隧道模式
    • PMTU
      • 路径最大传输单元
    • SA 生存期
      • 包含一个时间间隔,外加一个当该 SA 过期时是被替代还是被终止
  • 源/目的 IP
    • 输出处理 SA 的目的 IP 地址
    • 输入处理 SA 的源 IP 地址
  • 协议
    • AH
    • ESP

SP

SP(Security Policy)指定用于到达或源自特定主机 / 网络的数据流的策略。SPD(Security Policy Database)是包含多条策略条目的有序列表。每一条策略有如下内容:

  • 目的 IP 地址
    • 32 位 IPV4 或 128 位 IPV6 地址
  • 源 IP 地址
    • 32 位 IPV4 或 128 位 IPV6 地址
  • 传输层协议
    • 指定传输协议
  • 系统名
    • 完整的 DNS 名 / e-mail 地址等
  • 用户 ID
    • 完整的 DNS 用户名
  • 上层端口
    • 应用端口
  • 标志
    • 采取的动作 Discard、Bypass IPSec、Apply IPSec
  • SA 指针
    • 指向一个 SA 或 SAD 的指针

VPN 通道建立方式

Host 对 Host:

Host 对 VPN 网关:

VPN 网关对 VPN 网关:

Remote User 对 VPN 网关:

IPSec VPN 分析

  • 优点
    • IPSec 与应用无关,IPSec VPN 的客户端支持所有 IP 层协议;
    • IPSec 技术中,客户端至站点(client-to-site)、站点对站点(site-to-site )、客户端至客户端(client-to-client)连接所使用的技术是完全相同的;
    • IPSec VPN 网关一般整合了网络防火墙的功能;
    • IPSec 客户端程序可与个人防火墙等其他安全功能一起销售,因此,可保证配置、预防病毒,并能进行入侵检测。
  • 缺点
    • IPSec VPN 需要安装客户端软件,但并非所有客户端操作系统均支持 IPSec VPN 的客户端程序;
    • IPSec VPN 的连接性会受到网络地址转换(NAT)的影响,或受网关代理设备(proxy)的影响;
    • IPSec VPN 需要先完成客户端配置才能建立通信信道,并且配置复杂

SSL/TLS VPN

概述

TLS(Transport Layer Security,传输层安全协议)及其前身 SSL(Secure Socket Layer,安全套接字层)是一种安全协议,由 Nerscape 研发,用来保证在 Internet 上数据传输的安全。

SSL 协议位于 TCP/IP 协议与各个应用层协议之间。可以分为两层:

  • SSL 记录协议(Record Protocol)记录层协议确定传输层数据的封装格式;
  • SSL 握手协议(SSL Handshake Protocol)使用 X.509 认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。

TLS 协议的优势是与高层的应用层协议无耦合。应用层协议可以透明底运行在 TLS 协议之上。

发展历史

  • SSL 1.0 从未公开过,因为存在严重的安全漏洞。
  • SSL 2.0 在 1995 年 2 月发布,但因为存在数个严重的安全漏洞而被3.0版本替代。
  • SSL 3.0 在 1996 年发布,是由网景工程师重新设计。较新版本的 SSL/TLS 基于 SSL 3.0。
  • TLS 1.0 与 SSL 3.0 差异不大,派出了二者之间的互操作性,,也称为 SSL 3.1。
  • TLS 1.1 于 2006 年 4 月发表,添加了对 CBC 攻击的保护,支持 IANA 等级的参数。
  • TLS 1.2 于 2008 年 8 月发表,基于 TLS 1.1,增加多种哈希函数和加密算法。添加 TLS 扩展定义和 AES 密码组合
  • TLS 1.3 于 2018 年 8 月发表,有较大的更新:分离密钥交换算法和认证算法,移除 MD5、SHA1 函数支持,请求数字签名等。

工作过程

协议连接建立过程:

SSL

  1. 客户端发送一个 ClientHello 消息,内容包括:

    • 支持的协议版本,比如TLS 1.0,
    • 一个客户端生成的随机数(稍后用于生成会话密钥),
    • 支持的加密算法(如 RSA 公钥加密),
    • 支持的压缩算法;
  2. 客户端然后收到一个 ServerHello 消息,内容包括:

    • 确认使用的加密通信协议版本,比如 TLS 1.0(如果浏览器与服务器支持的版本不一致,服务器关闭加密通信),
    • 一个服务器生成的随机数(稍后用于生成对话密钥),
    • 确认使用的加密方法(如 RSA 公钥加密),
    • 服务器证书;
  3. 当双方知道了连接参数,客户端与服务器交换证书(依靠被选择的公钥系统)。这些证书通常基于X.509。服务器请求客户端公钥。客户端有证书即双向身份认证,没证书时随机生成公钥。

    • Client Key Exchange

      如果服务端需要对客户端进行验证,在客户端收到服务端的 Server Hello 消息之后,首先需要向服务端发送客户端的证书,让服务端来验证客户端的合法性,

    • Certificate Verify

      客户端需要对服务端的证书进行检查,如果证书不可信,就会向访问者显示一个警告,由其选择是否还要继续通信。如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥。然后,向服务器发送下面三项信息:

      • 一个随机数。该随机数用服务器公钥加密,防止被窃听,称为 PreMaster Key

      • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送

      • 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的 hash 值,用来供服务器校验。

    • ChangeCipher Spec

      一个独立的协议,体现在数据包中就是一个字节的数据,用于告知服务端,客户端已经切换到之前协商好的加密套件(Cipher Suite)的状态,准备使用之前协商好的加密套件加密数据并传输了。

  4. 服务器最后的回应

    服务端在接收到客户端传过来的 PreMaster 加密数据之后,使用私钥对这段加密数据进行解密,并对数据进行验证,也会使用跟客户端同样的方式生成 Session Secret,一切准备好之后,会给客户端发送一个 ChangeCipherSpec,告知客户端已经切换到协商过的加密套件状态,准备使用加密套件和 Session Secret 加密数据了。之后,服务端也会使用 Session Secret 加密一段 Finish 消息发送给客户端,以验证之前通过握手建立起来的加解密通道是否成功。

  5. 根据之前的握手信息,如果客户端和服务端都能对 Finish 信息进行正常加解密且消息正确的被验证,则说明握手通道已经建立成功,接下来,双方可以使用上面产生的 Session Secret 对数据进行加密传输了。

TLS

TLS包含三个基本阶段:

  1. 对等协商支持的密钥算法
  2. 基于非对称密钥的信息传输加密和身份认证、基于 PKI 证书的身份认证
  3. 基于对称密钥的数据传输保密

TLS Alert Protocol

TLS 告警协议。允许乙方向另一方报告异常情况。Close_notify 警示用来指示发送方已经发送了所有要在该连接上发送的数据。

TLS Record Protocol

由切割、压缩、计算 HMAC 值、加密、封装构成。

TLS VPN 原理

其实现方式就是在防火墙后面放置一个 TLS 代理服务器。

  • 采用握手协议建立客户与服务器之间的安全通道,该协议包括双方的相互认证,交换密钥参数。
  • 采用告警协议向对端指示其安全错误。
  • 采用改变密码规格协议告知改变密码参数。
  • 采用记录协议封装以上三种协议或应用层数据。

用户与服务器之间的安全通信建立过程:

  • 用户首先要在浏览器上输入一个URL
  • 该连接请求将被 TLS 代理服务器取得
  • TLS 服务器对用户进行身份验证
  • TLS 代理服务器提供用户与各种不同应用服务器之间的连接

应用在 HTTP 上,HTTPS 与 HTTP 区别:

# VPN

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×