IPsec IKEv2(HCIP)

目录

一、IKE介绍

1、IKE介绍

2、IKE的主要作用

3、IKE与IPsec关系

二、IKE基础内容

1、IEK的身份认证方法

数据源认证

预共享密钥PSK

数字证书

数字信封

EAP(IKEv2支持)

数字证书CA如何实现身份认证?

2、IKEv1介绍

IKEv1介绍

IKEv1第一阶段介绍

IKEv1第二阶段介绍

IKEv1存在的问题

2、IKEv2介绍

IKEv2的改进

IKEv2介绍

IKEv2的交换过程

IKEv2载荷

IKEv2报文交换信息

初始交换

子SA交换

通知交换

三、IPsec配置步骤

命令行方式


一、IKE介绍

1、IKE介绍

因特网密钥交换IKE(internet Key Exchange)协议建立在Internet安全联盟和密钥管理协议ISAKMP(lnternetSecurityAssociation and Key Management Protocol)定义的架上,是基于UDP的应用层协议。

它为IPsec提供了自动协商密钥Key、建立IPsec安全联盟的服务,能够简化IPsec的使用和管理,大大简化IPsec的配置和维护工作。

2、IKE的主要作用

  • 降低IPsec手工配置的复杂度
  • 安全联盟定时更新
  • 密钥定时更新
  • 允许在端与端之间动态认证
  • 隧道加密数据要用到的协商算法(proposal),IKE隧道要用的算法。

3、IKE与IPsec关系

  • IKE是基于UDP之上的一个应用层协议,是IPsec的信令协议。
  • IKE为IPsec协商建立SA,并把建立的参数及生成的密钥交给IPsec。
  • IPsec使用IKE建立的iPse SA对IP报文进行加密或验证处理

二、IKE基础内容

1、IEK的身份认证方法

IKE为验证远端对等体身份(对等体的IP地址或名称),提供了如下三种方法:

预共享密钥PSK (Pre-Shared Key)认证。——口令

数字证书RSA(RSA-Signature)认证。——非对称加密算法!公钥加密、私钥解密

数字信封认证。——非对称+对称、公钥加密+私钥解密

  • 数据源认证

数据源认证:通过对发送数据的源进行身份验证,保证数据来白真实的发送者。

  • 预共享密钥PSK

预共享密钥PSK:手工输入每个对等体的,用于认证的密钥值(通过比对双方之间的预共享密钥是否一致从而认证身份)

  • 数字证书

数字证书:RSA签名-----用交换数字证书的方式认证对等体(通过交换数字证书认证,从而认证身份)

  • 数字信封

数字信封:RSA加密随机数(nonce) -----nonce (由各个对体生成的随机数)被加密,然后在对等之问交换,在对等体认证流程中使用两个nonce(通过使用对等休产生的nonce值,通过公钥加密,对方收到后如果成功解密后获得正确的nonce值,就认证了身份)

  • EAP(IKEv2支持)

EAP(IKEv2支持) : 因为EAP支持对用户做认证,所以IKEv2支持远端接入。

数字证书CA如何实现身份认证?

数字证书采用RSA等非对称密销算法实现身份认证。

2、IKEv1介绍

IKEv1介绍

采用IKEv1协商安全联盟主要分为两个阶段:

  • 第一阶段,通信双方协商并建立IKE协议本身使用的安全通道,即建立一个IKE SA(主模式【六个报文】和野蛮模式【三个报文】,在这个阶段就已经产生隧道了,不传业务传第二阶段的协商。
  • 第二阶段,利用第一阶段已通过认证与安全保护的安全通道,建立一对用于数据安全传输的IPsec SA(快速模式三个报文),加密传输协商Ipsec SA的信令,协商起隧道传输业务。

IKEv1第一阶段介绍

  • IKEv1协商第一阶段的目的是建立IKE SA。IKE SA建立后对等体间的所有KE报文都将通过加密和验证,这条安全通道可以保证IKEv1第二阶段的协商能够安全进行。
  • IKEv1协商第一阶段支持两种协商模式:主模式(Main Mode)和野模式(Aggressive Mode)

野蛮模式:

第一个包就是把主模式的1、3、5包一起发

第二个包对方把主模式2、4、6包一起发

第三个就是验证数据了

IKEv1第二阶段介绍

  • IKEv1协商第二阶段的目的是建立用来安全传输数据的IPsec SA,并为数据传输衍生出密钥。
  • 第二阶段采用快速模式 (Quick Mode),该模式使用IKEV1协商第一阶段中生成的密钥对ISAKMP消息的完整性和身份进行验证,并对ISAKMP消息进行加密,故保证了交换的安全性。

IKEv1存在的问题

  • 从协议本身来看,原有标准所提供的某些功能实际很少被使用,甚至根本不用,其数据结构存在进一步简化的空间。
  • 从系统耗费来看,高强度的密钥在提供更高安全性的同时对计算机系统意味着更大的运算负担有必要在实现时考虑尽量避免使用大强度的密钥计算。
  • SA建立时需要多轮协商为节约通信资源应该减少传送的信息和交换次数从而提高IKE的效率。
  • 应注意到在公共互联网上普遍存在的安全隐患IKE协议本身的特点决定了其有可能遭受拒绝服务攻击、重播攻击、中间人攻击等危险有必要加以改进以增强其抵御能力。

2、IKEv2介绍

IKEv2的改进

  • 协议的整合。IKEV2整合了IKEv1的主体协议(RFC2407,2408,2409)以及后来补充的NAT 穿越(NAT Traversal)、遗传认证(Legacy Authentication)、远程地址采集( Remote Address Acquisition)等协议,形成了一个完整的IKE协议。它保留了IKEv1 的基本功能,同时兼顾了高效性、安全性、健壮性和复杂性的需要,大幅度精简了原有协议,并针对在此之前对IKEV1 研究过程中发现的问题进行了修订。
  • 协商轮数的减少。在保证安全性的前提下,将第一阶段中主模式交换的消息条数由六条减少到四条,第二阶段的消息由三条变为两条。
  • 载荷的变化,数字签名、PSK和EAP认证的支持,不支持RSA-enr。
  • 安全性。为了防御来自网络的拒绝服务(DoS)攻击,IKEv2 规定通信双方任何-端不能通过任何路由信息(ICMP消息)或未加密保护的IKE 消息(报错消息)来判定另一方是否已经无法通信,通告需要确认。

IKEv2介绍

  • IKEv2简化了IKEv1协商SA的过程。
  • 正常情况下,IKEV2使用2次交换共4条消息就可以完成一对IPsec SA的建立,如果要求建立的IPsec SA大于一对时,每一对IPsecSA只需额外增加1次创建子SA交换,也就是2条消息就可以完成。
  • IKEv2定义了三种交换:初始交换(Initial Exchainges)、创建子SA交换(Create_Child_SA_Exchange)以及通知交换(informational Exchange)

IKEv2的交换过程

在IKEv2的协议中,通信双方协商由3个交换来完成:(没有了IKEv1的阶段一和阶段二的概念,只有交换)

  • 初始交换(Initial Exchange):初始交换由 4 条消息组成,其中头两条消息被称为 IKE SA INITIAL交换,主要是协商加密算法、交换 Nonce 值、完成一次 DiffieHellman 交换,从而生成用于加密和验证后续交换的密钥材料。后两条消息被称为 IKE AUTH 交换,实现对前两条消息的认证,同时交换身份标识符和证书,并建立第一个 CHILD SA。IKE AUTH 交换的两条消息中式被加密和认证的 ,加密和认证使用的密钥是在IKE SA INITIAL 交换中建立的。

四个包搞定IKE SA、IPsec SA

  • 建立子交换(CREAT_CHILD_SA_Exchange)
  • 信息交换(Informatin Exchange)

初始交换和建立子交换是建立隧道,信息交换是维护隧道。

IKEv2载荷

IKEv2报文交换信息

初始交换

IKEv2通过初始交换就可以完成第一对IPsec SA的协商建立。初始交换包含两次交换四条消息。

子SA交换
  • 当一个IKESA需要创建多对IPsec SA时,需要使用创建子SA交换来协商多于一对的IPsecSA。创建子SA交换还可以用于IKESA的重协商。
  • 创建子SA交换包含一个交换两条消息,对应IKEv1协商阶段2,交换的发起者可以是初始交换的协商发起方也可以是初始交换的协商响应方。

通知交换
  • 运行IKE协商的两端有时会传递一些控制信息,例如错误信息或者通告信息,这些信息在IKEV2中是通过通知交换完成的。
  • 通知交换必须在IKE SA保护下进行,也就是说通知交换只能发生在初始交换之后。控制信息可能是IKE SA的那么通知交换必须由该IKE SA来保护进行;也可能是某子SA的,那么该通知交换必须由生成该子SA的IKESA来保护进行。

IKEv2的初始交换等于IKEv1的主模式\野蛮模式全部事情。

秘钥公式(参考IKEv1):

定义IPsec保护流

IPsec是基于定义的感兴趣流触发对特定数据的保护,可以通过以下两种方式定义:

  • ACL方式:由ACL来指定要保护的数据流范围,筛选出需要进入IPsec隧道的报文。
  • 路由方式:
    • 通过IPsec虚拟隧道接口建立IPsec隧道,将所有路由到IPsec虚拟隧道接口的报文都进行IPsec保护。
    • 现网中GRE Over IPsec一般使用基于路由的方式定义被保护流。

自动触发隧道:在ipsec策略下sa trigeer-mode auto。

三、IPsec配置步骤

完成防火墙基本配置IP !zone! 路由 有一条去公网的路由

命令行方式

  • 第一阶段,第一个包 的 ike sa propsal
  • 第3个包DH KE
  • 第五个包 id hash:id+4+key_a (key)
  • 配置acl 指定要加密的流
  • 第7个包ipsec sa propsal
  • IPsec 策略
  • 策略调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9个小技巧让你的 if else看起来更优雅

if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码: 是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,…

poj 3254 状压dp

E -Corn FieldsTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u SubmitStatus Practice POJ 3254Description Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels…

第一弹!安利10个让你爽到爆的IDEA必备插件!

大家好,此篇文章中我会介绍10个非常不错的IDEA插件以及它们常见功能的使用方法。这一期内容搞 Gif 动态图花了很久,很多Gif图片上传到微信还提示过大,所以很多地方重新又录制了一遍Gif图。概览:IDE Features Trainer—IDEA交互式教…

C程序对整数中设置为1的位数进行计数

Problem statement: Write a C program to count number of bits set to 1 in an Integer. 问题陈述:编写一个C程序来计算Integer中设置为1的位数 。 Solution: We can use bitwise operator here to solve the problem. 解决方案:我们可以在这里使用按…

String性能提升10倍的几个方法!(源码+原理分析)

这是我的第 54 篇原创文章。String 类型是我们使用最频繁的数据类型,没有之一。那么提高 String 的运行效率,无疑是提升程序性能的最佳手段。我们本文将从 String 的源码入手,一步步带你实现字符串优化的小目标。不但教你如何有效的使用字符串…

日期getTime()方法以及JavaScript中的示例

JavaScript Date getTime()方法 (JavaScript Date getTime() method) getTime() method is a Dates class method and it is used to get the time in milliseconds from 1st January 1970. getTime()方法是Date的类方法,用于获取从1970年1月1 日开始的时间(以毫秒为…

制作openstack-centos镜像

一、准备工作我在计算节点上面制作镜像,计算节点为centos6.3 64位系统1.安装底层支持包yum groupinstall Virtualization "Virtualization Client"yum install libvirt2.下载或从本地上传进去一个完整的系统镜像mkdir /openstack-p_w_picpathcd /openstac…

一文彻底搞懂Java中的值传递和引用传递!

关于Java中方法间的参数传递到底是怎样的、为什么很多人说Java只有值传递等问题,一直困惑着很多人,甚至我在面试的时候问过很多有丰富经验的开发者,他们也很难解释的很清楚。我很久也写过一篇文章,我当时认为我把这件事说清楚了&a…

g++默认参数_C ++默认参数| 查找输出程序| 套装1

g默认参数Program 1: 程序1&#xff1a; #include <iostream>using namespace std;int sum(int X, int Y 20, int Z 30){return (X Y Z);}int main(){int A 0, B 0;A sum(5, 10);B sum(10);cout << A << " " << B;return 0;}Output…

c语言指针灵活性管窥

最近看到mit的[urlhttp://pdos.csail.mit.edu/6.828/2010/]操作系统课程网站[/url],其[urlhttp://pdos.csail.mit.edu/6.828/2010/labs/lab1/]实验一[/url] 中练习四&#xff08;exercise 4&#xff09;中有一个关于指针使用的代码&#xff1a;#include <stdio.h>#includ…

近100个Spring/SpringBoot常用注解汇总!

作者 | Guide来源 | JavaGuide&#xff08;微信公众号&#xff09;毫不夸张地说&#xff0c;这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法&#xff0c;掌握搞懂&#xff0c;使用 SpringBoot 来开发项…

虚拟化之vmware-vsphere (web) client

两种客户端 vsphere client 配置》软件》高级设置里的变量 uservars.supressshellwarning1 vsphere web client 安装完vSphere Web Client后&#xff0c;在浏览器地址栏输入https://localhost:<9443 或者你选择的其他端口>/admin-app/就可以访问vSphere Web Client管理工…

用贪婪算法解决背包问题_解决主要算法问题的贪婪策略

用贪婪算法解决背包问题Introduction: 介绍&#xff1a; Lets start the discussion with an example that will help to understand the greedy technique. If we think about playing chess, when we make a move we think about the consequences of the move in future st…

HashMap 的 7 种遍历方式与性能分析!(强烈推荐)

这是我的第 56 篇原创文章随着 JDK 1.8 Streams API 的发布&#xff0c;使得 HashMap 拥有了更多的遍历的方式&#xff0c;但应该选择那种遍历方式&#xff1f;反而成了一个问题。本文先从 HashMap 的遍历方法讲起&#xff0c;然后再从性能、原理以及安全性等方面&#xff0c;来…

BBcode 相关资源索引

VeryCD社区BBCode使用指南 BBcode Reference BBcodewikipedia

Why is HttpContext.Current null after await?

今天在对项目代码进行异步化改进的时候&#xff0c;遇到一个奇怪的问题&#xff08;莫笑&#xff0c;以前没遇过&#xff09;&#xff0c;正如标题一样&#xff0c;HttpContext.Current 在 await 异步执行之后&#xff0c;就会变为 null。 演示代码&#xff1a; public async T…

c ++产生不同的随机数_C ++程序生成随机密码

c 产生不同的随机数Problem Statement: 问题陈述&#xff1a; Write a menu driven program to generate password randomly 编写菜单驱动程序以随机​​生成密码 constraint: 约束&#xff1a; password should consist of 密码应包含 lowercase Alphabet - a to zUpperC…

如何选择c语言学习书籍

C语言作为一个简洁精巧的语言&#xff0c;在计算机业中仍有非常广泛的应用。而在最近的编程语言流行度排名 中&#xff0c;C语言仍然位居第二的宝座。 通常在学习一门编程语言之前我们都会有一定的缘由&#xff1a;可能是为了应付某项专业考试&#xff0c;也可能是提高自己的专…

WEB平台架构之:LAMP(Linux+Apache+MySQL+PHP)

WEB平台架构之&#xff1a;LAMP(LinuxApacheMySQLPHP) 从业界来看&#xff0c;最主流的web平台架构就当属LAMP了。LAMP架构可以说是一切web平台的基础架构&#xff0c;所有一切的所谓大型架构无非就是通过一些负载均衡技术&#xff0c;集群技术&#xff0c;缓存技术等结合LAMP…

numpy zeros矩阵_零矩阵使用numpy.zeros()| 使用Python的线性代数

numpy zeros矩阵Zeros Matrix - When all the entries of a matrix are one, then it is called a zeros matrix. It may be of any dimension (MxN). 零矩阵 -当矩阵的所有条目均为1时&#xff0c;则称为零矩阵。 它可以是任何尺寸( MxN )。 Properties: 特性&#xff1a; T…