一种密钥发散方法及装置的制造方法

文档序号:10666297阅读:229来源:国知局
一种密钥发散方法及装置的制造方法
【专利摘要】本发明适用于密钥领域,提供了一种密钥发散方法及装置,所述密钥发散方法包括:获取预设的计数值、终端序列号和预配置的基本发散密钥,生成初始密钥;将当前计数器的计数值转化为移位计数器的计数值;获取移位计数器的计数值比特位为1的个数,将比特位为1的个数作为发散次数,按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发散次数,对初始密钥进行发散,生成优选的发散密钥,或者,获取移位计数器的计数值比特位为0的个数,将比特位为0的个数作为发散次数,按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发散次数,对初始密钥进行发散,生成优选的发散密钥。本发明提高了发散密钥的可靠性。
【专利说明】
_种密钥发散方法及装置
技术领域
[0001] 本发明属于密钥领域,尤其涉及一种密钥发散方法及装置。
【背景技术】
[0002] 密钥是一种参数,可将明文转换为密文或将密文转换为明文。随着密钥功能的普 及,越来越多的用户设备和服务器通过密钥发散方法,生成密钥,将明文转换为密文或将密 文转换为明文,以提高交互系统的安全性。
[0003] 然而,现有密钥发散方法,发散的时间长,且生成多个发散密钥时,无法在多个发 散密钥中,选取出优选的发散密钥,降低了发散密钥的可靠性。其原因在于,现有的发散密 钥发散方法,发散时需要处理较大的数据量,在极短的时间内,无法生成发散密钥,且在生 成多个发散密钥时,只会采用轮询的方式,在多个发散密钥中选取发散密钥,而轮询的发散 密钥,并不是优选的发散密钥。因此,严重浪费了发散时间,降低了发散密钥的可靠性。

【发明内容】

[0004] 本发明实施例的目的在于提供一种密钥发散方法,旨在解决现有密钥发散方法, 发散的时间长,且生成多个发散密钥时,无法在多个发散密钥中,选取出优选的发散密钥, 降低了发散密钥的可靠性的问题。
[0005] 本发明实施例是这样实现的,一种密钥发散方法,包括:
[0006] 获取预设的计数值、终端序列号和预配置的基本发散密钥,生成初始密钥;
[0007] 将当前计数器的计数值转化为移位计数器的计数值;
[0008] 获取移位计数器的计数值比特位为1的个数,将比特位为1的个数作为发散次数, 按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发散次数,对初始密 钥进行发散,生成优选的发散密钥,或者,
[0009] 获取移位计数器的计数值比特位为0的个数,将比特位为0的个数作为发散次数, 按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发散次数,对初始密 钥进行发散,生成优选的发散密钥。
[0010] 本发明实施例的另一目的在于提供一种密钥发散装置,包括:
[0011] 初始密钥生成模块,用于获取预设的计数值、终端序列号和预配置的基本发散密 钥,生成初始密钥;
[0012] 计数值转化模块,用于将当前计数器的计数值转化为移位计数器的计数值;
[0013] 密钥发散模块,用于获取移位计数器的计数值比特位为1的个数,将比特位为1的 个数作为发散次数,按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及 发散次数,对初始密钥进行发散,生成优选的发散密钥,或者,用于获取移位计数器的计数 值比特位为0的个数,将比特位为0的个数作为发散次数,按预先设定的顺序、移位计数器 的计数值、终端序列号、初始密钥以及发散次数,对初始密钥进行发散,生成优选的发散密 钥。
[0014] 在本发明实施例中,按预先设定的顺序、移位计数器的计数值、终端序列号、初始 密钥以及发散次数,对初始密钥进行发散,生成优选的发散密钥,解决了现有密钥发散方 法,发散的时间长,且生成多个发散密钥时,无法在多个发散密钥中,选取出优选的发散密 钥,降低了发散密钥的可靠性的问题,在用户设备和服务器正常使用的情况下,可以快速生 成优选的发散密钥,节省了发散时间,从而提高了发散密钥的可靠性。
【附图说明】
[0015] 图1是本发明实施例提供的密钥发散方法的实现流程图;
[0016] 图2是本发明实施例提供的密钥发散方法步骤SlOl的实现流程图;
[0017] 图3是本发明实施例提供的密钥发散方法步骤S102的实现流程图;
[0018] 图4是本发明实施例提供的密钥发散方法步骤S103的实现流程图;
[0019] 图5是本发明实施例提供的密钥发散装置的结构框图。
【具体实施方式】
[0020] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0021] 实施例一
[0022] 图1是本发明实施例提供的密钥发散方法的实现流程图,详述如下:
[0023] 在步骤SlOl中,获取预设的计数值、终端序列号和预配置的基本发散密钥,生成 初始密钥;
[0024] 其中,预先配置基本发散密钥,并将基本发散密钥存储至预设区域。
[0025] 预设的计数值可以为系统默认,也可以自行设置,在此不做限制。
[0026] 其中,当检测到发生发送报文事件时,执行步骤SlOl。
[0027] 在步骤S102中,将当前计数器的计数值转化为移位计数器的计数值;
[0028] 在步骤S103中,获取移位计数器的计数值比特位为1的个数,将比特位为1的个 数作为发散次数,按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发 散次数,对初始密钥进行发散,生成优选的发散密钥,或者,获取移位计数器的计数值比特 位为〇的个数,将比特位为〇的个数作为发散次数,按预先设定的顺序、移位计数器的计数 值、终端序列号、初始密钥以及发散次数,对初始密钥进行发散,生成优选的发散密钥。
[0029] 在本发明实施例中,按预先设定的顺序、移位计数器的计数值、终端序列号、初始 密钥以及发散次数,对初始密钥进行发散,生成优选的发散密钥,解决了现有密钥发散方 法,发散的时间长,且生成多个发散密钥时,无法在多个发散密钥中,选取出优选的发散密 钥,降低了发散密钥的可靠性的问题,在用户设备和服务器正常使用的情况下,可以快速生 成优选的发散密钥,节省了发散时间,从而提高了发散密钥的可靠性。
[0030] 实施例二
[0031] 图2是本发明实施例提供的密钥发散方法步骤SlOl的实现流程图,详述如下:
[0032] 在步骤S201中,将预先设定的计数值和终端序列号组合,生成初始的混合数据;
[0033] 在步骤S202中,利用散列函数,获取初始的混合数据的散列值和预配置的基本发 散密钥的散列值;
[0034] 其中,可利用SHA散列函数,获取初始的混合数据的散列值和预配置的基本发散 密钥的散列值,或者利用MD5散列函数,获取初始的混合数据的散列值和预配置的基本发 散密钥的散列值。
[0035] 在步骤S203中,利用混合数据的散列值和预配置的基本发散密钥的散列值,进行 异或运算,生成初始密钥。
[0036] 在本发明实施例中,生成初始密钥,便于后续以初始密钥为基础,进行发散,快速 生成优选的发散密钥。
[0037] 实施例三
[0038] 图3是本发明实施例提供的密钥发散方法步骤S102的实现流程图,详述如下:
[0039] 在步骤S301中,获取当前计数器的比特位为1的个数,获取当前计数器的比特位 为〇的个数;
[0040] 在步骤S302中,判断当前计数器的比特位为1的个数是否小于预设阀值,判断当 前计数器的比特位为〇的个数是否小于预设阀值;
[0041] 在步骤S303中,若是,将当前计数器的计数值转化为移位计数器的计数值;若否, 按当前计数器的计数值的位数,将当前计数器的计数值分为高位计数值和低位计数值,将 高位计数值进行位移,底位计数值补1或者补〇,通过移位和异或运算,将当前计数器的计 数值转化为移位计数器的计数值。
[0042] 其中,通过移位和异或运算,将当前计数器的计数值转化为移位计数器的计数值, 具体为:
[0043] 若高位计数值和低位计数值相同时,高位计数值按照底位计数值中的设定的多个 比特位依次进行移位,当高位计数值中的比特位小于预设阀值时,再次按照底位计数值中 的设定的多个比特位之和进行移位,从而将高位计数值转化为移位计数器的计数值;
[0044] 若高位计数值和低位计数值不相同时,高位计数值与底位计数值先进行异或,生 成异或值,异或值按照设定的多个比特位依次进行移位,当异或值中的比特位小于预设阀 值时,再次按照异或值中的设定的多个比特位之和进行移位,从而将异或值转化为移位计 数器的计数值。
[0045] 为便于说明,表1描述了步骤S102在实际应用中较佳的实施流程,详述如下:
[0046]
[0048] 表1
[0049] 其中,1、符号"&"表示"与"运算;
[0050] 2、符号"》"表示"向右移位"运算;
[0051] 3、符号"〈〈"表示"向左移位"运算;
[0052] 4、"十"表示"异或"运算。
[0053] 5、符号" CurCounter "表示"当前计数器";
[0054] 6、符号"ShiftCounter"表示"移位计数器"。
[0055] 为便于说明,表2描述了上述X1、X2和X3取值范围,详述如下:
[0057] 表 2
[0058] 为便于说明,表3描述了当前计数器的计数值转化为移位计数器的计数值的过 程,详述如下:
[0059]
[0060] 表 3
[0061] 在本发明实施例中,将当前计数器的计数值转化为移位计数器的计数值,便于后 续以移位计数器的计数值为基础,进行发散,快速生成优选的发散密钥。
[0062] 实施例四
[0063] 图4是本发明实施例提供的密钥发散方法步骤S103的实现流程图,详述如下:
[0064] 在步骤S401中,获取移位计数器当前的计数值,将移位计数器当前的计数值和终 端序列号组合,生成当前的混合数据;
[0065] 在步骤S402,利用散列函数,获取当前的混合数据的散列值和初始密钥的散列 值;
[0066] 在步骤S403,利用获取到的终端序列号的散列值和移位计数器当前的计数值的散 列值,进行异或运算,生成当前的发散密钥;
[0067] 在步骤S404,循环执行步骤S402和S403,按照从左往右的顺序,对当前的发散密 钥进行发散,直至移位计数器当前的计数值不存在值为1的比特位,选出优选的发散密钥。
[0068] 可选地,作为密钥发散方法步骤S103的另一种实现方式,在步骤S404,循环执行 步骤S402和S403,按照从右往左的顺序,对当前的发散密钥进行发散,直至移位计数器当 前的计数值不存在值为1的比特位,选出优选的发散密钥。
[0069] 在本发明实施例中,根据1的比特位的个数作为发散次数,由于移位计数器当前 的计数值中值为1的比特位较少,因此发散的次数较少,可以有效减少发散的时间,快速生 成优选的发散密钥。
[0070] 实施例五
[0071] 本发明实施例描述了密钥发散方法在实际应用中较佳流程,详述如下:
[0072] 混合数据 0 [0 ~3] = OxABCDEFlO
[0073] 终端序列号[0 ~3] = 0x81002345
[0074] 基本发散密钥 0[0 ~15] = 0123456789ABCDEFFEDCBA9876543210
[0075] Cur 当前计数器=0x000357f6----> 移位计数器=0x00144000
[0076] 为便于说明,表4描述了移位计数器中比特位的值为1的第一部分,详述如下:
[0077]
[0078] 表 4
[0079] 为便于说明,表5描述了移位计数器中比特位的值为1的第二部分,详述如下:
[0081] 表 5
[0082] 备注:加粗字体的地方就是要发散的slot,不加粗字体的地方是无须发散的 slot。
[0083] 为便于说明,表6描述了发散密钥的变换过程,详述如下:
[0086] 表 6
[0087] 其中,#18 = 9E89D8EB02595213 BE53625333212DAF 即为优选的发散密钥。
[0088] 实施例六
[0089] 图5是本发明实施例提供的密钥发散装置的结构框图,该装置可以运行于电子设 备中。电子设备包括但不限于智能手机、服务器、平板电脑、笔记本电脑。为了便于说明,仅 不出了与本实施例相关的部分。
[0090] 参照图5,该密钥发散装置,包括:
[0091] 初始密钥生成模块51,用于获取预设的计数值、终端序列号和预配置的基本发散 密钥,生成初始密钥;
[0092] 计数值转化模块52,用于将当前计数器的计数值转化为移位计数器的计数值;
[0093] 密钥发散模块53,用于获取移位计数器的计数值比特位为1的个数,将比特位为 1的个数作为发散次数,按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以 及发散次数,对初始密钥进行发散,生成优选的发散密钥,或者,用于获取移位计数器的计 数值比特位为〇的个数,将比特位为〇的个数作为发散次数,按预先设定的顺序、移位计数 器的计数值、终端序列号、初始密钥以及发散次数,对初始密钥进行发散,生成优选的发散 密钥。
[0094] 在本实施例的一种实现方式中,所述初始密钥生成模块,具体包括:
[0095] 初始的混合数据生成单元,用于将预先设定的计数值和终端序列号组合,生成初 始的混合数据;
[0096] 第一散列值获取单元,用于利用散列函数,获取初始的混合数据的散列值和预配 置的基本发散密钥的散列值;
[0097] 初始密钥生成单元,用于利用混合数据的散列值和预配置的基本发散密钥的散列 值,进行异或运算,生成初始密钥。
[0098] 在本实施例的一种实现方式中,所述计数值转化模块包括:
[0099] 个数获取单元,用于获取当前计数器的比特位为1的个数,获取当前计数器的比 特位为〇的个数;
[0100] 个数判断单元,用于判断当前计数器的比特位为1的个数是否小于预设阀值,判 断当前计数器的比特位为0的个数是否小于预设阀值;
[0101] 转化单元,用于若是,将当前计数器的计数值转化为移位计数器的计数值;
[0102] 计数值转化单元,用于若否,按当前计数器的计数值的位数,将当前计数器的计数 值分为高位计数值和低位计数值,将高位计数值进行位移,底位计数值补1或者补0,通过 移位和异或运算,将当前计数器的计数值转化为移位计数器的计数值。
[0103] 在本实施例的一种实现方式中,所述预先设定的顺序包括从左往右的顺序以及从 右往左中的至少一种。
[0104] 在本实施例的一种实现方式中,所述密钥发散模块,包括:
[0105] 当前的混合数据生成单元,用于获取移位计数器当前的计数值,将移位计数器当 前的计数值和终端序列号组合,生成当前的混合数据;
[0106] 第二散列值获取单元,用于利用散列函数,获取当前的混合数据的散列值和初始 密钥的散列值;
[0107] 发散密钥生成单元,用于利用获取到的终端序列号的散列值和移位计数器当前的 计数值的散列值,进行异或运算,生成当前的发散密钥;
[0108] 发散密钥选出单元,用于循环执行所述第二散列值获取单元和所述发散密钥生成 单元中的步骤,按照从左往右的顺序,对当前的发散密钥进行发散,直至移位计数器当前的 计数值不存在值为1的比特位,选出优选的发散密钥。
[0109] 本发明实施例提供的装置可以应用在前述对应的方法实施例中,详情参见上述实 施例的描述,在此不再赘述。
[0110] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现。所述的程序可以存储于可读取存储介质中,所述 的存储介质,如随机存储器、闪存、只读存储器、可编程只读存储器、电可擦写可编程存储 器、寄存器等。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件执行本发 明各个实施例所述的方法。
[0111] 以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应 涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
【主权项】
1. 一种密钥发散方法,其特征在于,包括: 获取预设的计数值、终端序列号和预配置的基本发散密钥,生成初始密钥; 将当前计数器的计数值转化为移位计数器的计数值; 获取移位计数器的计数值比特位为1的个数,将比特位为1的个数作为发散次数,按预 先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发散次数,对初始密钥进 行发散,生成优选的发散密钥,或者, 获取移位计数器的计数值比特位为0的个数,将比特位为0的个数作为发散次数,按预 先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发散次数,对初始密钥进 行发散,生成优选的发散密钥。2. 如权利要求1所述密钥发散方法,其特征在于,所述获取预设的计数值、终端序列号 和预配置的基本发散密钥,生成初始密钥,具体为: 将预先设定的计数值和终端序列号组合,生成初始的混合数据; 利用散列函数,获取初始的混合数据的散列值和预配置的基本发散密钥的散列值; 利用混合数据的散列值和预配置的基本发散密钥的散列值,进行异或运算,生成初始 密钥。3. 如权利要求1所述密钥发散方法,其特征在于,所述将当前计数器的计数值转化为 移位计数器的计数值,具体为: 获取当前计数器的比特位为1的个数,获取当前计数器的比特位为〇的个数; 判断当前计数器的比特位为1的个数是否小于预设阀值,判断当前计数器的比特位为 〇的个数是否小于预设阀值; 若是,将当前计数器的计数值转化为移位计数器的计数值; 若否,按当前计数器的计数值的位数,将当前计数器的计数值分为高位计数值和低位 计数值,将高位计数值进行位移,底位计数值补1或者补〇,通过移位和异或运算,将当前计 数器的计数值转化为移位计数器的计数值。4. 如权利要求1所述密钥发散方法,其特征在于,所述预先设定的顺序包括从左往右 的顺序以及从右往左中的至少一种。5. 如权利要求1或3所述密钥发散方法,其特征在于,当预先设定的顺序为从左往右的 顺序时,所述获取移位计数器的计数值比特位为1的个数,将比特位为1的个数作为发散次 数,按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发散次数,对初始 密钥进行发散,生成优选的发散密钥,具体为: S1,获取移位计数器当前的计数值,将移位计数器当前的计数值和终端序列号组合,生 成当前的混合数据; 52, 利用散列函数,获取当前的混合数据的散列值和初始密钥的散列值; 53, 利用获取到的终端序列号的散列值和移位计数器当前的计数值的散列值,进行异 或运算,生成当前的发散密钥; 循环执行步骤S2和S3,按照从左往右的顺序,对当前的发散密钥进行发散,直至移位 计数器当前的计数值不存在值为1的比特位,选出优选的发散密钥。6. -种密钥发散装置,其特征在于,包括: 初始密钥生成模块,用于获取预设的计数值、终端序列号和预配置的基本发散密钥,生 成初始密钥; 计数值转化模块,用于将当前计数器的计数值转化为移位计数器的计数值; 密钥发散模块,用于获取移位计数器的计数值比特位为1的个数,将比特位为1的个数 作为发散次数,按预先设定的顺序、移位计数器的计数值、终端序列号、初始密钥以及发散 次数,对初始密钥进行发散,生成优选的发散密钥,或者,用于获取移位计数器的计数值比 特位为0的个数,将比特位为0的个数作为发散次数,按预先设定的顺序、移位计数器的计 数值、终端序列号、初始密钥以及发散次数,对初始密钥进行发散,生成优选的发散密钥。7. 如权利要求6所述密钥发散装置,其特征在于,所述初始密钥生成模块,具体包括: 初始的混合数据生成单元,用于将预先设定的计数值和终端序列号组合,生成初始的 混合数据; 第一散列值获取单元,用于利用散列函数,获取初始的混合数据的散列值和预配置的 基本发散密钥的散列值; 初始密钥生成单元,用于利用混合数据的散列值和预配置的基本发散密钥的散列值, 进行异或运算,生成初始密钥。8. 如权利要求6所述密钥发散装置,其特征在于,所述计数值转化模块包括: 个数获取单元,用于获取当前计数器的比特位为1的个数,获取当前计数器的比特位 为〇的个数; 个数判断单元,用于判断当前计数器的比特位为1的个数是否小于预设阀值,判断当 前计数器的比特位为0的个数是否小于预设阀值; 转化单元,用于若是,将当前计数器的计数值转化为移位计数器的计数值; 计数值转化单元,用于若否,按当前计数器的计数值的位数,将当前计数器的计数值分 为高位计数值和低位计数值,将高位计数值进行位移,底位计数值补1或者补0,通过移位 和异或运算,将当前计数器的计数值转化为移位计数器的计数值。9. 如权利要求6所述密钥发散装置,其特征在于,所述预先设定的顺序包括从左往右 的顺序以及从右往左中的至少一种。10. 如权利要求6或9所述密钥发散装置,其特征在于,所述密钥发散模块,包括: 当前的混合数据生成单元,用于获取移位计数器当前的计数值,将移位计数器当前的 计数值和终端序列号组合,生成当前的混合数据; 第二散列值获取单元,用于利用散列函数,获取当前的混合数据的散列值和初始密钥 的散列值; 发散密钥生成单元,用于利用获取到的终端序列号的散列值和移位计数器当前的计数 值的散列值,进行异或运算,生成当前的发散密钥; 发散密钥选出单元,用于循环执行所述第二散列值获取单元和所述发散密钥生成单元 中的步骤,按照从左往右的顺序,对当前的发散密钥进行发散,直至移位计数器当前的计数 值不存在值为1的比特位,选出优选的发散密钥。
【文档编号】H04L9/06GK106034020SQ201510103409
【公开日】2016年10月19日
【申请日】2015年3月9日
【发明人】黄俊斌, 李华, 陈候进, 欧阳伟权, 李鹤祥
【申请人】深圳华智融科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1