技术领域
本发明属于信息安全领域,具体涉及一种适用于通信双方秘钥共享的秘钥协商方法。
背景技术
目前通用的秘钥协商方法是基于三次握手交换双方参数信息后,通过密码计算产生会话秘钥,这种方式产生会话秘钥时间延迟较大,主要体现在通信次数多(需要三次握手),密码计算速度慢(协商过程中使用了公钥计算,公钥计算比较耗时),这种秘钥协商方法对通信控制实时性要求较高端场景很难满足需求。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种适用于通信双方秘钥共享的秘钥协商方法,以解决现有的秘钥协商方法对通信控制实时性要求较高端的场景难以满足需求的问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种适用于通信双方秘钥共享的秘钥协商方法,该方法包括如下步骤:
S1、预置秘钥和共享秘钥矩阵
通过指定方式将预置秘钥和共享秘钥矩阵加载到设备中;
S2、随机秘钥的产生
A端产生随机秘钥后按照标准进行随机性验证,验证通过后的随机数为真随机数,该真随机数即为随机秘钥;
S3、随机秘钥发送到秘钥协商对端
A端产生随机秘钥后,使用预置秘钥加密后,发送给通信对端,通信对端接收到随机秘钥后,使用预置秘钥解密得到随机秘钥;
S4、通过随机秘钥衍生协商会话秘钥分量
将随机秘钥作为参数输入到秘钥衍生函数中,进行秘钥衍生运算获得衍生秘钥;
S5、对随机秘钥计算HASH值
将随机秘钥作为输入参数,通过HASH算法得到160位摘要值;
S6、通过HASH值计算共享秘钥矩阵索引
将160位摘要值按5位为一段分成32段,作为获取共享秘钥组的索引值,索引值数组为Kindex[32];
S7、从共享秘钥矩阵获取共享秘钥组
共享秘钥矩阵使用SKM表示,SKM={{SKM[0][0],SKM[0][1],…SKM[0][31]},{……}……{SKM[31][0],SKM[31][1],…SKM[31][31]}}其元素为SKM[m][n];
令m=Kindex[i]、n=Kindex[j];i,j<=31;获得共享秘钥组,用SKA表示,SKA[k]=SKM[m][n],k<=31;
S8、从共享秘钥组和衍生秘钥获取二级秘钥
通过以下公式计算二级秘钥:
KN=E(E(…E(E(CK,SKA[k]))));E代表加密,加密层数大于10层,产生的二级秘钥即为协商会话秘钥。
进一步地,所述共享秘钥矩阵由32x32个秘钥组成,每一行每一列对应的元素为一个真随机数秘钥。
进一步地,所述共享秘钥矩阵中的真随机数秘钥为32个字节的真随机数秘钥。
进一步地,所述步骤S2中A端产生随机秘钥具体为:A端通过随机数发生芯片产生随机秘钥。
进一步地,所述步骤S3之后,通信两端按照协商策略同时执行后续步骤计算协商会话秘钥。
进一步地,所述步骤S4中的秘钥衍生函数为SM3_KDF。
进一步地,所述步骤S5中的HASH算法为SM3摘要运算。
进一步地,所述步骤S7中i从0开始循环增大到31,j从31开始循环减小到0。
进一步地,所述步骤S8中E代表的加密算法为对称加密算法。
进一步地,所述步骤S8中加密层数为32层。
(三)有益效果
本发明提出一种适用于通信双方秘钥共享的秘钥协商方法,本发明基于共享秘钥矩阵的秘钥协商方法在整个协商过程中没有使用公钥算法,而且只有一次单向通信,在把一方的随机秘钥发送到对方后,双方使用相同的计算策略得到会话秘钥。在安全性方面,一端产生的随机秘钥使用预置秘钥加密后发送给另一端,该过程的加密为第一层安全保护,该随机秘钥没有直接参与秘钥协商的过程,而是分别计算HASH值和秘钥衍生间接参与秘钥协商,这两个过程分别为第二层和第三层安全保护,通过HASH值计算秘钥矩阵索引,通过索引值获取32个秘钥,该过程为第四层和第五层安全保护,通过强密码算法对32个秘钥和衍生的秘钥分量进行运算得到协商会话秘钥,实现第六层安全保护,攻击者需要同时完成六次的破解操作才可以攻破该秘钥协商系统,这在实现上几乎不可能。即使被不良分子泄漏了系统的原理和实现,由于秘钥衍生算法、HASH算法、索引计算方法、通过索引获取秘钥的方法都是通过策略可以配置的,只要对算法和策略做出修改,攻击者便无法实现与系统通信盗取系统信息的图谋。
附图说明
图1为本发明秘钥协商方法流程图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明涉及一种通信双方秘钥协商方法,该秘钥协商方法特别适用于对通信实时性要求较高,而且硬件计算资源有限的环境。
本发明中需要实现以下关键内容:
1)共享秘钥矩阵
共享秘钥矩阵由32x32个秘钥组成,每一行每一列对应的元素为一个真随机数秘钥,秘钥长度根据需求的不同而不同,该发明中采用32个字节的真随机数秘钥,其他字节数量的秘钥同样属于该发明的范畴。按照每一行每一列各取一个元素的设计,取满32个元素为一组,计算协商会话秘钥,共可以实现的秘钥组数为KCOUNT=32
2)随机秘钥
随机秘钥是通过随机数发生器硬件设备获取的真随机数,该随机数需要按照一定标准进行随机性的检测,检测通过后可以投入使用。
3)秘钥衍生
秘钥衍生是用于从一些密值(例如主密钥、密码)中衍生对称密钥的确定性算法,本研究是从随机秘钥中进行衍生对称秘钥。本研究主要采用SM3_KDF算法实现秘钥衍生,秘钥衍生算法可以有多种选择。
本发明的秘钥协商方法具体包括如下步骤:
S1、预置秘钥和共享秘钥矩阵
通过指定方式将预置秘钥和共享秘钥矩阵加载到设备中,预置秘钥用于保护随机秘钥的传输安全,具备一定强度的安全性。预置秘钥用PSK表示。
S2、随机秘钥的产生
A端通过随机数发生芯片产生随机秘钥,并按照标准进行随机性验证,验证通过后的随机数为真随机数,该真随机数即为随机秘钥。该随机秘钥用于衍生协商会话秘钥分量作为产生协商会话秘钥的非线性部分参与运算,A端随机秘钥使用RNK表示。
S3、随机秘钥发送到秘钥协商对端
A端产生随机秘钥后,使用预置秘钥加密后,通过通信方式在线发送给通信对端,通信对端接收到随机秘钥后,使用预置秘钥解密得到随机秘钥。对端解密随机秘钥为RNK=D(PSK,RNK
通信两端按照协商策略同时执行后续步骤计算协商会话秘钥,可以节省协商时间。
S4、通过随机秘钥衍生协商会话秘钥分量
将随机秘钥作为参数输入到秘钥衍生函数中,进行秘钥衍生运算获得衍生秘钥,秘钥衍生函数为SM3_KDF,衍生后运算后产生的衍生秘钥用CK表示。
S5、对随机秘钥计算HASH值
将随机秘钥作为输入参数,通过HASH算法得到160位摘要值。摘要值用SHASH表示。该HASH算法可以为SM3摘要运算。
S6、通过HASH值计算共享秘钥矩阵索引
将160位摘要值按5位为一段分成32段,作为获取共享秘钥组的索引值,索引值数组为Kindex[32],5位二进制最大表示的数值为31,正好填充整个数组。
S7、从共享秘钥矩阵获取共享秘钥组
共享秘钥矩阵使用SKM表示,SKM={{SKM[0][0],SKM[0][1],…SKM[0][31]},{……}……{SKM[31][0],SKM[31][1],…SKM[31][31]}}其元素为SKM[m][n]。
令m=Kindex[i]、n=Kindex[j];i,j<=31;
i、j按照约定的方式选取,例如i从0开始循环增大到31,j从31开始循环减小到0;获得共享秘钥组,用SKA表示,SKA[k]=SKM[m][n],k<=31;
S8、从共享秘钥组SKA和衍生秘钥CK获取二级秘钥
通过以下公式计算二级秘钥:
K
本发明基于共享秘钥矩阵的秘钥协商方法在整个协商过程中没有使用公钥算法,而且只有一次单向通信,在把一方的随机秘钥发送到对方后,双方使用相同的计算策略得到会话秘钥。在安全性方面,一端产生的随机秘钥使用预置秘钥加密后发送给另一端,该过程的加密为第一层安全保护,该随机秘钥没有直接参与秘钥协商的过程,而是分别计算HASH值和秘钥衍生间接参与秘钥协商,这两个过程分别为第二层和第三层安全保护,通过HASH值计算秘钥矩阵索引,通过索引值获取32个秘钥,该过程为第四层和第五层安全保护,通过强密码算法对32个秘钥和衍生的秘钥分量进行运算得到协商会话秘钥,实现第六层安全保护,攻击者需要同时完成六次的破解操作才可以攻破该秘钥协商系统,这在实现上几乎不可能。即使被不良分子泄漏了系统的原理和实现,由于秘钥衍生算法、HASH算法、索引计算方法、通过索引获取秘钥的方法都是通过策略可以配置的,只要对算法和策略做出修改,攻击者便无法实现与系统通信盗取系统信息的图谋。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
机译: 用于通信方法和无钥进入的信息的无钥进入设备和便携式设备以及用于车载装置的无钥进入
机译: 一种针对中继攻击的无钥无钥进入系统的保护方法
机译: 一种针对中继攻击的无钥无钥进入系统的保护方法