声明

本文仅发表在博客园,作者LightningStar。

简介[1]

IPSec(Internet 协议安全)是一个工业标准网络安全协议,工作在OSI模型的第三层,即网络层,为IP网络通信提供透明的安全服务,可使TCP/IP通信免遭窃听和篡改,可以有效抵御网络攻击,同时保持易用性。IPSec是一种端到端的安全模式,通信数据由发送方加密,接收方解密,网络中其他的节点和主机无需支持IPSec。

IPSec工作网络层,使其在单独使用时适于保护基于TCP或UDP的协议(如安全套接子层(SSL)就不能保护UDP层的通信流)。这就意味着,与传输层或更高层的协议相比,IPsec协议必须处理可靠性和分片的问题,这同时也增加了它的复杂性和处理开销。相对而言,SSL/TLS依靠更高层的TCP(OSI的第四层)来管理可靠性和分片。[2]

IPSec两个基本目标:

  • 保护IP数据包的安全性
  • 为抵御网络攻击,提供透明的安全服务

IPSec提供了两种安全机制:

  • 认证

    认证机制使得IP通信的数据接收方能够确认数据发送方的身份,检测数据在传输过程中是否经过了篡改。
  • 加密

    通过对数据加密保证数据的机密性,防止数据被窃听。

后文中介绍的AH协议定义了认证的应用方法,提供数据源认证和完整性保障;ESP协议定义了加密的应用方法,提供数据源加密和可选认证的应用方法,提供了可靠性保障。在实际进行IP通信时,可以根据需要同时使用两种或者选择使用其中的一种。

协议组

IPSec不是一个单独的协议,它包括:

  • 网络认证协议(AH, Authentication Header)

    认证头,为IP数据报提供无连接数据完整性、消息认证以及防重放攻击保护
  • 封装安全载荷(ESP, Encapsulating Security Payload)

    提供机密性、数据源认证、无连接完整性、放重放和有限的传输流(traffic-flow)机密性
  • 网络密钥交换(IKE, Internet Key Exchange)

    为AH、ESP操作所需的安全关联(Security Association, SA)提供算法、数据包和密钥参数
  • 以及一些用于网络认证和加密的算法。

报文格式

IPSec协议有两种封装模式:[3]

  • 传输模式(Transport Mode)

    AH或ESP被插入到IP头之后,但在所有传输层协议之前,或所有其他IPSec协议之前。用于两台主机之间的通讯,或者是一台主机和一个安全网关之间的通讯。在传输模式下,对报文进行加密和解密的两台设备本身必须是报文的原始发送者和最终接收者。

  • 隧道模式(Tunnel Mode)

    AH或ESP被插入到IP头之前,并另外生成一个新的IP头放到AH或ESP之前。通常,在两个安全网关(路由器)之间的数据流量,绝大部分都不是安全网关本身的通讯量,因此在安全网关之间一般不使用传输模式,而总是使用隧道模式。在一个安全网关被加密的报文,只有另一个安全网关能够解密。因此必须对IP报文进行隧道封装,即增加一个新的IP头,进行隧道封装后的IP报文被发送到另一个安全网关,才能够被解密。

协议类型 报文格式,图源[3:1]
AH协议
ESP协议
AH和ESP协议

认证头 AH[4]

认证头(Authentication Header,AH)被用来保证被传输分组的完整性和可靠性。此外,它还保护不受重放攻击。



图源文献[4:1]

  • 下一个头 next header:标识被传送数据所属的协议。
  • 载荷长度:AH的长度,单位为32bit。
  • 保留:为将来的应用保留(目前都置为0)。
  • 安全参数索引:与IP地址一同用来标识SA。
  • 序列号

    单调严格增加的序列号(对于发送的每个数据包递增1)以防止重放攻击。启用重放检测时,序列号永远不会重复使用,因为必须在尝试将序列号递增到其最大值之外重新识别新的SA。
  • Integrity Check Value 认证数据

    该字段可能会被padding,以适应IPV6中的8字节对齐或者IPV4中的4字节对齐。

封装安全载荷 ESP[4:2]

封装安全载荷(Encapsulating Security Payload,ESP)协议对分组提供了源可靠性、完整性和保密性的支持。与AH头不同的是,IP分组头部不被包括在内。



图源文献[4:3]

  • 安全参数索引

    用于标识具有相同IP地址和相同安全协议的不同SA。由SA的创建者定义。
  • 序列号

    单调递增的数值,用来防止重放攻击。
  • 载荷数据(variable)

    如果没使用ESP的加密功能,则载荷数据域的内容是“下一个头”所指示的数据;如果使用了ESP的加密功能,则使用加密载荷数据和ESP尾部数据所得的密文作为payload data.

    The protected contents of the original IP packet, including any data used to protect the contents (e.g. an Initialisation Vector for the cryptographic algorithm). The type of content that was protected is indicated by the Next Header field.
  • 填充

    某些块加密算法用此将数据填充至块的长度。
  • 填充长度

    以位为单位的填充数据的长度。
  • 下一个头

    标识载荷中封装的数据所属的协议。Type of the next header. The value is taken from the list of IP protocol numbers.
  • 认证数据

    又叫做完整性校验值(ICV)。包含了认证当前包所必须的数据。

网络密钥交换 Internet Key Exchange(IKE)[5]

IKE是在IPSec协议组中用于创建Security Association(SA)[6]的协议。IKE首先要进行身份认证,然后再进行Diffie-Hellman密钥交换(Diffie-Hellman key exchange[7]),建立起共享秘密(shared secret)[8],并通过共享秘密派生密钥。

通道建立过程[9]

IPsec通道建立过程分为两部分:

  • IKE阶段1

    这一阶段,会建立ISAKMP(Internet Security Association and Key Management Protocol)会话。在这个阶段,二者会协商加密方法、认证方法以及其他的一些安全参数。这些安全参数的集合就是SA(Security Association)。

  • IKE阶段2

    在这一阶段,用户就可以使用AH或者ESP协议来传输数据。这一阶段根据传输模式可以分为两种:Transport Mode和Tunnel Mode。现在又回到了文章最开始的报文格式的内容。

拓展阅读

网络安全之IPsec详解

参考文献


  1. 石瑞生. 大数据安全与隐私保护[M]. 北京邮电大学出版社, 2019.

  2. IPSec-wiki

  3. IPsec 互联网安全协议 W3C school

  4. IPSec-en-wiki

  5. Internet Key Exchange en-wiki

  6. Security Association en-wiki

  7. Diffie–Hellman key exchange

  8. Shared secret en-wiki

  9. IPsec (Internet Protocol Security)

网络安全协议之IPsec的更多相关文章

  1. IP层网络安全协议(IPSec)技术原理图解——转载图片

  2. IPSec协议框架

    文章目录 1. IPSec简介 1.1 起源 1.2 定义 1.3 受益 2. IPSec原理描述 2.1 IPSec协议框架 2.1.1 安全联盟 2.1.2 安全协议 报文头结构 2.1.3 封装 ...

  3. IPSec协议

    IPSec协议:IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. 传输模式和隧道模式:IPsec对数据进行加密的方式有两种:传输模 ...

  4. ipsec协议(转)

    from:http://lulu1101.blog.51cto.com/4455468/816875 ipsec协议 2012-03-25 23:40:28 标签:休闲 ipsec协议 职场 IPSe ...

  5. 通信技术以及5G和AI保障电网安全与网络安全

    摘 要:电网安全是电力的基础,随着智能电网的快速发展,越来越多的ICT信息通信技术被应用到电力网络.本文分析了历史上一些重大电网安全与网络安全事故,介绍了电网安全与网络安全.通信技术与电网安全的关系以 ...

  6. 浅析Internet上使用的安全协议

    Internet上使用的安全协议 网络安全是分层实现的,从应用层安全到数据链路层安全. 一.运输层安全协议:安全套接字SSL 1.1.简介 SSL 是安全套接层 (Secure Socket Laye ...

  7. 第四十九个知识点:描述在IPsec和TLS后的基本想法

    第四十九个知识点:描述在IPsec和TLS后的基本想法 网络安全协议(Internet Protocol Security,IPsec)和安全传输层协议(Transport Layer Securit ...

  8. 【转】SSL协议、SET协议、HTTPS简介

    一.SSL协议简介 SSL是Secure Socket Layer的缩写,中文名为安全套接层协议层.使用该协议后,您提交的所有数据会首先加密后,再提交到网易邮箱,从而可以有效防止黑客盗取您的用户名.密 ...

  9. 深入理解OAuth2.0协议

    1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店 ...

随机推荐

  1. (STAR-CCM+教程)001 软件安装以及界面介绍

    STAR-CCM+是西门子公司旗下产出的一款CFD软件,因其强大的多面体网格划分功能.简易的操作流程被广泛应用于工程计算以及科研工作中. 学习资源 个人在使用STAR-CCM+过程中,主要参考资料来源 ...

  2. 解决 Delegate IDE build/run actions to Maven 编译两次的问题

    起因:我的电脑炸了,吸取教训,以后重要的东西千万不要存在C盘,特别是我们 IT 行业的,代码和文档都是一点一点积累的经验.突然没了,总感觉少了点啥,平时我的代码都是放在D盘,但是很多文档放在C盘,导致 ...

  3. Dapr逐渐被点燃

    Dapr被点燃 Dapr的热度个人认为才刚刚热起来,9月份我写了Dapr + .NET Core实战一共10篇,从基础概念到简单的实战,但是有很多人感兴趣,具体表现在我个人维护的QQ群,人数从80人左 ...

  4. 从一个舒服的姿势插入 HttpClient 拦截器技能点

    马甲哥继续写一点大前端,阅读耗时5 minute,行文耗时5 Days 今天我们来了解一下如何拦截axios请求/响应? 这次我们举一反三,用一个最舒适的姿势插入这个技能点. axios是一个基于 p ...

  5. 字符串编码js第三方类库text-encoding

    GITHUB地址:https://github.com/BCode001/text-encoding

  6. 每日总结:charcter方法(2021.10.5)

    \t 在文中该处插入一个tab键 \b在文中该处插入一个后退键 \n 换行 \r  在文中该处回车 \f 在文中该处插入换页符 方法: isLetter()是否是一个字母 isDigit()是否是一个 ...

  7. 题解 Sue的小球/名次排序问题/方块消除/奥运物流

    Sue的小球 名次排序问题 方块消除 奥运物流 Sue的小球 题目大意 有 \(n\) 个小球在下落,初始位置 \((x_i,y_i)\),下落速度为 \(v_i\).你初始位置在 \(x_0\),速 ...

  8. sql常用的统计公式

    hivesql中max,min函数不能作用于多列,因此在有上下门限区间限制时多用公式直接计算. max(x,y)=(x+y+ABS(x-y))/2 min(x,y)=(x+y-ABS(x-y))/2 ...

  9. 【数据结构与算法Python版学习笔记】图——词梯问题 广度优先搜索 BFS

    词梯Word Ladder问题 要求是相邻两个单词之间差异只能是1个字母,如FOOL变SAGE: FOOL >> POOL >> POLL >> POLE > ...

  10. Takin Talks·上海 |开源后首场主题研讨会来了,一起解密Takin技术吧!

      自 6 月 25 日全球首款生产环境全链路压测平台 Takin 正式开源,短短 13 天时间,Github 主页上 Star 数已超过 730,开发者社群也积累了 1500+粉丝.群内技术研讨氛围 ...