IPSec体系架构

IPSec不是一个单独的协议,IPSec VPN 体 系 结 构 主 要 由 AH ( Authentication Header ) 、 ESP(Encapsulating Security Payload) 和IKE(Internet Key Exchange)协议套件组成。通过AH和ESP这两个安全协议来实现IP数据报文的安全传输; 通过IKE协议提供密钥协商,建立和维护安全联盟SA等服务。

image.png

SA(Security Association) 安全联盟:

定义了IPSec通信对等体间将使用的数据封装模式、 认证和加密算法、 秘钥等参数。 SA是单向的, 两个对等体之间的双向通信, 至少需要两个SA。 如果两个对等体希望同时 使用AH和ESP安全协议来进行通信, 则对等体针对每一种安全协议都需要协商一对SA。 SA由一个三元组来唯一标识, 这个三元组包括安全参数索引SPI(Security Parameter Index) 、目的IP地址、 安全协议(AH或ESP) 。

建立SA的方式有以下两种:

  1. 手工方式:安全联盟所需的全部信息都必须手工配置。 手工方式建立安全联盟比较 复杂, 但优点是可以不依赖IKE而单独实现IPSec功能。 当对等体设备数量较少时, 或是在 小型静态环境中, 手工配置SA是可行的。
  2. IKE动态协商方式:只需要通信对等体间配置好IKE协商参数, 由IKE自动协商来创建 和维护SA。 动态协商方式建立安全联盟相对简单些。 对于中、 大型的动态网络环境中, 推荐使用IKE协商建立SA。

使用安全联盟(SA)是为了解决以下问题:

  • 如何保护通信数据
  • 保护什么通信数据
  • 由谁实行保护

建立SA是其他IPsec服务的前提,SA定义了通信双方保护一定数据流量的策略。一个SA通 常包含以下的安全参数:

  • 认证/加密算法,密钥长度及其他的参数(如何保护)
  • 认证和加密所需要的密钥
  • 哪些数据要使用到该SA(保护什么)
  • IPsec的封装协议和模式(由谁执行)

IKE(因特网密钥交换协议)

IKE属于一种混合型协议,由Internet安全关联和密钥管理协议(ISAKMP)和两种密钥 交换协议OAKLEY与SKEME组成。IKE创建在由ISAKMP定义的框架上,沿用了OAKLEY的 密钥交换模式以及SKEME的共享和密钥更新技术,还定义了它自己的两种密钥交换方式: 主模式和积极模式。使用UDP 500端口工作。主要作用如下:

  • 在IPsec网络中用于密钥管理
  • 为IPSec提供了自动协商交换密钥、建立安全联盟的服务
  • 通过数据交换来计算密钥

IKE的精髓就是DH算法,并不是真正的在网络中交换密钥,而是通过交换一些参数,独自计 算密钥,而两端结果正好相同。如下图所示:

image.png

DH算法原理:

1、通信双方协商用同一个大素数p和素数的原根g

2、发送方选择一个大随机整数X(A),计算 Y(A)= g^x mod p,发送Y(A)给接收者;

3、接收方选择一个大随机整数X(B),计算 Y(B) = g^y mod p,发送Y(B)给发送方;

4、确定最终密钥。发送方密钥为k1 = Y(B)^X(A) mod p,接收方密钥为k2=Y(A)^X(B) mod p。K1=K2,所以其做为共享密钥来使用。 其他人可以知道p、 g、 Y(A)和Y(B), 但是他们不能计算出密钥,除非他们能恢复X(A)和 X(B)。

缺点及解决方法:

缺点:不能抵御中间人攻击。

解决方法:使用认证的方法。

设备验证:

由于中间人的攻击,两端的路由器要进行设备验证。设备验证的方法一般有以下3种:

  • 预共享对称密钥
  • 预共享非对称密钥
  • 数字证书

一般都会采用预共享对称密钥的方法,把自己的身份信息,如:IP地址、主机名等,同共 享密钥进行HASH运算。

IPSec工作过程

IPSec VPN分为两个协商阶段,其实也是两个连接建立的阶段:

  • 管理连接:IKE的SA的协商,分为主模式(Main mode)和积极模式 (Aggressive mode)两种。主模式需要交互6个消息,而野蛮模式只需要交互3个消息;主模式协商比野蛮模式协商更严谨、更安全。第一个阶段IKE设置,有三个任务 需要完成:

    ​ 协商一系列算法和参数;(这些算法和参数用于保护隧道建立 过程中的数据)

    ​ 必须计算出两边使用的加密KEY值;(DH算法)

    ​ 对等体的验证,如何才能知道对端就是我要与之通信的对端。 (设备验证)

  • 数据连接:IPSEC的SA的协商 ,使用快速(Quick mode)模式。协商IPSec SA使用的安全参数,创建IPSec SA(SA可以加密两个对等体之间的数据,这才是真 正的需要加密的用户数据),使用AH或ESP来加密IP数据流。至此IPSec VPN隧道才 真正建立起来。

总结如下:

  • 第一阶段作用:对等体之间彼此验证对方,并协商出IKE SA,保护第二阶段中 IPSec SA协商过程;
  • 第二阶段作用:协商IPSec单向SA,为保护IP数据流而创建;
  • IKE的SA成功建立与否决定了IPSEC的SA是否能够成功建立

站点到站点的IPSec VPN建立的过程:

  1. 感兴趣的流通过
  2. IKE的SA协商开始,协商如何保护管理连接
  3. 运行DH算法协商出IKE的共享密钥
  4. 在安全的管理连接上执行设备验证
  5. IPSEC的SA协商开始:协商参数和密钥信息来保护数据连接(重新生成一个共享密 钥)
  6. 数据连接建立,加密传输数据
  7. 管理和数据连接将会到期,并重新构建

IPSec VPN配置

管理连接建立要考虑的问题:

  • 设备验证是如何执行的
  • 使用哪种加密算法
  • 使用哪种散列算法
  • 使用哪种DH密钥组
  • 连接的生存周期

数据连接要考虑的问题:

  • 使用哪种安全协议
  • 对于ESP,使用哪种加密算法和/或散列算法
  • 对于AH,使用哪种散列算法
  • 隧道模式还是传输模式
  • 数据连接的生存周期

配置IPSec VPN的步骤如下:

  1. 配置网络可达。首先需要检查报文发送方和接收方之间的网络层可达性, 确保双方只有 建立IPSec VPN隧道才能进行IPSec通信。
  2. 配置ACL识别兴趣流。第二步是定义数据流。 因为部分流量无需满足完整性和机密性要 求,所以需要对流量进行过滤, 选择出需要进行IPSec处理的兴趣流。 可以通过配置ACL来 定义和区分不同的数据流。
  3. 创建IPSec安全提议。 IPSec提议定义了保护数据流所用的安全协议、 认证算法、 加密 算法和封装模式。 安全协议包括AH和ESP, 两者可以单独使用或一起使用。 AH支持MD5 和SHA-1认证算 法; ESP支持两种认证算法( MD5和SHA-1) 和三种加密算法(DES、 3DES和AES) 。 为了能够正常传输数据流, 安全隧道两端的对等体必须使用相同的安全协议、 认证算法、 加密算法和封装模式。 如果要在两个安全网关之间建立IPSec隧道, 建议将IPSec封装模式 设置为隧道模式, 以便隐藏通信使用的实际源IP地址和目的IP地址。
  4. 创建IPSec安全策略。 IPSec策略中会应用IPSec提议中定义的安全协议、 认证算法、 加 密算法和封装模式。 每一个IPSec安全策略都使用唯一的名称和序号来标识。 IPSec策略可 分成两类:手工建立SA的策略和IKE协商建立SA的策略。
  5. 在一个接口上应用IPSec安全策略。

具体配置样例:

image.png

SSL协议

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层 对网络连接进行加密。

SSL和TLS的历史:

  • 1990年,Netscape公司提出SSL,使得通信在WWW的环境下能够安全进行。
  • 1994年,Netscape公司发布了SSL v2,SSL越来越流行并成为一个真正的标准。
  • 1995年,Netscape公司发布SSL V3版本
  • 1996年,Internet工程任务组IETF建立了传输层安全工作组,致力于SSL协议标准化
  • 1999年,标准协议TLS作为RFC 2246被公布。总体上和SSL V3类似
  • 现今TLS有两个新变体是无线TLS(WTLS)和数据报TLS(DTLS)

SSL VPN的工作原理:

1、SSL VPN用处

  • SSL VPN主要提供基于Web应用程序的安全访问
  • SSL VPN操作在OSI的会话层
  • Cisco将SSL VPN称为Web VPN

2、SSL VPN客户端模式:

  • 无客户端:用户只是借助Web浏览器即可实现登录访问,但仅限于可以依赖浏 览器的流量
  • 瘦客户端:用户通过SSL下载Java或Active软件以实现部分非Web流量的传输
  • 胖客户端:用户通过SSL动态下载客户端软件,类似于网络层VPN

3、SSL VPN的验证方式:数字证书和用户名密码

4、SSL VPN的加密:通过SSL协议实现

5、SSL VPN的内容控制:根据不同的用户来开放不同的应用程序从而对用户的访问进行控 制

数字签名:

数字签名是指使用发送者的私钥加密消息散列值行为,其输出结果即被称为数字签名。 当接收者收到带有相应签名的消息时需要进行两步运算:使用发送者的公钥解密收到的签名 以获得散列值,再计算收到消息的散列值。对比两次计算的输出结果,若结果相同,那么接收者就能证实此签名是可信的。常用的数字签名算法包括基于MD5和SHA-1的RSA及基于 SHA-1的DSS。数字签名的验证过程如下图所示:

image.png

公钥基础结构PKI(Public Key Infrastructure)

公钥基础设施(PKI)是一个利用非对称加密算法原理和技术实现并提供安全服务的具有 通用性的技术规范和标准。是管理非对称加密算法的密钥和确认信息。整合数字证书、公钥 加密技术和CA的系统。其结合了软件、加密技术和组织需要进行非对称加密算法的服务。 PKI技术是信息安全技术的核心。也是电子商务的关键和基础技术。

  • PKI允许用户相互验证各自使用的、由认证中心颁发的数字证书

  • X.509:关于PKI的ITU-T标准,定义了公钥证书的标准格式

  • 公钥基础结构X.509(PKIX):IETF工作组,定义了数字证书的用途

  • 公钥加密标准(PKCS):由RSA实验室设计并公布的一组公钥加密标准。PKCS 是PKI的加密基础。常见的几个标准如下:

    ​ PKCS1定义了RSA加密标准

    ​ PKCS7定义了加密消息语法标准,指定了在PKI下对消息的签 名和加密。

    ​ PKCS10定义了证书请求标准,指定了发往认证中心的消息的 格式,此消息用于请求带有密钥对的证书。

数字证书:

数字证书实质上是用户身份与其公钥的绑定。数字证书由第三方实体即认证中心 (CA,certification authority)颁发,确保证书的可信性和真实性。CA负责验证用户身 份、颁发证书、吊销证书和发布CRL。主要内容如下:

  • 签名算法ID:指定签名算法(RSA或者DSS)
  • 颁发者(CA)的X.509名称:CA服务器的身份
    有效期:指定了证书的寿命
  • 用户名称:包括带有X.509目录格式的用户身份。
  • 用户公钥:包括与用户身份绑定的用户公钥。
  • 扩展域:用户电子邮件地址或FQDN、证书吊销列表
  • CA数字签名:CA服务器用CA私钥签名的散列值。

image.png

使用证书认证过程:

  1. Alice首先请求根证书,即CA证书
  2. CA服务器将自己的根证书回复给alice
  3. alice产生一个证书请求,其中包括Alice的身份信息和公钥。Alice用CA根证书中 的CA公钥签名此证书请求
  4. CA服务器获得证书请求,验证Alice身份,并为Alice产生一个数字证书,将其身份 与公钥绑定。这个身份证书由CA签名,提供了Alice的身份与CA身份之间的绑定。
  5. CA服务器向Alice颁发证书
  6. 当Alice获取证书,使用证书,将其呈递给Bob以传达信任
  7. Bob将验证此数字签名,以确认Alice的证书,随后便对Alice的公钥建立信任。

SSL协议结构

SSL是一个分层协议,在最底层的是SSL记录协议。记录协议主要是一个封装协议,用于传 输各种高层协议和应用数据。记录协议由4个上层客户端协议组成:握手协议、报警协议、 修改密码规范协议和应用数据协议。

image.png

SSL 连接建立过程:

1、建立安全能力,包含协议版本,会话ID,加密套件列表、压缩方法以及初始随机数

2、服务器发送证书、密钥交换和请求证书以及服务信息结束消息

3、客户端发送证书(如果要求),客户端发送密钥交换,客户端发送证书验证消息

4、确认加密算法和密钥并完成握手协议

image.png

1、Hello阶段:

客户端和服务器建立一个逻辑连接并协商SSL会话基本的安全属性,如SSL协议版本和密码组。

客户端发起Client Hello消息:

  • 协议版本
  • 客户端随机数:用于计算主密钥
  • 会话ID(可选)
  • 客户端Cipher Suite:一个客户端支持的加密套件列表
  • 压缩方法

服务器回应Server Hello消息,产生服务器随机数。

总之,经过Hello阶段后,客户端和服务器协商了安全参数,还产生了随后参与生成主密钥 的必需品(客户端随机数和服务器随机数)。

2、验证和秘钥交换:

在这一阶段,客户端和服务器需要达成一个用于验证的共享密钥,称为预主密钥,这个预主 密钥随后会变换成主密钥。

SSL v3和TLS支持的主要密钥交换方法:

  • RSA:最常用的验证和密钥交换方法。在这个模式下,客户端产生一个随机密钥 作为预主密钥,然后将其用服务器的RSA公钥加密,附在Client Key Exchange消息 中发送给服务器。
  • Diffie-Hellman:客户端和服务器执行DH交换,并将计算出的DH公共密钥作为 预主密钥。

如果需要验证客户端,服务器将发送Certificate Request消息。客户端回应两个消息:

Client Certificate和Certificate Verify。前者包含客户端证书,后者完成客户端验证工作。

3、密钥导出

主密钥从不交换,但也不是由客户端和服务器各自独立产生的。由主密钥产生的一些密钥用 于消息加密和完整性验证。SSL客户端和服务器通过以下先前交换的数据来产生主密钥。

  • 预主密钥
  • 客户端随机数和服务器随机数

产生以下密钥:

  • 客户端写密钥
  • 服务器写密钥
  • 客户端写MAC密钥
  • 服务器写MAC密钥

4、完成握手

为了表示已准备好,客户端和服务器发送ChangeCipherSpec消息向对方表达已做好准备 使用协商好的安全算法和密钥。

最后是Finished消息,此消息是由协商好的新安全算法和密钥保护的。主要是整个握手消息 和主密钥的一个散列值,其消息的确认表明验证和密钥交换过程成功了。

这个阶段完成后,SSL客户端和服务器开始传送应用数据。

SSL VPN与IPSec VPN比较:

SSL VPN的优缺点:

  • SSL VPN的无客户端、瘦客户端方式可以做到用户端无需安装任何软件
  • 可以从任何地方安全的访问公司内部服务器
  • 支持多种类型的浏览器
  • 用户不需要进行特殊的培训
  • SSL VPN可以和地址转换设备一起使用
  • 可以对各种应用程序进行更加细致的控制
  • SSL VPN为应用层内容加密,容易受到拒绝服务攻击
  • SSL VPN对数据的验证功能,没有IPSec VPN使用HMAC验证效果好
    image.png