ipsec在哪,ipsec功能

下午好,我的网工朋友。IPSec算是比较复杂的协议之一了,对于很多朋友来说,大概是“熟悉又陌生”的。熟悉是IPSec这个技术应该听过很多次了,不管是在书中还是大

互联网工作者大家好。

IPSec 可能是很多朋友“熟悉又熟悉”的协议之一。

您可能在书籍和与专家的对话中多次听说过IPSec 技术。 IPSec据说可以满足这一要求并保护数据安全。

如果您不熟悉IPSec,您就不会确切地知道它是如何工作的,也不知道它为何在工作场所如此广泛使用。

今天我们将从各个角度对IPSec进行分析和整理,从基本原理到框架、加密算法、封装协议。本文还包括一些有趣的图解示例,以便更好地理解。

今日文章查看权限:《IPSec:新一代因特网安全标准.pdf》

6ec12275e5f6473f8b0177f5468124f8~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=wBpKkpkynErzxlK4XzmX5yTQXuo%3D

一本与IPSec相关的伟大经典书籍。我找到了一本完整的PDF 书,可以传输和保存。请注意私人消息和“IPSec”以获取有限的时间资源。

01 IPSec 基本原理

IPSec 是一种标准安全技术,通过将预定义标头插入数据包来保护OSI 上层协议数据。

IPSec 提供网络层安全性,因为它主要用于保护网络层(IP) 数据。

通过三种方式保护您的VPN 流量:

隐私:数据隐私意味着加密您的数据。这样,即使第三方能够捕获加密数据,他们也无法将其恢复为明文。完整性:完整性保证数据在传输过程中不被第三方修改。源认证:源认证是指对数据包的来源进行认证,以确保发送该数据包的来源是合法的。87065721ea264057825ccd4cc5a0a6e8~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=srHlgx2d4DnHgi5BSCVQGk2pLkI%3D

如上图所示,IPSec技术在原始IP报头和IP净荷之间插入一个IPSec报头,从而对原始IP净荷进行加密,同时对IPSec报头和IP净荷进行加密。原始IP负载可以被加密和验证以确保数据完整性。

81296cfee07c45b39d01a49ce32d6552~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=iZuWgoX5nCIt4DkxjoC42IW3thk%3D

02 IPSec 框架

一些传统安全技术(例如HTTPS)和无线安全技术(例如WEP/WPA)经常使用某些固定加密和哈希函数。

这种做法显然是一场赌博。这是因为,如果有一天该密码算法暴露出严重漏洞,那么使用该密码算法或哈希函数的安全技术将不可避免地被淘汰。

为了避免悲惨的树尾情况,IPSec 没有定义特定的加密和散列函数。

IPSec的做法是提供一个框架结构,但每个IPSec会话使用的具体算法是通过协商确定的。

也就是说,如果你认为3DES算法提供的168位加密强度已经足够,你也可以暂时使用这个协议来加密你的数据。

然而,只要3DES出现严重漏洞或者更好的加密协议出现,加密协议就会立即改变,这样IPSec VPN就可以始终使用最新、最好的协议进行加密。

下图是IPSec框架的示意图。

该图表明,不仅哈希函数的加密算法,而且封装协议和模式、密钥生存期等都可以通过协商确定。两个IPSec对等体之间协商的协议称为以下技术:介绍了IPSec框架的主线,并详细介绍了这些技术的特点和工作原理。

d40e701fa1a34339aae094faa3b19612~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=1F32mA5nykG2%2BbTfqcACPB%2BkZ60%3D

03 散列函数

哈希函数也称为HASH函数,主流的哈希算法是MD5和SHA-1。

哈希函数的主要任务是验证数据完整性。

哈希函数计算的结果称为哈希值,该哈希值通常称为数据的指纹。

671b131d0e3c4c30a64ae05e640de49a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=BwMbNBur%2FBJz1Yirs7Lwux%2FYVJA%3D

27d6128cfb5146498acfe0e1d7c3238b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=R9%2Bg4qPakSKbHb0hECWkdXBwnjE%3D

如上图所示,文件内容为111。经过MD5和SHA1算法后,会得到不同的哈希值。

01 哈希函数的特点

1.固定尺寸

哈希函数可以接受任意大小的数据并输出固定大小的哈希值。

以MD5哈希算法为例,无论原始数据有多大,MD5计算出的总列值都是128位,但SHA-1的输出长度是160位。

2.雪崩效应

即使原始数据改变了一位,计算出的哈希值也会发生显着变化。

3.单行道

只能从原始数据中计算出一个哈希值,而无法从哈希值中恢复出原始数据的哪怕一个比特。

4、避免纠纷

由于几乎不可能找到与当前数据具有相同哈希值的另一个数据,因此可以使用哈希函数来保证数据的唯一性。

尽管哈希函数非常适合检查数据完整性,但它们很容易受到中间人攻击。合法和非法用户都可以对提交的信息进行哈希函数计算,得到哈希值。

因此,可以将文件和哈希值打包发送给接收者,接收者也可以通过哈希函数验证数据的完整性。

虽然哈希函数可以验证数据的完整性,但它们存在中间人攻击问题,因为它们无法保证数据来自可信源(不提供源身份验证)。

为了弥补此漏洞,可以使用一种称为HMAC 密钥哈希消息身份验证代码的技术。该技术不仅提供完整性验证,还完成源认证的任务。

04 加密算法

顾名思义,加密就是将明文数据转换为密文数据。

这样一来,即使第三方截获了密文数据,也无法将其恢复为明文。解密过程则相反。合法接收者使用正确的解密算法和密钥将密文恢复为明文。

加密算法可分为两类:

对称密钥算法非对称密钥算法

01 对称密钥算法

c291d9cb12644b629426a205ce7323ed~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=SiyIt%2B3FV9onlvsqds5OJqsC3uE%3D

上图显示了对称密钥算法的工作原理。从这张图中我们可以看到一个明显的特点,加密方和解密方都使用相同的密钥和算法进行加密和解密。

因此,使用相同的密钥和算法进行加密和解密操作的算法称为对称密钥算法。

对称密钥算法具有以下特点:

优点:快速、安全、紧凑

坏处:

以明文形式发送共享密钥很容易出现劫持和窃听问题。随着参与者数量的增加,密钥的数量迅速增加((n x (n-1)) /2)。密钥管理和存储是一个大问题,并且不支持数字签名和不可否认性。对称密钥算法的主流协议:

DES、3DES、AES、RC4

02 非对称密钥算法加密

在使用非对称密钥技术之前,所有参与者,无论是用户还是路由器等网络设备,都必须事先使用非对称加密算法(例如RSA)生成密钥对。

非对称加密需要四个密钥。每个通信方都准备一对公钥和私钥。

公钥是公开的,由信息接收方提供给信息发送方。公钥用于加密信息。

私钥由消息的接收者持有并用于解密。由于公钥是公开的,因此不存在保密问题。

换句话说,非对称加密不存在密钥分发问题。

03 案例分析:非对称加解密过程

假设小明想邀请小红来玩。

1、小明确定了他的私钥mPrivateKey和公钥mPublicKey。私钥自己保管,将公钥mPublicKey发送给小红。

2.小红确定了他的私钥hPrivateKey和公钥hPublicKey。私钥自己保管好,将公钥hPublicKey发给小明。

3. 小明发送消息“周六上午10 点在T1 楼下见”,并使用小红的公钥hPublicKey 对其进行加密。

4、小红收到信息后,使用私钥hPrivateKey对信息进行解密。然后回复“收到了,别迟到”,并用小明的公钥mPublicKey加密。

5、小明收到信息后,使用私钥mPrivateKey对信息进行解密。

以上过程就是一个完整的请求和响应。

通过这个例子,我们来梳理一下信息传输中非对称加密和解密的过程。

1.消息接收者准备公钥和私钥

2. 接收者持有私钥并向消息发送者透露公钥。

3. 消息发送者使用接收者的公钥对消息进行加密。

4. 消息接收者使用他的私钥解密消息。

使用私钥加密的数据只能使用公钥解密,使用公钥加密的数据也只能使用私钥解密。由于加密和解密使用不同的密钥,因此称为非对称加密。

04非对称密钥算法实现数字签名

非对称密钥算法的第二个用途是实现数字签名。

签名的目的无非是确认特定文件。

例如,贷款。

张三欠李四先生1万元,债务人张三在借款文件上签字确认。签名的主要作用是让张三确认贷款,并且以后不能拒绝贷款(不可否认)。

最终谁会读到这个签名?显然,无名氏没有必要反复验证自己的签名。

通常,发生纠纷后,比如张三否认、拒绝付款,李四就会拿出贷款文件,交给权威的第三方,比如法官,以确认贷款文件上的签名。可以确认是正确的。确实,毫无疑问,张三欠李希钱的既定事实是无法否认的。

让我们看看数字签名是如何工作的。

步骤1:通过哈希函数计算重要的明文信息,得到哈希值(明文)。

步骤2:“用户1”(发起者)使用他的私钥对步骤1中计算出的明文哈希值进行加密。加密后的哈希值称为数字签名(密文)。

步骤3:将关键明文信息和数字签名打包在一起发送给“用户2”(接收者)。

第四步:“用户2”从打包文件中提取敏感明文信息。

步骤5:“用户2”使用与“用户1”相同的哈希函数计算步骤4中提取的明文重要信息的哈希值,并将结果设置为“哈希值1(明文)”。

步骤6:“用户2”从打包文件中提取数字签名(密文)。

步骤7:“用户2”使用预先获取的“用户1”的公钥对步骤6中提取的密文的数字签名进行解密,得到明文的“哈希值2”。

步骤8:比较“哈希值1”和“哈希值2”是否相等。如果相等,则数字签名验证成功。

这可能有点粗鲁,但我想你读完就会明白。

05 案例:数字签名

1.香港有两把钥匙,一把公钥,一把私钥。

cb29f5d7da7c4c49a64abaa060a1e297~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=YHMwDwJIL93z8svgGl6HfKb0Ois%3D

2. Hong Hong把他的公钥给了他的朋友Patty ——、Doug和Susan ——。

f9f55eec5a714c3fb3e1ba88dbb621aa~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=xIrLz3l%2FeHu3CUNTAtvLm%2BWnpmI%3D

3.苏珊想给红红写一封密信。她写完后,用她的红色公钥对其进行加密以保密。

375dee3cb0334142b498a203cd28e392~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=KeDeeiPnWMcTXvOgO0kTB9AXm7g%3D

4、红红收到信件后,用自己的私钥解密并查看信件内容。这里必须强调的是,只要红红的私钥不被泄露,这封信就是安全的,即使落入他人手中也无法解密。

8e174ac6b8cb4f88896117722bb2f9bc~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=MhtBp9Ars2IrSW6LzAfdbd7fSvk%3D

5. 红红给苏珊回信并决定使用“数字签名”。他写完后,首先使用哈希函数生成这封信的哈希值(摘要)。

bee9cb52fa824862afaca54e0b8bc6db~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=NsFrleOuhVxc6he7cs9KoZo7hxA%3D

6. 然后红红使用私钥对哈希值进行加密(摘要)并生成“数字签名”(签名)。

178db6a1460749dc91c423e7e02c9956~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=N6OOfTr10iQNBwICqrmoImJyIDQ%3D

7. 红红在信的底部加上了这个签名并发送给苏珊。

9d2938521c7047bd9901dac3e7ac0be4~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=UP0UZCAZ6xUcCUopsDc0QOPGnDs%3D

8、苏珊收到信后,去掉“数字签名”(signature),用红红的公钥解密,得到这封信的哈希值1(摘要1)。这就证明这封信确实是红红寄来的。

cle.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=%2FO%2FT%2FYvMUW1VIhWZnDjHec8mM1c%3D” alt=”a5be702500574b4d8fb6aa546e36e41f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=%2FO%2FT%2FYvMUW1VIhWZnDjHec8mM1c%3D” />
9. 苏珊再对信件本身使用Hash函数,将得到的散列值2(digest 2),与上一步得到的散列值1(digest 1)进行对比。如果两者一致,就证明这封信未被修改过。
5e68f8bd456b425f955a098c1dce4abc~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=CcLa7d07g81RjHXEl4PN29f5MIQ%3D
10. 复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了红红的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是红红的公钥。
因此,道格就可以冒充红红,用自己的私钥做成“数字签名”,写信给苏珊,让苏珊用假的红红公钥进行解密。
794018efd3c64498a0d8107dd63f9a92~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=t5fi2IfEmv%2Bw1ohD3HSdX8nswqU%3D
11. 后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于红红。
她想到了一个办法,要求红红去找“证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对红红的公钥和一些相关信息一起加密,生成“数字证书”(Digital Certificate)。
a438eeb828a3427384b7f324128cc735~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=RUkjAG5avvYPUJvjOgxHg3QCJtU%3D
12. 红红拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
40e7598b4a1b4ed69d859a90c3609c6c~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=5idXklBqEttcEws9HPBm4su4B8Y%3D
13. 苏珊收信后,用CA的公钥解开数字证书,就可以拿到红红真实的公钥了,然后就能证明“数字签名”是否真的是红红签的。
6b4bcfe9f10f43ec8e38296a9c964de3~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=UQM%2Br1wNyqavQObAQ7tvWMdixbA%3D
看到这,你就完全明白了吗?
非对称密钥算法有如下特点:
优点:更安全、不用担心交换的公钥被劫持、支持数字签名和不可否认性
缺点:
加密速度会很慢密文会变长非对称密钥算法的主流协议:
RSA (数字签名和数字证书的主流协议)
DH (IPSec 产生密钥资源的主要协议)
ECC (椭圆曲线算法)
由于上述缺点,与对称密钥算法一样,在一套安全解决方案中不可能单独使用非对称密钥算法。
那么我们应该如何利用对称和非对称密钥算法的优势来加密实际的数据呢?
下面来看一个巧妙的加密解决方案。
06巧妙的加密解决方案
对称密钥算法和非对称密钥算法,这两种算法都各有其优缺点。
对称密钥算法加密速度快,但是密钥数量过多不好管理,并且密钥分发不安全。非对称密钥算法密钥数量少,密钥分发方便并且不存在安全隐患,但是加密速度奇慢,不可能用于大流量数据的加密。
所以在实际使用加密算法的时候,一般会让两种算法共同工作,发挥各自优点。
下面是一个非常巧妙的联合对称和非对称算法的解决方案,这种解决问题的思路被大量运用到实际加密技术。
0d1eafa9f12d4ab8ae68bd17ad236079~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=0L2uFI20nUHyQpfujqaX%2FRhdStM%3D
步骤1:“用户一”(发起方)使用本地随机数产生器,产生用于对称密钥算法的随机密钥,用于加密数据。
步骤2:使用步骤1产生的随机密钥,对重要的明文信息通过对称密算法进行加密,并得到密文。
步骤3:“用户一”(发送方)需要预先获取“用户二”(接收方)的公钥,并且使用“用户二”的公钥对步骤1产生的随机密钥进行加密,得到加密的密钥包。
步骤4:对步骤2和步骤3产生的密文和密钥包一起发送给“用户二(接收方)。
步骤5:“用户二”首先提取出密钥包,并且使用自己的私钥对它进行解密,并得到明文的随机密钥。
步骤6:“用户二”提取出密文,并且使用步骤5解密得到的随机密钥进行解密,得到明文的重要信息。

05 封装协议

IP Sec有ESP和AH两种封装协议:
b63f8ace0bb841b8be75cf383cedc050~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=blY7EqZph5uqrtZXBxf453M5C1Q%3D
01ESP
ESP(Encapsulation Security Payload)的IP协议号为50,ESP能够为数据提供私密性(加密)、完整性和源认证3大方面的保护,并且能够抵御重放攻击(反复发送相同的包,接收方由于不断地解密消耗系统资源,实现拒绝服务攻击(DOS))。
ESP 只能保护IP负载数据,不对原始 IP 头部进行任何安全防护。
02AH
AH(Authentication Header) 的IP 协议号为 51,AH 只能够为数据提供完整性和源认证两方面的安全服务,并且抵御重放攻击。AH 并不能为数据提供私密性服务,也就是说不加密,所以在实际部署IPSe VPN 的时候很少使用AH,绝大部分IPSec VPN都会使用 ESP 进行封装。
AH不仅能保护IP负载数据,还能对原始 IP 头部进行验证。
当然 AH 不提供私密性服务,只是它不被广泛采用的其中一个原因,另外一个原因是AH协议封装的IPSec数据包不能穿越NAT。

06 封装模式

IPSec有如下两种数据封装模式:
传输模式(Transport mode)
隧道模式(Tunnel mode)
4a0abc84ec834f4298f8aa73c6297955~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=8BRjYK0OpE6cnuLCZCx%2BVAA4fGw%3D
01传输模式(Transport mode)
因为AH少使用所以封装模式示意图中我们都以ESP封装协议为例来进行介绍。
传输模式实现起来很简单,主要就是在原始 IP 头部和 IP 负载(TCP头部和应用层数据)之间插入一个ESP 头部。当然ESP 还会在最后追加上ESP尾部和ESP验证数据部分,并且对 IP负载和 ESP尾部进行加密和验证处理,但原始 IP 头部被完整地保留了下来。
02隧道模式(Tunnel mode)
隧道模式把原始 IP 数据包整个封装到了一个新的 IP 数据包中,并且在新 IP 头部和原始 IP 头部中间插入了ESP 头部,以此对整个原始IP 数据包进行了加密和验证处理。

07 密钥有效期

长期使用相同密钥来加密数据是不明智的,应该周期性地更新密钥,Cisco的IPSec VPN 用于加密实际数据的密钥,默认每一个小时 (3600秒)就要更新一次。
Cisco的IPSec VPN 虽然默认每小时更换一次密钥,但下一个小时使用的密钥是由当前这个小时使用的密钥,通过一系列的算法衍生得出的。也就是说这些密钥之间存在推演关系。
这样的密钥更新就不能叫做完美向前保密 PFS(Prfect Forward Secrecy)。
PFS 要求每一次密钥更新,都需要重新产生全新的密钥,和以前使用的密钥不存在任何衍生关系。
Cisco 的IPSec VPN一旦启用了 PFS 技术,就会在每一个小时结束的时候,展开一次全新的 DH 交换算法,产生全新的密钥用于下一个小时加密。

08 IKE(互联网密钥交换)协议

IPSec VPN需要预先协商加密协议、散列函数、封装协议、封装模式和密钥有效期等内容。具体执行协商任务的协议叫做互联网密交换协议 IKE。
IKE主要完成如下3个方面的任务:
对建立IPSec 的双方进行认证(要预先协商认证方式)。通过密钥交换,产生用于加密和 HMAC 的随机密钥。协商协议参数 (加密协议、散列函数、封装协议、封装模式和密有效期)。协商完成后的结果就叫做安全关联 SA,也可以说IKE 建立了安全关联SA。
一共有两种类型,一种叫做IKE SA,另一种叫做 IPSec SA。
IKE SA维护了安全防护 (加密协议、散列函数、认证方式、密钥有效期等)IKE 协议的细节。IPSec SA 则维护了安全防护实际用户流量 (通信点之间流量)的细节。5df23bbe35fc48e599a53bb5b4a7bd40~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=h%2BVwnyuJGXvCl0D49JYraOK7FKM%3D
SKEME 决定了IKE的密钥交换方式,IKE主要使用DH来实现密钥交换。Oakley 决定了IPSec 的框架设计,让IPSec 能够支持更多的协议。ISAKMP 是 IKE 的本质协议,它决定了 IKE 协商包的封装格式,交换过程和模式的切换。ISAKMP是IKE的核心协议,所以经常会把IKE与ISAKMP 这两个词语换着使用。例如,IKE SA 也经常被说成ISAKMP SA。
在配置 IPSec VPN 的时候,主要的配置内容也是ISAKMP。SKEME 和Okley 没有任何相关的配置内容。
如果一定要对IKE和ISAKMP进行区分的话,那么由于 SKEME 的存在,因此IKE 能够决定密钥交换的方式,但是ISAKMP只能够为密钥交换来交换数据包,但却不能决定密钥交换实现的方式。
IKE的2个阶段与3个模式:
b33c73f83402429f9197999ca5b51072~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717769518&x-signature=4lOd4ZaCTheiOS978OF3gDLczXc%3D
IKE协商分为两个不同的阶段:第一阶段和第二阶段。
第一阶段协商分别可以使用 6 个包交换的主模式或者3个包交换的主动模式来完成,第一阶段协商的主要目的就是对建立 IPSec 的双方进行认证,以确保只有合法的对等体 (peer) 才能够建立 IPSec VPN。协商得到的结果就是IKE SA。
第二阶段总是使用 3 个包交换的快速模式来完成,第二阶段的主要目的就是根据需要加密的实际流量(感兴趣流),来协商保护这些流量的策略。协商的结果就是IPSec SA。
整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83245.html

(0)
小条's avatar小条
上一篇 2024年5月31日 下午10:05
下一篇 2024年5月31日 下午10:12

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注