一种密钥生成和验证的方法、设备及系统与流程

文档序号:12037594阅读:365来源:国知局
一种密钥生成和验证的方法、设备及系统与流程

本发明涉及数据安全领域,尤其涉及一种密钥生成和验证的方法、设备及系统。



背景技术:

随着移动网络与智能手机的广泛普及,越来越多的用户选择使用方便快捷的网上银行和移动支付等业务。但随之而来的是居高不下的密钥安全性问题,由于密钥的泄露造成损失的案件时有发生,因此密钥的安全性成为了用户关注的焦点。

现有技术中,利用混沌原理产生密钥的方法是生成一个初始密码,然后进行迭代运算得到随机数,将得到的随机数按照设定的变换输出为新的随机数,最后将变换后得到的新的随机数作为密钥。另外,基于时间同步机制的密钥验证方法对时间的同步性要求较高,当时间误差较大时,密钥不匹配,导致用户密钥验证失败。并且,现有技术需要模块间的连接交互,并且计算结果依赖模块间的相互传输,没有实现线下的同步方式,中间过程容易受到木马病毒或恶意程序等攻击以窃取用户密钥信息,对用户账户安全构成威胁。



技术实现要素:

为解决上述技术问题,本发明实施例期望提供一种密钥生成和验证的方法、设备及系统,每次均生成无序不重复且无规律的密钥,以线下的方式作为同步条件,不受网络传输速度的影响,具有较高的安全性。

本发明的技术方案是这样实现的:

第一方面,本发明实施例提供了一种密钥生成方法,所述方法应用于客户端,所述方法包括:

获取客户端当前迭代计算次数n所对应的密钥种子,并将所述密钥种子发送到服务器;其中,所述密钥种子包括当前迭代计算对应的初始值x0和可调参数μ;

根据所述密钥种子以及预设的logistic映射算子,生成当前迭代计算对应的小数序列x;

根据所述小数序列x生成对应的密钥k,并将所述密钥k发送到所述服务器;

将所述小数序列x保存,并将所述小数序列x中的最后一个元素作为下次迭代计算对应密钥种子的初始值x0'。

在上述方案中,根据小数序列x生成对应的密钥k,具体包括:

按照预设的转换策略将所述小数序列x转换成对应的二值序列;

将所述二值序列转换成所述小数序列x对应的整数序列p;其中,所述整数序列p中的每一个元素p为属于[0,9]中的自然数;

将所述客户端的当前迭代次数n按照预设的编码规则插入到所述整数序列p中生成所述密钥k。

在上述方案中,按照预设的转换策略将所述小数序列x转换成对应的二值序列,包括:

将所述小数序列x按照第一转换规则转换为对应的第一二值序列;

其中,第一转换规则为:当小数序列x的元素xk的值大于等于0.5时,将xk的值转换成1;当小数序列x的元素xk的值小于0.5时,将xk的值转换成0。

在上述方案中,将所述小数序列x按照第一转换规则转换为对应的第一二值序列之后,所述方法还包括:

将第一二值序列的逐个元素与预设的第二二值序列的逐个元素对应进行逻辑运算,获得对应的逻辑运算之后的二值序列结果,并将第二二值序列更新为逻辑运算之后的二值序列结果。

在上述方案中,将所述客户端的当前迭代次数n按照预设的编码规则插入 到所述整数序列p中生成所述密钥k,包括:

获取所述当前迭代次数n对应的十位数字和个位数字;

将所述当前迭代次数n对应的个位数字根据第一规则插入至所述整数序列p;并将所述当前迭代次数n对应的十位数字根据第二规则插入至所述整数序列p;其中,所述第一规则包括:将所述整数序列p的第三位数字对3取模运算得到w1,将所述当前迭代次数n对应的个位数字插入至所述整数序列p从右至左方向的第w1位与第w1+1位之间;第二规则包括:将所述整数序列p的第四位数字对3取模运算得到w2,并将所述当前迭代次数n对应的个位数字插入至所述整数序列p从左至右方向的第w2位与第w2+1位之间。

第二方面,本发明实施例提供了一种密钥验证方法,所述方法应用于服务器认证端,所述方法包括:

接收客户端发送的密钥种子与密钥k;

确定所述密钥k的中间两位数字,对所述中间两位数字分别做模运算得到客户端当前迭代次数n对应的十位数a和个位数b;

确定服务器认证端需要迭代的次数y;

根据所述密钥种子以及预设的logistic映射算子,经过y次迭代计算生成小数序列x';其中,所述小数序列x'与所述小数序列x长度相同;

根据所述小数序列x'生成对应的密钥k';

将所述密钥k'与所述密钥k进行对比,若匹配则保存整数序列p'并更新服务器认证端的历史迭代次数n'。

在上述方案中,确定所述密钥k的中间两位数字,对所述中间两位数字分别做模运算得到客户端当前迭代次数n对应的十位数a和个位数b,包括:

确定所述密钥k的中间两位数字;分别对所述密钥k的中间两位数字对3取模运算;根据所述模3运算的结果确定所述客户端当前迭代次数n的十位数a和个位数b在密钥k中的位置信息;根据所述位置信息得到所述客户端当前迭代次数n的十位数a和个位数b的值。

在上述方案中,确定服务器认证端需要迭代的次数y,包括:

确定服务器认证端的历史迭代次数n';将所述当前迭代次数n的十位数a和个位数b组成一个两位数记为z;当z>n'时,则服务器认证端需要迭代的次数y=z-n';当z<n'或者z=n'时,则服务器认证端需要迭代的次数y=z-n′+100。

在上述方案中,根据所述小数序列x'生成对应的密钥k',包括:

按照预设的转换策略将所述小数序列x'转换成对应的二值序列;

将所述二值序列转换成所述小数序列x'对应的整数序列p';其中,所述整数序列p'中的每一个元素p'为[0,9]的自然数;

将所述服务器认证端的当前迭代次数y按照预设的编码规则插入到所述整数序列p'中生成所述密钥k'。

在上述方案中,按照预设的转换策略将小数序列x'转换成对应的二值序列,包括:

将所述小数序列x'按照第一转换规则转换为对应的第三二值序列;其中,第一预设规则为:当小数序列x'的元素x'k的值大于0.5时,将x'k的值转换成1;当小数序列x'的元素x'k的值小于0.5时,将x'k的值转换成0。

在上述方案中,将所述小数序列x'按照第一转换规则转换为对应的第三二值序列之后,所述方法还包括:

将第三二值序列的逐个元素与预设的第四二值序列的逐个元素对应进行逻辑运算,获得对应的逻辑运算之后的二值序列结果,并将第四二值序列更新为逻辑运算之后的二值序列结果。

在上述方案中,将服务器认证端的当前迭代次数y按照预设的编码规则插入到整数序列p'中生成密钥k',包括:

获取所述当前迭代次数y对应的十位数字和个位数字;

将所述当前迭代次数y对应的个位数字根据第一规则插入至所述整数序列p';并将所述当前迭代次数y对应的十位数字根据第二规则插入至所述整数序 列p';其中,所述第一规则包括:将所述整数序列p'的第三位数字对3取模运算得到w1,将所述当前迭代次数y对应的个位数字插入至所述整数序列p'从右至左方向的第w1位与第w1+1位之间;第二规则包括:将所述整数序列p'的第四位数字对3取模运算得到w2,并将所述当前迭代次数y对应的个位数字插入至所述整数序列p'从左至右方向的第w2位与第w2+1位之间。

第三方面,本发明实施例提供了一种客户端,所述客户端包括:获取模块、发送模块、第一生成模块、第二生成模块和保存模块;其中,

所述获取模块,用于获取客户端当前迭代计算次数n所对应的密钥种子,并将所述密钥种子发送到服务器;其中,所述密钥种子包括当前迭代计算对应的初始值x0和可调参数μ;

所述第一生成模块,用于根据所述密钥种子以及预设的logistic映射算子,生成当前迭代计算对应的小数序列x;

所述第二生成模块,用于根据所述小数序列x生成对应的密钥k;

所述发送模块,用于将所述密钥种子发送到服务器;以及,将所述密钥k发送到所述服务器;

所述保存模块,用于将所述小数序列x保存,并将所述小数序列x中的最后一个元素作为下次迭代计算对应密钥种子的初始值x0'。

在上述方案中,所述第二生成模块,包括第一转换子模块、第二转换子模块和第一插入子模块;其中,

所述第一转换子模块,用于按照预设的转换策略将所述小数序列x转换成对应的二值序列;

所述第二转换子模块,用于将所述二值序列转换成所述小数序列x对应的整数序列p;其中,所述整数序列p中的每一个元素p为属于[0,9]中的自然数;

所述第一插入子模块,用于将所述客户端的当前迭代次数n按照预设的编码规则插入到所述整数序列p中生成所述密钥k。

在上述方案中,所述第一转换子模块,用于将所述小数序列x按照第一转 换规则转换为对应的第一二值序列;其中,第一转换规则为:当小数序列x的元素xk的值大于等于0.5时,将xk的值转换成1;当小数序列x的元素xk的值小于0.5时,将xk的值转换成0。

在上述方案中,所述第一转换子模块,还用于将第一二值序列的逐个元素与预设的第二二值序列的逐个元素对应进行逻辑运算,获得对应的逻辑运算之后的二值序列结果,并将第二二值序列更新为逻辑运算之后的二值序列结果。

在上述方案中,所述第一插入子模块,用于:

获取所述当前迭代次数n对应的十位数字和个位数字;

将所述当前迭代次数n对应的个位数字根据第一规则插入至所述整数序列p;并将所述当前迭代次数n对应的十位数字根据第二规则插入至所述整数序列p;其中,所述第一规则包括:将所述整数序列p的第三位数字对3取模运算得到w1,将所述当前迭代次数n对应的个位数字插入至所述整数序列p从右至左方向的第w1位与第w1+1位之间;第二规则包括:将所述整数序列p的第四位数字对3取模运算得到w2,并将所述当前迭代次数n对应的个位数字插入至所述整数序列p从左至右方向的第w2位与第w2+1位之间。

第四方面,本发明实施例提供了一种服务器,所述服务器包括:接收模块、第一确定模块、第二确定模块、第三生成模块、第四生成模块和对比模块;其中,

所述接收模块,用于接收客户端发送的密钥种子与密钥k;

所述第一确定模块,用于确定所述密钥k的中间两位数字,对所述中间两位数字分别做模运算得到客户端当前迭代次数n对应的十位数a和个位数b;

所述第二确定模块,用于确定服务器认证端需要迭代的次数y;

所述第三生成模块,用于根据所述密钥种子以及预设的logistic映射算子,经过y次迭代计算生成小数序列x';其中,所述小数序列x'与所述小数序列x长度相同;

所述第四生成模块,用于根据所述小数序列x'生成对应的密钥k';

所述对比模块,用于将所述密钥k'与所述密钥k进行对比,若匹配则保存整数序列p'并更新服务器认证端的历史迭代次数n'。

在上述方案中,所述第一确定模块,用于确定所述密钥k的中间两位数字;分别对所述密钥k的中间两位数字对3取模运算;根据所述模3运算的结果确定所述客户端当前迭代次数n的十位数a和个位数b在密钥k中的位置信息;根据所述位置信息得到所述客户端当前迭代次数n的十位数a和个位数b的值。

在上述方案中,所述第二确定模块,用于确定服务器认证端的历史迭代次数n';将所述当前迭代次数n的十位数a和个位数b组成一个两位数记为z;当z>n'时,则服务器认证端需要迭代的次数y=z-n';当z<n'或者z=n'时,则服务器认证端需要迭代的次数y=z-n'+100。

在上述方案中,所述第四生成模块,包括:第三转换子模块,第四转换子模块和第二插入子模块;其中,

所述第三转换子模块,用于按照预设的转换策略将所述小数序列x'转换成对应的二值序列;

所述第四转换子模块,用于将所述二值序列转换成所述小数序列x'对应的整数序列p';其中,所述整数序列p'中的每一个元素p'为[0,9]的自然数;

所述第二插入子模块,用于将所述服务器认证端的当前迭代次数y按照预设的编码规则插入到所述整数序列p'中生成所述密钥k'。

在上述方案中,所述第三转换子模块,用于将所述小数序列x'按照第一转换规则转换为对应的第三二值序列;其中,第一预设规则为:当小数序列x'的元素x'k的值大于0.5时,将x'k的值转换成1;当小数序列x'的元素x'k的值小于0.5时,将x'k的值转换成0。

在上述方案中,所述第三转换子模块,还用于将第三二值序列的逐个元素与预设的第四二值序列的逐个元素对应进行逻辑运算,获得对应的逻辑运算之后的二值序列结果,并将第四二值序列更新为逻辑运算之后的二值序列结果。

在上述方案中,所述第二插入子模块,用于:

获取所述当前迭代次数y对应的十位数字和个位数字;

将所述当前迭代次数y对应的个位数字根据第一规则插入至所述整数序列p';并将所述当前迭代次数y对应的十位数字根据第二规则插入至所述整数序列p';其中,所述第一规则包括:将所述整数序列p'的第三位数字对3取模运算得到w1,将所述当前迭代次数y对应的个位数字插入至所述整数序列p'从右至左方向的第w1位与第w1+1位之间;第二规则包括:将所述整数序列p'的第四位数字对3取模运算得到w2,并将所述当前迭代次数y对应的个位数字插入至所述整数序列p'从左至右方向的第w2位与第w2+1位之间。

第五方面,本发明实施例提供了一种密钥验证系统,所述系统包括:客户端和服务器,其中,

所述客户端,用于:

获取所述客户端当前迭代计算次数n所对应的密钥种子,并将所述密钥种子发送到所述服务器;其中,所述密钥种子包括当前迭代计算对应的初始值x0和可调参数μ;以及,

根据所述密钥种子以及预设的logistic映射算子,生成当前迭代计算对应的小数序列x;以及,

根据所述小数序列x生成对应的密钥k,并将所述密钥k发送到所述服务器;以及,

将所述小数序列x保存,并将所述小数序列x中的最后一个元素作为下次迭代计算对应密钥种子的初始值x0';

所述服务器,用于:

接收所述客户端发送的密钥种子与密钥k;

确定所述密钥k的中间两位数字,对所述中间两位数字分别做模运算得到客户端当前迭代次数n对应的十位数a和个位数b;

确定服务器认证端需要迭代的次数y;

根据所述密钥种子以及预设的logistic映射算子,经过y次迭代计算生成小 数序列x';其中,所述小数序列x'与所述小数序列x长度相同;

根据所述小数序列x'生成对应的密钥k';

将所述密钥k'与所述密钥k进行对比,若匹配则保存整数序列p'并更新服务器认证端的历史迭代次数n'。

本发明实施例提供了一种密钥生成和验证的方法、设备及系统,将生成密钥的迭代次数插入至根据logistic映射算子生成的密钥中,使得对端在验证密钥时能够以迭代次数作为同步条件来进行验证,从而不仅能够生成无序不重复且无规律的密钥,而且无需将时间作为同步条件,避免了网络传输速度的影响,具有较高的安全性。。

附图说明

图1为本发明实施例提供的一种应用场景;

图2为本发明实施例一提供的一种密钥生成的方法流程示意图;

图3为本发明实施例一提供的混沌动力系统波形图;

图4为本发明实施例一提供的根据小数序列x生成对应的密钥k的流程示意图;

图5为本发明实施例一提供的预设编码规则流程示意图;

图6为本发明实施例二提供的一种密钥验证的方法流程示意图;

图7为本发明实施例二提供的根据小数序列x'生成对应的密钥k'的流程示意图;

图8为本发明实施例二提供的预设编码规则流程示意图;

图9为本发明实施例三提供的一种客户端的结构示意图;

图10为本发明实施例三提供的另一种客户端的结构示意图;

图11为本发明实施例四提供的一种服务器的结构示意图;

图12为本发明实施例四提供的另一种服务器的结构示意图;

图13为本发明实施例五提供的一种密钥验证系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

以图1所示的本发明实施例提供的应用场景为例,可以分为密钥生成端(通常处于客户端一侧)以及密钥认证端(通常处于服务器一侧)。本发明实施例的基本思想是,客户端根据logistic映射算子生成密钥,并将密钥种子以及密钥发送至服务器;并且通过生成密钥的迭代计算次数作为同步条件,不仅能够生成无序不重复且无规律的密钥,而且无需将时间作为同步条件,避免了网络传输速度的影响,具有较高的安全性。

实施例一

基于上述的基本思想,参见图2,其示出了本发明实施例提供一种密钥生成方法,可以应用于生成密钥的客户端一侧,所述方法可以包括:

s101、获取客户端当前迭代计算次数n所对应的密钥种子,并将所述密钥种子发送到服务器;

其中,所述密钥种子可以包括当前迭代计算对应的初始值x0和可调参数μ。

需要说明的是,每一次迭代计算均需要对应一个密钥种子。

优选地,当客户端首次进行迭代计算时,可以根据客户端对应的用户标识生成初始迭代计算所需要的密钥种子;可以理解地,利用用户标识是由于每个用户的标识是唯一的,因此生成的密钥种子也与其他用户不同,进而生成的密钥也不会以其他密钥造成重复。需要说明的是,用户身份标识可以是除了数字串以外的其他字符或字母组合,本发明实施例对此不做具体限定。

在具体实现过程中,利用用户标识作为随机数生成种子生成一个在(0,1)之间的随机值作为首次迭代计算时对应的密钥种子中的初始值x0,另外,μ∈(3.5699456...,4],可调参数μ在其取值范围内随机进行取值,但是当可调参数μ的取值确定后,在后续的迭代计算时不再发生变化;例如,假设用户标识为一个数字串31470023,此时取x0=0.31470023就能够满足初始值x0是取值在(0,1) 之间这一条件。

优选地,当客户端非首次进行迭代计算时,密钥种子中的初始值x0可以选取为前次迭代计算所生成的小数序列中的最后一个元素;

需要说明的是,客户端在生成密钥种子后,可以在当前迭代计算过程中的任意时刻将所述密钥种子发送给服务器认证端,本实施例对此不做赘述,从而保证客户端与服务器认证端的密钥种子是相同的。

s102、根据密钥种子以及预设的logistic映射算子,生成当前迭代计算对应的小数序列x。

其中,预设的logistic映射算子,可以通过以下式(1)表示:

xk+1=μxk(1-xk)(1)

其中,0≤μ≤4,xk∈(0,1)。

需要说明的是,在混沌动力系统中,当可调参数μ∈(3.5699456...,4]时,由初始值x0产生的数值序列在0到1之间上下波动,从图3可见,所述数值序列是非周期,不收敛的,随机性强,具有很好的安全性。图3中横坐标为数值序列的元素序号,纵坐标为数值序列中元素序号对应的元素值。在图3所示内容中,小数序列x的元素序号从整数0到整数500,每一次计算得到的第一小数序列x元素值均在0到1之间。

在具体实现过程中,可以将步骤s101中获取得到的密钥种子代入式1所示的logistic映射算子生成一个长度为4的倍数的小数序列x。这里,优选可以生成一个长度为24的小数序列,该小数序列为x=[x1,x2...,x24]。生成一个小数序列x后,客户端就可以记录当前的迭代次数n。由长度为24的小数序列通过后续的步骤可以生成一个6位的密钥,是为了考虑到目前通常的银行卡以及网上支付都采用6位密码,并且6位数字安全性较高,同时便于人脑记忆,因此本实施例中亦采用的密钥长度为6。

s103、根据小数序列x生成对应的密钥k,并将密钥k发送到服务器认证端;

示例性地,参见图4,步骤s103具体实现过程可以包括步骤s1031至s1033:

s1031、按照预设的转换策略将小数序列x转换成对应的二值序列。

在具体实现过程中,步骤s1031可以包括:

将小数序列x按照第一转换规则转换为对应的第一二值序列;其中,第一转换规则为:当小数序列x的元素xk的值大于等于0.5时,将xk的值转换成1;当小数序列x的元素xk的值小于0.5时,将xk的值转换成0。所以,第一二值序列的长度与小数序列x的长度一致。例如,第一二值序列m=010000100001011000000001。

优选的,在得到第一二值序列m后,为了增加密钥的安全性,还可以将第一二值序列的逐个元素与预设的第二二值序列的逐个元素对应进行逻辑运算,获得对应的逻辑运算之后的二值序列结果,并将第二二值序列更新为逻辑运算之后的二值序列结果;这里可以将第一二值序列m的逐个元素与预设的第二二值序列d0的逐个元素进行异或运算,并将预设的第二二值序列d0的值更新为异或运算后的二值序列结果。

具体的,在首次迭代计算时,用户可自行设置预设的第二二值序列d0的初始值。这里设d0=0000000000000000000000000,将预设的第二二值序列d0与上述举例的第一二值序列m进行异或运算,将预设的第二二值序列d0的值更新为异或运算后的二值序列结果,此时d0=010000100001011000000001,并将更新后的d0作为下一次迭代计算对应的第二二值序列。

可以理解地,伴随着第二二值序列d0的值更新之后,每次迭代计算对应的第二二值序列均不相同,从而提高了密钥的安全性,防止了密钥被破译的风险。

s1032、将二值序列转换成小数序列x对应的整数序列p;

其中,整数序列p中的每一个元素p为[0,9]的自然数。

在具体实现过程中,可以将步骤s1031中所得到的二值序列每4位转换成一个10进制数,并对所得的每一个10进制数对10取模运算,生成小数序列x对应的整数序列p。

该整数序列p的长度为小数序列x长度的四分之一。这里对所得的每一个10进制数对10进行取模运算是为了保证得到的结果均为自然数。

经过上述计算,以上述更新后的第二二值序列d0为例,小数序列x对应的整数序列p=421601。

s1033、将客户端的当前迭代次数n按照预设的编码规则插入到整数序列p中生成密钥k,并将密钥k发送到服务器认证端。

示例性地,参见图5,将客户端的当前迭代次数n按照预设的编码规则插入到整数序列p中生成密钥k,具体实现过程可以包括步骤s10331至s10332:

s10331:获取当前迭代次数n对应的十位数字和个位数字;

具体实现过程中,当前迭代次数n为自然数时,将当前迭代次数n作为个位数字,将自然数0作为十位数字,例如,当前迭代次数n为4次,十位数字是0,个位数字是4;当前迭代次数n为三位数字时,将n对100做模运算,获取模运算结果中的十位数字和个位数字。这里将n对100做模运算是为了保证所得结果为两位数,以便后续按照预设的编码规则插入到整数序列p中。

优选的,本实施例以迭代次数为两位数进行说明。获取当前迭代次数n的个位数字和十位数字,将该个位数字和十位数字分别插入到步骤s1032生成的整数序列p中。具体插入的位置根据整数序列p中间的两位数字得到。

s10332:将当前迭代次数n对应的个位数字根据第一规则插入至整数序列p;并将当前迭代次数n对应的十位数字根据第二规则插入至整数序列p;

其中,第一规则包括:将整数序列p的第三位数字对3取模运算得到w1,当前迭代次数n对应的个位数字插入至整数序列p从右至左方向的第w1位与第w1+1位之间。

第二规则包括:将整数序列p的第四位数字对3取模运算得到w2,当前迭代次数n对应的个位数字插入至整数序列p从左至右方向的第w2位与第w2+1位之间。

这里,对3取模运算是为了确保无论如何插入,整数序列p的中间两位数 都不会变,并且保证了插入的位置可以保证最大的随机性。由于整数序列p的每一个元素p为[0,9]的自然数,而且本实施例生成的是6位密钥,因此,整数序列p的中间两位数依次为第三位数和第四位数。从自然数0到9依次对3取模运算得到的值均在[0,2]范围内,这就表明按照第二预设规则插入n的个位数字和十位数字的位置不会插入6位密钥的中间两位数字中间,也就不会改变中间两位数字的位置,并且n的个位数字或十位数字插入位置的可能性有三个,随机性最大,充分利用了可插入的位置。

这里还需要补充说明的是,若将整数序列p的第三位和第四位数字对2取模运算也能够保证不改变中间两位数,但是由于从自然数0到9依次对2取模运算得到的值均在[0,1]范围内,n的个位数字或十位数字插入位置的可能性只有两个,随机性不如对3取模运算,因此本实施例选取对3取模运算为最优处理方法。

例如,当n=15时,n的个位数字b=5,n的十位数字a=1。首先从步骤s105中获取的序列p=421601中找出中间两位数字,分别对3取模处理,作为数字a、b从两边插入序列p的位置。序列p的中间两位数为1、6,设c=1,d=6,c取模运算后等于1,则将a从左侧插入序列p第一位数字后,即4121601;d取模运算后等于0,则将b插入序列p的最后一位数字之后,即41216015。因此,当n=15时,将其插入到序列p中之后生成了密钥k=41216015。

可以理解地,本领域技术人员也可以通过其他的编码运算方式将当前迭代次数n插入至整数序列p,本实施例不再赘述。

还需要说明的是,上述过程步骤s1031至s1033是本发明实施例提供的一种根据小数序列生成密钥的优选实现过程;可以理解地,本领域技术人员也可以根据本实施例技术方案的启发通过其他方式来实现根据小数序列生成密钥的过程,本实施例在此不再赘述。

s104、将小数序列x保存,并将小数序列x中的最后一个元素作为下次迭代计算对应密钥种子的初始值x0'。

可以理解地,每一次迭代计算均生成一个新的小数序列,并且以每一个新的小数序列的最后一个数值作为下次迭代计算对应密钥种子的初始值。

需要说明的是,步骤s101至s104属于一次完整的生成密钥的迭代计算过程,而通常密钥也可以通过多次迭代生成,因此,可选地,如图1所示的虚线框所示,本实施例还可以包括:

s105、客户端根据接收到的控制指令,将当前迭代次数n叠加一,并转至步骤s101进行下一次生成密钥的迭代计算。

需要说明的是,每生成一次小数序列x,迭代次数增加一次。优选地,可以在客户端上设置用于生成密钥的物理或虚拟按键,当用户每按下一次按键,客户端就会完成一次如步骤s101至s104所述的迭代计算,并在生成密钥后,当前迭代次数n更新为n+1。当用户连续按下多次生成密钥的按键时,客户端就会完成多次迭代计算,优选地,每一次迭代计算均生成一个长度为4的倍数的小数序列,当所有迭代计算完成后生成一个密钥。例如,用户连续按下生成密钥的按键20次,此时,进行20次迭代计算,n=n+20,在20次迭代计算完成后生成一个密钥。

本实施例提供了一种客户端生成密钥的方法具体流程,将生成密钥的迭代次数插入至根据logistic映射算子生成的密钥中,使得对端在验证密钥时能够以迭代次数作为同步条件来进行验证,从而不仅能够生成无序不重复且无规律的密钥,而且无需将时间作为同步条件,避免了网络传输速度的影响,具有较高的安全性。

实施例二

基于上述实施例相同的技术构思,参见图6,其示出了本发明实施例提供一种密钥验证方法,应用于服务器认证端一侧,所述方法可以包括:

s201、接收客户端发送的密钥种子与密钥k。

为了使客户端和服务器认证端生成的密钥能够匹配,就需要保证客户端与服务器认证端的密钥种子是相同的,因此服务器认证端接收客户端发送的密钥 种子,与客户端有相同的初始值x0和可调参数μ。

同时,通过网络传输,服务器认证端接收到客户端发送的密钥k。

s202、确定密钥k的中间两位数字,对中间两位数字分别做模运算得到客户端当前迭代次数n对应的的十位数a和个位数b。

在具体实现过程中,步骤s202可以包括:

确定密钥k的中间两位数字;分别对密钥k的中间两位数字对3取模运算;根据所述模3运算的结果确定所述客户端当前迭代次数n的十位数a和个位数b在密钥k中的位置信息;根据所述位置信息得到所述客户端当前迭代次数n的十位数a和个位数b的值。

在步骤s10332中获得的密钥k=41216015,取k值的中间两位数字,即1、6,设c'=1,d'=6,c'取模运算后等于1,则从k左侧数第一位数后提取数字作为a,即a=1;d'取模运算后等于0,则从k中取最后一位作为b,即b=5。

s203、确定服务器认证端需要迭代的次数y。

在具体实现过程中,步骤s203可以包括:

确定服务器认证端的历史迭代次数n';将所述当前迭代次数n的十位数a和个位数b组成一个两位数记为z;当z>n'时,则服务器认证端需要迭代的次数y=z-n';当z<n'或者z=n'时,则服务器认证端需要迭代的次数y=z-n′+100。

示例性的,设服务器认证端历史迭代次数为n',n'的初始值等于0。在服务器认证端第一次生成密钥,即n'=0时,由上述步骤s202可得z=15,z大于n',所以服务器认证端需要迭代的次数y=15-0=15。

这里结合实际例子来说明步骤s10331中客户端当前迭代次数n采用两位数字的原因。假设上一次客户端与服务器认证端成功验证时的迭代次数n=n'=31,此时,用户在客户端连续点击生成密钥的按键103次,即客户端迭代计算了103次后生成整数序列p,此时客户端当前的迭代次数n=31+103=134。由于n>100,因此将n对100做模运算,即客户端当前迭代次数n=n%100=34。 将所得客户端当前迭代次数n,即将34插入整数序列p中生成密钥k,向服务器认证端发起验证。

服务器认证端通过密钥k提取出次数z=34,由于此时z>n',因此服务器认证端需要迭代的次数y=z-n',即y=34-31=3。服务器认证端首先进行3次迭代计算,但是经过3次迭代计算后服务器认证端生成的密钥与客户端生成的密钥不相匹配,因此,服务器认证端会继续进行迭代计算,迭代计算的次数为y=z-n'+100,即y=34-31+100=103次。当服务器认证端迭代到103次时与客户端匹配成功。

若用户在客户端连续点击生成密钥的按键203次、303次、403次甚至更多次,则服务器认证端会按照上述方法继续迭代计算203次、303次、403次进行匹配验证。

虽然客户端当前迭代次数为三位数时也可验证成功,但是,用户在实际操作过程中连续多次甚至超过百次点击生成密钥的按键的可能性不大,因此在本发明实施例中无需考虑用户连续多次点击生成密钥的按键超过百次的情况,服务器认证端也无需继续向后做迭代计算进行匹配验证。

s204、根据密钥种子以及预设的logistic映射算子,经过y次迭代计算生成小数序列x';

其中,所述小数序列x'与所述小数序列x长度相同。

当前密钥迭代式为logistic映射算子,通过logistic映射算子每完成一次迭代计算,就生成一个小数序列x'。在继续下一次的迭代计算时,将小数序列x'的最后一个元素作为下一次迭代计算的初始值x0进行下一次迭代计算。经过y次迭代计算后,最终生成一个小数序列x'。

logistic映射算子可以通过步骤s102中的公式(1)确定。在混沌动力系统中,当可调参数μ∈(3.5699456...,4]时,由初始值x0产生的数值序列在0到1之间上下波动,是非周期,不收敛的,随机性强,具有很好的安全性。具体示例可以参照步骤s102的说明,本发明实施例在此不再赘述。

s205、根据小数序列x'生成对应的密钥k';

示例性的,参见图7,步骤s205具体实现过程可以包括步骤s2051至s2053:

s2051、按照预设的转换策略将小数序列x'转换成对应的二值序列。

在具体实现过程中,步骤s2051可以包括:

将小数序列x'按照第一转换规则转换为对应的第三二值序列;其中,第一预设规则为:当小数序列x'的元素x'k的值大于0.5时,将x'k的值转换成1;当小数序列x'的元素x'k的值小于0.5时,将x'k的值转换成0。所以,第三二值序列的长度与小数序列x'的长度一致。将步骤s204中生成的小数序列x'中的每一个元素逐一按照预设的转换策略转换成0或1,生成一个24位的第三二值序列m'。

优选的,在得到第三二值序列m'后,为了增加密钥的安全性,这里可以设置一个预设的第四二值序列d0'。将预设的第四二值序列d0'与第三二值序列m'进行异或运算,并将预设的第四二值序列d0'的值更新为异或运算后的值。

与步骤s1031中预设的第二二值序列d0相同,预设的第四二值序列d0'同样为一个初始值,这里设d0'=0000000000000000000000000,参照步骤s1031的方法将d0'与m'进行异或运算,并将预设的第四二值序列d0'的值更新为异或运算后的二值序列结果。

可以理解地,伴随着第二二值序列d0的值更新之后,每次迭代计算对应的第二二值序列均不相同,从而提高了密钥的安全性,防止了密钥被破译的风险。

s2052、将二值序列转换成小数序列x'对应的整数序列p';

其中,整数序列p'中的每一个元素p'为[0,9]的自然数。

在具体实现过程中,可以将步骤s2051中得到的二值序列每4位转换成一个10进制数,并对所得每一个10进制数对10取模运算,生成小数序列x'对应的整数序列p'。该整数序列p'的长度为小数序列x'长度的四分之一。

s2053、将服务器认证端的当前迭代次数y按照预设的编码规则插入到整数序列p'中生成密钥k'。

本发明实施例以迭代次数作为客户端与服务器认证端的同步条件,不受网络延迟导致的验证时客户端密钥与服务器认证端密钥不匹配的影响,将服务器认证端的当前迭代次数y以同样的规则插入到整数序列p'中生成密钥k'。

示例性地,参见图8,将服务器认证端的当前迭代次数y按照预设的编码规则插入到整数序列p'中生成密钥k',具体实现过程可以包括步骤s20531至s20532:

s20531:获取当前迭代次数y对应的十位数字和个位数字;

具体实现过程中,当前迭代次数y为自然数时,将当前迭代次数y作为个位数字,将自然数0作为十位数字;当前迭代次数y为三位数字时,将y对100做模运算,获取模运算结果中的十位数字和个位数字。

具体示例可以参照步骤s10331的说明,本发明实施例在此不再赘述。

s20532:将当前迭代次数y对应的个位数字根据第一规则插入至整数序列p';并将当前迭代次数y对应的十位数字根据第二规则插入至整数序列p';

其中,第一规则包括:将整数序列p'的第三位数字对3取模运算得到w1,当前迭代次数y对应的个位数字插入至整数序列p'从右至左方向的第w1位与第w1+1位之间。

第二规则包括:将整数序列p'的第四位数字对3取模运算得到w2,当前迭代次数y对应的个位数字插入至整数序列p'从左至右方向的第w2位与第w2+1位之间。

具体示例可以参照步骤s10332的说明,本发明实施例在此不再赘述。

可以理解地,本领域技术人员也可以通过其他的编码运算方式将当前迭代次数y插入至整数序列p',本实施例不再赘述。

还需要说明的是,上述过程步骤s2051至s2053是本发明实施例提供的一种根据小数序列生成密钥的优选实现过程;可以理解地,本领域技术人员也可以根据本实施例技术方案的启发通过其他方式来实现根据小数序列生成密钥的过程,本实施例在此不再赘述。

s206、将密钥k'与密钥k进行对比,若匹配则保存整数序列p'并更新服务器认证端的历史迭代次数n'。

将服务器认证端生成的密钥k'与客户端生成的k进行对比,若匹配,则认证成功,保存当前生成的动态密钥p',并把当前服务器端的历史迭代次数n'更新为有效迭代次数,例如,n'初始值为0,则n'=z+0;若不匹配,则认证失败,历史迭代次数n'不进行更新。

本实施例提供了一种服务器认证端验证密钥的方法具体流程,对端将生成密钥的迭代次数插入至根据logistic映射算子生成的密钥中,使得在验证密钥时能够以迭代次数作为同步条件来进行验证,从而不仅能够生成无序不重复且无规律的密钥,而且无需将时间作为同步条件,避免了网络传输速度的影响,具有较高的安全性。

实施例三

基于前述实施例相同的技术构思,参见图9,其示出了本发明提供的一种客户端90,可以包括:获取模块901、发送模块902、第一生成模块903、第二生成模块904和保存模块905;其中,

所述获取模块901,用于获取客户端当前迭代计算次数n所对应的密钥种子,并将所述密钥种子发送到服务器;其中,所述密钥种子包括当前迭代计算对应的初始值x0和可调参数μ;

所述第一生成模块903,用于根据所述密钥种子以及预设的logistic映射算子,生成当前迭代计算对应的小数序列x;

所述第二生成模块904,用于根据所述小数序列x生成对应的密钥k;

所述发送模块902,用于将所述密钥种子发送到服务器;以及,将所述密钥k发送到所述服务器;

所述保存模块905,用于将所述小数序列x保存,并将所述小数序列x中的最后一个元素作为下次迭代计算对应密钥种子的初始值x0'。

示例性地,参见图10,所述第二生成模块904,包括第一转换子模块9041、 第二转换子模块9042和第一插入子模块9043;其中,

所述第一转换子模块9041,用于按照预设的转换策略将所述小数序列x转换成对应的二值序列;

所述第二转换子模块9042,用于将所述二值序列转换成所述小数序列x对应的整数序列p;其中,所述整数序列p中的每一个元素p为属于[0,9]中的自然数;

所述第一插入子模块9043,用于将所述客户端的当前迭代次数n按照预设的编码规则插入到所述整数序列p中生成所述密钥k。

进一步地,所述第一转换子模块9041,用于将所述小数序列x按照第一转换规则转换为对应的第一二值序列;其中,第一转换规则为:当小数序列x的元素xk的值大于等于0.5时,将xk的值转换成1;当小数序列x的元素xk的值小于0.5时,将xk的值转换成0。

进一步地,所述第一转换子模块9041,还用于将第一二值序列的逐个元素与预设的第二二值序列的逐个元素对应进行逻辑运算,获得对应的逻辑运算之后的二值序列结果,并将第二二值序列更新为逻辑运算之后的二值序列结果。

进一步地,所述第一插入子模块9043,用于:

获取所述当前迭代次数n对应的十位数字和个位数字;

将所述当前迭代次数n对应的个位数字根据第一规则插入至所述整数序列p;并将所述当前迭代次数n对应的十位数字根据第二规则插入至所述整数序列p;其中,所述第一规则包括:将所述整数序列p的第三位数字对3取模运算得到w1,将所述当前迭代次数n对应的个位数字插入至所述整数序列p从右至左方向的第w1位与第w1+1位之间;第二规则包括:将所述整数序列p的第四位数字对3取模运算得到w2,并将所述当前迭代次数n对应的个位数字插入至所述整数序列p从左至右方向的第w2位与第w2+1位之间。

实施例四

基于前述实施例相同的技术构思,参见图11,其示出了本发明实施例提供 的一种服务器110可以包括:接收模块1101、第一确定模块1102、第二确定模块1103、第三生成模块1104、第四生成模块1105和对比模块1106;其中,

所述接收模块1101,用于接收客户端发送的密钥种子与密钥k;

所述第一确定模块1102,用于确定所述密钥k的中间两位数字,对所述中间两位数字分别做模运算得到客户端当前迭代次数n对应的十位数a和个位数b;

所述第二确定模块1103,用于确定服务器认证端需要迭代的次数y;

所述第三生成模块1104,用于根据所述密钥种子以及预设的logistic映射算子,经过y次迭代计算生成小数序列x';其中,所述小数序列x'与所述小数序列x长度相同;

所述第四生成模块1105,用于根据所述小数序列x'生成对应的密钥k';

所述对比模块1106,用于将所述密钥k'与所述密钥k进行对比,若匹配则保存整数序列p'并更新服务器认证端的历史迭代次数n'。

示例性地,所述第一确定模块1102,用于确定所述密钥k的中间两位数字;分别对所述密钥k的中间两位数字对3取模运算;根据所述模3运算的结果确定所述客户端当前迭代次数n的十位数a和个位数b在密钥k中的位置信息;根据所述位置信息得到所述客户端当前迭代次数n的十位数a和个位数b的值。

示例性地,所述第二确定模块1103,用于确定服务器认证端的历史迭代次数n';将所述当前迭代次数n的十位数a和个位数b组成一个两位数记为z;当z>n'时,则服务器认证端需要迭代的次数y=z-n';当z<n'或者z=n'时,则服务器认证端需要迭代的次数y=z-n'+100。

示例性地,参见图12,所述第四生成模块1105,包括:第三转换子模块11051,第四转换子模块11052和第二插入子模块11053;其中,

所述第三转换子模块11051,用于按照预设的转换策略将所述小数序列x'转换成对应的二值序列;

所述第四转换子模块11052,用于将所述二值序列转换成所述小数序列x' 对应的整数序列p';其中,所述整数序列p'中的每一个元素p'为[0,9]的自然数;

所述第二插入子模块11053,用于将所述服务器认证端的当前迭代次数y按照预设的编码规则插入到所述整数序列p'中生成所述密钥k'。

进一步地,所述第三转换子模块11051,用于将所述小数序列x'按照第一转换规则转换为对应的第三二值序列;其中,第一预设规则为:当小数序列x'的元素x'k的值大于0.5时,将x'k的值转换成1;当小数序列x'的元素x'k的值小于0.5时,将x'k的值转换成0。

进一步地,所述第三转换子模块11051,还用于将第三二值序列的逐个元素与预设的第四二值序列的逐个元素对应进行逻辑运算,获得对应的逻辑运算之后的二值序列结果,并将第四二值序列更新为逻辑运算之后的二值序列结果。

进一步地,所述第二插入子模块11053,用于:

获取所述当前迭代次数y对应的十位数字和个位数字;

将所述当前迭代次数y对应的个位数字根据第一规则插入至所述整数序列p';并将所述当前迭代次数y对应的十位数字根据第二规则插入至所述整数序列p';其中,所述第一规则包括:将所述整数序列p'的第三位数字对3取模运算得到w1,将所述当前迭代次数y对应的个位数字插入至所述整数序列p'从右至左方向的第w1位与第w1+1位之间;第二规则包括:将所述整数序列p'的第四位数字对3取模运算得到w2,并将所述当前迭代次数y对应的个位数字插入至所述整数序列p'从左至右方向的第w2位与第w2+1位之间。

实施例五

基于前述实施例相同的技术构思,参见图13,其示出了本发明实施例提供的一种密钥验证系统130,该系统130包括:客户端90和服务器110,其中,

所述客户端90,用于:

获取所述客户端90当前迭代计算次数n所对应的密钥种子,并将所述密钥种子发送到所述服务器110;其中,所述密钥种子包括当前迭代计算对应的初始值x0和可调参数μ;以及,

根据所述密钥种子以及预设的logistic映射算子,生成当前迭代计算对应的小数序列x;以及,

根据所述小数序列x生成对应的密钥k,并将所述密钥k发送到所述服务器110;以及,

将所述小数序列x保存,并将所述小数序列x中的最后一个元素作为下次迭代计算对应密钥种子的初始值x0';

所述服务器110,用于:

接收所述客户端90发送的密钥种子与密钥k;

确定所述密钥k的中间两位数字,对所述中间两位数字分别做模运算得到客户端90当前迭代次数n对应的十位数a和个位数b;

确定服务器110认证端需要迭代的次数y;

根据所述密钥种子以及预设的logistic映射算子,经过y次迭代计算生成小数序列x';其中,所述小数序列x'与所述小数序列x长度相同;

根据所述小数序列x'生成对应的密钥k';

将所述密钥k'与所述密钥k进行对比,若匹配则保存整数序列p'并更新服务器110认证端的历史迭代次数n'。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可 编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1