IKEv2的密钥计算方式
在IKEv2的头两个消息中,通信双方会协商一系列的安全参数。包括,一个加密算法,一个完整性算法,一个DH Group,以及一个PRF伪随机数算法。其中,PRF算法被通信双方用来生成即将被用到的各种密钥。
在讨论密钥生成之前,先了解下IKEv2通信需要哪些密钥。首先,加解密需要一对密钥,称之为SK_ei和SK_er;然后,完整性算法需要一对密钥,称之为SK_ai和SK_ar;第三,在生成AUTH payload时也需要一对密钥,称之为SK_pi和SK_pr;最后,为了给Child SA生成加密材料,也需要一个密钥,称之为SK_d。
这些密钥,有的是固定长度,比如DES算法的密钥长度固定是56比特,而有些算法,比如AES算法,其密钥程度可能是128比特,也可能是192或者256比特。那么在协商时,双方需要通过一个额外的属性来协商出密钥长度。当协商结束完成之后,双方应该在算法和密钥长度方面都达成了一致。而SK_d,SK_Pi和SK_pr的长度则是PRF算法所需要的密钥长度,因为它们最终被用作PRF算法的密钥。
密钥的计算过程如下:
Pfr+ (K, S) = T1 | T2 | T3 | T4 …
其中:
T1 = prf (K, S | 0x01)
T2 = prf (K, T1 | S | 0x02)
T3 = prf (K, T2 | S | 0x03)
T4 = prf (K, T3 | S | 0x04)
…
如何理解以上过程呢?
以T1 = prf (K, S | 0x01)为例,K和S | 0x01为这个prf算法的输入,T1是它的计算结果。分隔符‘|’表示连接的意思,比如S的值是”0x08 0x07 0x06 0x05”,那么 S | 0x01的结果是” 0x080x07 0x06 0x05 0x01”。
了解了密钥的计算过程,那么一下的IKEv2密钥生成就很好理解了:
SKEYSEED = prf (Ni | Nr, g^ir)
{ SK_d | SK_ai | SK_ar | SK_ei | SK_er |SK_pi | SK_pr } = prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr)
T1 = prf (K, S | 0x01)
T2 = prf (K, T1 | S | 0x02)
T3 = prf (K, T2 | S | 0x03)
T4 = prf (K, T3 | S | 0x04)
1、首先使用双方交互的随机数Ni,Nr以及DH算法中公开的部分gir生成基准密钥(种子密钥)
2、我们将种子密钥以及随机数Ni,Nr和双方的SPI放入伪随机函数中进行计算,在上面的公式中,K就是种子密钥,Tx就是上一轮计算的结果,S就是Ni,Nr和SPI,每一轮都有一次的计算结果,我们取第一次计算结果SK_d,第二个为SK_ai,然后分别为SK_ar,SK_ei,SK_er,SK_pr,SK_pr。
其中SK_d用于后续的IPsec的密钥产生
SK_ai和SK_ar用于后续IPsecSA协商时数据的完整性校验
SK_ei和SK_er用于后续IPsecSA协商时数据的加密
SK_pi和SK_pr用于后续IPsecSA协商时数据的来源性确认
和IKEv1不同的地方
IKEv1中总共是生成三个密钥用于协商双方的数据交互,但是在IKEv2中而是使用7个密钥,其中加密,完整性校验,数据来源校验都使用了一对密钥而不是仅仅使用一个密钥。
IKEv1下产生的密钥以及相关的用途
IKEv2下产生的密钥以及相关的用途
IKE SA; SK_ai and SK_ar used as a key to the integrity protection algorithm for authenticating the component messages of subsequent exchanges;
(翻译:Sk_ai和Sk_ar主要用于后续数据交换时完整性算法时使用的密钥)
SK_ei and SK_er used for encrypting (and of course decrypting) all subsequent exchanges;
(翻译:SK_ei和SK_er主要用于后续数据交换中的加密)
and SK_pi and SK_pr, which are used when generating an AUTH payload.
(翻译:SK_pi和SK_pr主要用于产生验证载荷,其实就是验证数据来源的作用)
The lengths of SK_d, SK_pi, and SK_pr MUST be the preferred key length of the PRF agreed upon. (翻译:SK_d,SK_pi,SK_pr的密钥长度一定要符合协商好的伪随机函数的长度)
IKEv2的密钥计算方式相关推荐
- python损失函数实现_pytorch 实现cross entropy损失函数计算方式
均方损失函数: 这里 loss, x, y 的维度是一样的,可以是向量或者矩阵,i 是下标. 很多的 loss 函数都有 size_average 和 reduce 两个布尔类型的参数.因为一般损失函 ...
- 模型评估指标micro avg、macro avg和weighted avg的计算方式及区别
模型评估指标micro avg.macro avg和weighted avg的计算方式及区别-技术圈
- Java基础-时间复杂度计算方式
Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...
- java时间格式转换_Java中System.currentTimeMillis()计算方式与时间的单位转换
学会与时间赛跑才能赢得时间的尊重,把握好每一天,趁年轻! java中获取系统当前时间相信大家都会,这是经常用到的也是非常简单的,但还是要经常回顾下一些小细节哦! 一.时间的单位转换 1秒=1000毫秒 ...
- Smooth_L1_Loss函数的计算方式
Smooth_L1_Loss函数的计算方式 从今天开始,阅读faster rcnn的相关代码,并记录我对faster rcnn中特别的层的理解.本篇主要是对smooth_L1_Loss层进行解读. ...
- 火币网的macd怎么算的_黄金投资中MACD的计算方式
俗语有云:一子错,满盘皆落索.这句话在黄金投资中得到现实意义的最大化.黄金投资风险时刻存在,每一个小细节都可能导致亏损.所以我们不可以忽略一些小知识.大田环球贵金属将会大家介绍一些关于平滑异同移动平均 ...
- python模型预测_python:目标检测模型预测准确度计算方式(基于IoU)
训练完目标检测模型之后,需要评价其性能,在不同的阈值下的准确度是多少,有没有漏检,在这里基于IoU(Intersection over Union)来计算. 希望能提供一些思路,如果觉得有用欢迎赞我表 ...
- 搭建卷积神经网络时loss计算方式的选择
最近在利用卷积神经网络跑模型的时候,总会出现一些奇奇怪怪的问题,而其中出现次数最多的就是loss值计算方式选择错误问题.在tensorflow中封装的loss值的计算方式有三种:BinaryCross ...
- [css] absolute的containing block(容器块)计算方式和正常流有什么区别?
[css] absolute的containing block(容器块)计算方式和正常流有什么区别? absolute会先向上找到第一个position不为static或者fixed的祖先元素,然后根 ...
- java 日期 年数_java 日期加减天数、月数、年数的计算方式
因为某个项目需要统计 近1周.近1个月.近6个月 等数据,所以在时间的加减上面想了很多方式,最后决定用java.util.Calendar java.util.Calendar ,提供了计算时间的方式 ...
最新文章
- 安装 ssh 的公开密匙到 iPhone 上
- php 负载监控_PHP监控linux服务器负载
- Linux 内核同步(二):自旋锁(Spinlock)
- 自定义权限 android,Android权限控制之自定义权限
- 电脑睡眠快捷键_电脑快速进入睡眠的快捷键是什么?
- 解决JPA的枚举局限性
- 数据建模-聚类分析-K-Means算法 --聚类可视化工具TSNE
- 关于C#关闭窗体后,依旧有后台进程在运行的解决方法
- ST25读FeliCa卡记录
- novatel中DGPS和RTK以及ppp的terrraStar-x的记录
- MapReduce:Combiner与Shuffle阶段之Reducer输入
- dogcs2.1 粗略预防CVE-2022-39197 XSS to RCE探究
- Golang 多版本管理
- docker pull报错:Timeout exceeded while awaiting headers解决思路
- win10自动修复重启失败,无法进入桌面,解决办法
- 深入理解Apache虚拟主机
- 英飞凌基础学习笔记(GTM)Generic Timer Module
- 【产品设计】浅析产品新手引导设计
- 关于学术期刊,你应该知道这些
- 计算机毕业设计asp.net的高校科研项目管理系统(源码+系统+mysql数据库+Lw文档)
热门文章
- C语言知识层次结构图
- “眼界大开 声临其境”网易首届音视频技术大会圆满落幕
- 不用命令行WinRAR解压7z.001格式的文件
- mac os sierra卸载java_如何删除Install macOS High Sierra.app
- 迅捷路由器设置找不到服务器,迅捷(fast)路由器怎么设置?
- php 时分秒选择联动,jquery.datepair日期时分秒选择器
- mysql 1138_mysql ERROR 1138: Invalid use of NULL value
- Vmware_jjbLite_jb51不是有效的短文件名
- 适合所有手环的app_Redmi Watch体验:手环终结者?
- pmp考试【5】emv期望货币价值计算