22.IPsec封装原理和实现1
IPSec体系架构
IPSec不是一个单独的协议,IPSec VPN 体 系 结 构 主 要 由 AH ( Authentication Header ) 、 ESP(Encapsulating Security Payload) 和IKE(Internet Key Exchange)协议套件组成。通过AH和ESP这两个安全协议来实现IP数据报文的安全传输; 通过IKE协议提供密钥协商,建立和维护安全联盟SA等服务。
SA(Security Association) 安全联盟:
定义了IPSec通信对等体间将使用的数据封装模式、 认证和加密算法、 秘钥等参数。 SA是单向的, 两个对等体之间的双向通信, 至少需要两个SA。 如果两个对等体希望同时 使用AH和ESP安全协议来进行通信, 则对等体针对每一种安全协议都需要协商一对SA。 SA由一个三元组来唯一标识, 这个三元组包括安全参数索引SPI(Security Parameter Index) 、目的IP地址、 安全协议(AH或ESP) 。
建立SA的方式有以下两种:
- 手工方式:安全联盟所需的全部信息都必须手工配置。 手工方式建立安全联盟比较 复杂, 但优点是可以不依赖IKE而单独实现IPSec功能。 当对等体设备数量较少时, 或是在 小型静态环境中, 手工配置SA是可行的。
- 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算法,并不是真正的在网络中交换密钥,而是通过交换一些参数,独自计 算密钥,而两端结果正好相同。如下图所示:
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建立的过程:
- 感兴趣的流通过
- IKE的SA协商开始,协商如何保护管理连接
- 运行DH算法协商出IKE的共享密钥
- 在安全的管理连接上执行设备验证
- IPSEC的SA协商开始:协商参数和密钥信息来保护数据连接(重新生成一个共享密 钥)
- 数据连接建立,加密传输数据
- 管理和数据连接将会到期,并重新构建
IPSec VPN配置
管理连接建立要考虑的问题:
- 设备验证是如何执行的
- 使用哪种加密算法
- 使用哪种散列算法
- 使用哪种DH密钥组
- 连接的生存周期
数据连接要考虑的问题:
- 使用哪种安全协议
- 对于ESP,使用哪种加密算法和/或散列算法
- 对于AH,使用哪种散列算法
- 隧道模式还是传输模式
- 数据连接的生存周期
配置IPSec VPN的步骤如下:
- 配置网络可达。首先需要检查报文发送方和接收方之间的网络层可达性, 确保双方只有 建立IPSec VPN隧道才能进行IPSec通信。
- 配置ACL识别兴趣流。第二步是定义数据流。 因为部分流量无需满足完整性和机密性要 求,所以需要对流量进行过滤, 选择出需要进行IPSec处理的兴趣流。 可以通过配置ACL来 定义和区分不同的数据流。
- 创建IPSec安全提议。 IPSec提议定义了保护数据流所用的安全协议、 认证算法、 加密 算法和封装模式。 安全协议包括AH和ESP, 两者可以单独使用或一起使用。 AH支持MD5 和SHA-1认证算 法; ESP支持两种认证算法( MD5和SHA-1) 和三种加密算法(DES、 3DES和AES) 。 为了能够正常传输数据流, 安全隧道两端的对等体必须使用相同的安全协议、 认证算法、 加密算法和封装模式。 如果要在两个安全网关之间建立IPSec隧道, 建议将IPSec封装模式 设置为隧道模式, 以便隐藏通信使用的实际源IP地址和目的IP地址。
- 创建IPSec安全策略。 IPSec策略中会应用IPSec提议中定义的安全协议、 认证算法、 加 密算法和封装模式。 每一个IPSec安全策略都使用唯一的名称和序号来标识。 IPSec策略可 分成两类:手工建立SA的策略和IKE协商建立SA的策略。
- 在一个接口上应用IPSec安全策略。
具体配置样例:
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。数字签名的验证过程如下图所示:
公钥基础结构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私钥签名的散列值。
使用证书认证过程:
- Alice首先请求根证书,即CA证书
- CA服务器将自己的根证书回复给alice
- alice产生一个证书请求,其中包括Alice的身份信息和公钥。Alice用CA根证书中 的CA公钥签名此证书请求
- CA服务器获得证书请求,验证Alice身份,并为Alice产生一个数字证书,将其身份 与公钥绑定。这个身份证书由CA签名,提供了Alice的身份与CA身份之间的绑定。
- CA服务器向Alice颁发证书
- 当Alice获取证书,使用证书,将其呈递给Bob以传达信任
- Bob将验证此数字签名,以确认Alice的证书,随后便对Alice的公钥建立信任。
SSL协议结构
SSL是一个分层协议,在最底层的是SSL记录协议。记录协议主要是一个封装协议,用于传 输各种高层协议和应用数据。记录协议由4个上层客户端协议组成:握手协议、报警协议、 修改密码规范协议和应用数据协议。
SSL 连接建立过程:
1、建立安全能力,包含协议版本,会话ID,加密套件列表、压缩方法以及初始随机数
2、服务器发送证书、密钥交换和请求证书以及服务信息结束消息
3、客户端发送证书(如果要求),客户端发送密钥交换,客户端发送证书验证消息
4、确认加密算法和密钥并完成握手协议
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验证效果好
- 原文作者:老鱼干🦈
- 原文链接://www.tinyfish.top:80/post/network/22.IPsec%E5%B0%81%E8%A3%85%E5%8E%9F%E7%90%86%E5%92%8C%E5%AE%9E%E7%8E%B02/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。