密钥生成方法、装置、计算机可读存储介质及终端设备与流程

文档序号:17896015发布日期:2019-06-13 15:59阅读:158来源:国知局
密钥生成方法、装置、计算机可读存储介质及终端设备与流程

本发明属于计算机技术领域,尤其涉及一种密钥生成方法、装置、计算机可读存储介质及终端设备。



背景技术:

为用户提供安全可靠的保密通信是通信网络最为重要的内容。数据加密技术是解决信息网络安全的关键技术,为了保护数据在传递过程中不被窃听或修改,必须对数据进行加密,即使数据被窃取,由于窃取者没有密钥而无法将之还原成明文,从而保证了数据的安全性,接收方因有正确的密钥,因此可以将密文还原成正确的明文。

但目前在终端设备与服务器进行数据交互时,对通信数据进行加密及解密的密钥大多依靠服务器进行生成并分发给终端设备,这一分发过程容易被第三方监听,从而导致密钥泄露,通信数据的安全性较低。



技术实现要素:

有鉴于此,本发明实施例提供了一种密钥生成方法、装置、计算机可读存储介质及终端设备,以解决现有技术中依靠服务器进行密钥的生成及分发,这一分发过程容易被第三方监听,从而导致密钥泄露,通信数据的安全性较低的问题。

本发明实施例的第一方面提供了一种密钥生成方法,可以包括:

通过预设的定位模块获取终端设备的地理位置信息;

向预设的服务器发送所述地理位置信息,以使所述服务器根据所述地理位置信息生成服务器端密钥;

对所述地理位置信息进行序列化处理,得到与所述地理位置信息对应的二进制序列;

根据所述二进制序列生成客户端密钥,所述客户端密钥与所述服务器端密钥相同,所述终端设备与所述服务器之间通过所述客户端密钥或所述服务器端密钥进行信息交互。

本发明实施例的第二方面提供了一种密钥生成装置,可以包括:

地理位置信息获取模块,用于通过预设的定位模块获取终端设备的地理位置信息;

地理位置信息发送模块,用于向预设的服务器发送所述地理位置信息,以使所述服务器根据所述地理位置信息生成服务器端密钥;

序列化处理模块,用于对所述地理位置信息进行序列化处理,得到与所述地理位置信息对应的二进制序列;

密钥生成模块,用于根据所述二进制序列生成客户端密钥,所述客户端密钥与所述服务器端密钥相同,所述终端设备与所述服务器之间通过所述客户端密钥或所述服务器端密钥进行信息交互。

本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如下步骤:

通过预设的定位模块获取终端设备的地理位置信息;

向预设的服务器发送所述地理位置信息,以使所述服务器根据所述地理位置信息生成服务器端密钥;

对所述地理位置信息进行序列化处理,得到与所述地理位置信息对应的二进制序列;

根据所述二进制序列生成客户端密钥,所述客户端密钥与所述服务器端密钥相同,所述终端设备与所述服务器之间通过所述客户端密钥或所述服务器端密钥进行信息交互。

本发明实施例的第四方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如下步骤:

通过预设的定位模块获取终端设备的地理位置信息;

向预设的服务器发送所述地理位置信息,以使所述服务器根据所述地理位置信息生成服务器端密钥;

对所述地理位置信息进行序列化处理,得到与所述地理位置信息对应的二进制序列;

根据所述二进制序列生成客户端密钥,所述客户端密钥与所述服务器端密钥相同,所述终端设备与所述服务器之间通过所述客户端密钥或所述服务器端密钥进行信息交互。

本发明实施例与现有技术相比存在的有益效果是:本发明实施例首先通过预设的定位模块获取终端设备的地理位置信息,并向预设的服务器发送所述地理位置信息,以使所述服务器根据所述地理位置信息生成服务器端密钥,然后对所述地理位置信息进行序列化处理,得到与所述地理位置信息对应的二进制序列,最后根据所述二进制序列生成客户端密钥。通过本发明实施例,终端设备与服务器可以分别根据终端设备的地理位置信息各自独立地生成相同的密钥,并通过该密钥进行信息交互。在这一过程中,两者之间并不会直接进行密钥的发送,而只需共享终端设备的地理位置信息即可,第三方即使监听到该地理位置信息,在不清楚具体的密钥生成方式的情况下,仍然无法根据该地理位置信息得到密钥,从而大大提高了通信数据的安全性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例中一种密钥生成方法的一个实施例流程图;

图2为对二进制序列进行移位操作的示意流程图;

图3为本发明实施例中一种密钥生成装置的一个实施例结构图;

图4为本发明实施例中一种终端设备的示意框图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,本发明实施例中一种密钥生成方法的一个实施例可以包括:

步骤s101、通过预设的定位模块获取终端设备的地理位置信息。

在需要进行数据加密通信时,用户的终端设备可以实时获取当前的地理位置信息,并将该地理位置信息与服务器进行同步。

其中,所述终端设备中内置有定位模块,可以通过该定位模块获取终端设备的地理位置信息,该定位模块所基于的定位系统包括但不限于全球定位系统(globalpositioningsystem,gps)、全球卫星导航系统(globalnavigationsatellitesystem,glonass)、伽利略卫星导航系统(galileosatellitenavigationsystem)、北斗卫星导航系统(beidounavigationsatellitesystem,bds)等常用的定位系统。

步骤s102、向预设的服务器发送所述地理位置信息,以使所述服务器根据所述地理位置信息生成服务器端密钥。

当所述终端设备将所述地理位置信息与服务器进行同步时,会向服务器发送地理位置同步消息,在该消息中携带了所述地理位置信息以及所述终端设备的设备标识。

所述设备标识用于便于服务器区分不同的终端设备,该设备标识可以是国际移动设备识别码(internationalmobileequipmentidentity,imei),这是由15位数字组成的“电子串号”,它与每台终端设备一一对应,而且该码是全世界唯一的。每一台终端设备在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。

所述服务器在接收到所述地理位置信息之后,可以根据所述地理位置信息生成与所述终端设备对应的服务器端密钥,该密钥的具体生成过程与下述的客户端密钥的生成过程相同,具体细节可参照下述的客户端密钥的生成过程,此处不再赘述。

步骤s103、对所述地理位置信息进行序列化处理,得到与所述地理位置信息对应的二进制序列。

所述终端设备获取的地理位置信息是一个经纬度字符串,首先需要对其进行序列化处理,所谓的序列化即为将数据结构或对象转换成二进制序列的过程,经过序列化处理,即可将经纬度字符串转换为一串由二进制数字组成的序列,即与所述地理位置信息对应的二进制序列。

在本实施例中,优选采用protocolbuffer对经纬度字符串进行序列化处理,protocolbuffers是google公司开发的一种数据描述语言,类似于xml能够将结构化数据序列化,可用于数据存储、通信协议等方面。当然,也可以根据实际情况选取其它的序列化处理方式,本实施例对此不作具体限定。

步骤s104、根据所述二进制序列生成客户端密钥。

所述客户端密钥与所述服务器端密钥相同,所述终端设备与所述服务器之间通过所述客户端密钥或所述服务器端密钥进行信息交互。

当所述终端设备与所述服务器均生成了相同的密钥后,则可使用该密钥对交互的数据进行对称加密/解密。

需要注意的是,现有技术中普遍使用的加密算法分为对称加密算法和非对称加密算法两种,其中,对称加密算法为采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密。非对称加密算法需要两个密钥,分别为公钥和私钥。公钥和私钥是一对,如果用公钥对信息进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。由于在本实施例中,服务器一侧与终端设备一侧是通过相同的方式生成的同一密钥,因此需要采用对称加密算法。本实施例中所使用的对称加密算法包括但不限于des、3des、tdea、blowfish、rc2、rc4、rc5、idea、skipjack、aes等具体的算法。

在本实施例的一种具体实现中,在根据所述二进制序列生成所述客户端密钥时,所述终端设备可以首先确定所述客户端密钥的长度,密钥长度可以根据实际情况进行设置,例如,可以将其设置为16位、32位、64位或者其它取值,在本实施例中,优选采用32位的密钥长度,将所述客户端密钥的长度用keylength表示,则有:keylength=32。

然后,所述终端设备根据预设的比特抽取规则从所述二进制序列中依次抽取keylength个比特,并使用抽取出的比特生成所述客户端密钥。

所述比特抽取规则可以根据实际情况进行设置,既可以抽取连续的比特,也可以抽取非连续的比特,例如,可以抽取所述二进制序列的第9位至第40位这连续的32位作为密钥,还可以抽取所述二进制序列的第1位、第7位至第9位、第20位至第46位、第50位这非连续的32位作为密钥。

为了进一步增加密钥的安全性,在本实施例的另一种具体实现中,所述终端设备不再使用单一的比特抽取规则,而是使用两个以上不同的比特抽取规则(即候选抽取规则)构成的抽取规则集合,每一次生成密钥时均采用不同的比特抽取规则。

此处,将所述抽取规则集合中包括的候选抽取规则的数目记为rulenum,将其中的各个候选抽取规则分别按照1、2、3、…、r、…、rulenum的序号进行排序,其中,1≤r≤rulenum,在进行比特抽取规则选择时,所述终端设备可以首先通过预设的伪随机数生成器生成第一随机数,并向所述服务器发送所述第一随机数,以使所述服务器也可以根据所述第一随机数进行比特抽取规则的选取。真正的随机数是使用物理现象产生的,比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。它们不是真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。在本实施例中优选通过预设的伪随机数生成器来生成随机数。

然后,所述终端设备可以根据下式从预设的抽取规则集合中选取出一个候选抽取规则作为所述比特抽取规则:

ruleseq=mod(randomnum1,rulenum)+1

其中,mod为求余函数,randomnum1为所述第一随机数,ruleseq为所述比特抽取规则在所述抽取规则集合中的序号。

在本实施例的一种具体实现中,在根据所述二进制序列生成所述客户端密钥时,所述终端设备可以首先根据下式对所述二进制序列进行处理,生成所述客户端密钥:

key=hashfunc(binarystream)

其中,binarystream为所述二进制序列,hashfunc为预设的哈希函数,key为所述客户端密钥。

哈希函数是把任意长度的输入变换成固定长度的输出,该输出就是哈希值。这种转换是一种压缩映射,也就是,输出的长度通常远小于输入的长度,不同的输入可能会散列成相同的输出,而不可能从输出值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的过程。在本方案中所使用的哈希函数所基于的具体算法可以包括但不限于md4、md5、sha1以及其它常用的哈希运算算法。

为了进一步增加密钥的安全性,在本实施例的另一种具体实现中,所述终端设备不再使用单一的哈希函数,而是使用两个以上不同的哈希函数(即候选哈希函数)构成的哈希函数集合,每一次生成密钥时均采用不同的哈希函数。

此处,将所述哈希函数集合中包括的候选哈希函数的数目记为funcnum,将其中的各个候选哈希函数分别按照1、2、3、…、f、…、funcnum的序号进行排序,其中,1≤f≤funcnum,在进行哈希函数选择时,所述终端设备可以首先通过预设的伪随机数生成器生成第二随机数,并向所述服务器发送所述第二随机数,以使所述服务器也可以根据所述第二随机数进行哈希函数的选取。

然后,所述终端设备可以根据下式从预设的哈希函数集合中选取出一个候选哈希函数作为对所述二进制序列进行处理的哈希函数:

funcseq=mod(randomnum2,funcnum)+1

其中,randomnum2为所述第二随机数,funcseq为选取出的对所述二进制序列进行处理的哈希函数在所述哈希函数集合中的序号。

如图2所示,为了进一步增加密钥的安全性,在根据所述二进制序列生成所述客户端密钥之前,所述终端设备还可以通过下述步骤对所述二进制序列进行移位操作:

步骤s201、通过预设的伪随机数生成器生成第三随机数。

在生成所述第三随机数之后,所述终端设备会向所述服务器发送所述第三随机数,以使所述服务器也可以根据所述第三随机数进行移位操作。

步骤s202、根据所述第三随机数计算移位操作的位数。

例如,可以根据下式计算移位操作的位数:

shiftbit=mod(randomnum3,bistrlen)

其中,randomnum3为所述第三随机数,bistrlen为所述二进制序列的总位数,shiftbit为移位操作的位数。

步骤s203、对所述二进制序列进行移位操作。

例如,可以根据下式对所述二进制序列进行移位操作:

newbinarystream=binarystream<<shiftbit

newbinarystream=binarystream>>shiftbit

其中,binarystream为所述二进制序列,《为左移运算符,》为右移运算符,newbinarystream为移位操作后得到的二进制序列。

进一步地,为了增加密钥的安全性,本实施例中生成的密钥会进行不断的更新。

在一种具体的实现中,可以根据时间对密钥进行更新。

例如,可以预先设置一个时长阈值,所述终端设备和所述服务器之间保持着系统时钟的同步,当某一密钥使用的时间超过了该时长阈值时,则两端可以重新按照图1所示的过程同步生成一个新的密钥。

该时长阈值可以根据实际情况进行设置,例如,可以将其设置为1秒、5秒、10秒、1分钟、5分钟或者其它取值,但需要注意的是,该时长阈值设置的越大,则密钥更新的频率越低,对资源的消耗越少,但是,密钥的安全性越低,反之,该时长阈值设置的越小,则密钥更新的频率越高,对资源的消耗越多,但是,密钥的安全性越高,在实际使用中,需要综合考虑这两方面的因素来进行权衡。

在另一种具体的实现中,还可以根据距离对密钥进行更新。

例如,可以预先设置一个距离阈值,所述终端设备周期性的获取当前的地理位置信息,并根据当前的地理位置信息与上一次生成密钥时的地理位置信息计算两者的距离,具体地,可以根据下式计算两者之间的距离:

其中,r为地球半径,(lon1,lat1)为当前的位置坐标,lon1为当前的纬度坐标,lat1为当前的经度坐标,(lon2,lat2)为上一次生成密钥时的位置坐标,lon2为上一次生成密钥时的纬度坐标,lat2为上一次生成密钥时的经度坐标,dis为两者之间的距离。

若两者之间的距离大于预设的距离阈值时,则所述终端设备和所述服务器可以重新按照图1所示的过程同步生成一个新的密钥。

该距离阈值可以根据实际情况进行设置,例如,可以将其设置为500米、1000米、2000米或者其它取值,但需要注意的是,该距离阈值设置的越大,则密钥更新的频率越低,对资源的消耗越少,但是,密钥的安全性越低,反之,该距离阈值设置的越小,则密钥更新的频率越高,对资源的消耗越多,但是,密钥的安全性越高,在实际使用中,需要综合考虑这两方面的因素来进行权衡。

综上所述,本发明实施例首先通过预设的定位模块获取终端设备的地理位置信息,并向预设的服务器发送所述地理位置信息,以使所述服务器根据所述地理位置信息生成服务器端密钥,然后对所述地理位置信息进行序列化处理,得到与所述地理位置信息对应的二进制序列,最后根据所述二进制序列生成客户端密钥。通过本发明实施例,终端设备与服务器可以分别根据终端设备的地理位置信息各自独立地生成相同的密钥,并通过该密钥进行信息交互。在这一过程中,两者之间并不会直接进行密钥的发送,而只需共享终端设备的地理位置信息即可,第三方即使监听到该地理位置信息,在不清楚具体的密钥生成方式的情况下,仍然无法根据该地理位置信息得到密钥,从而大大提高了通信数据的安全性。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

对应于上文实施例所述的一种密钥生成方法,图3示出了本发明实施例提供的一种密钥生成装置的一个实施例结构图。

本实施例中,一种密钥生成装置可以包括:

地理位置信息获取模块301,用于通过预设的定位模块获取终端设备的地理位置信息;

地理位置信息发送模块302,用于向预设的服务器发送所述地理位置信息,以使所述服务器根据所述地理位置信息生成服务器端密钥;

序列化处理模块303,用于对所述地理位置信息进行序列化处理,得到与所述地理位置信息对应的二进制序列;

密钥生成模块304,用于根据所述二进制序列生成客户端密钥,所述客户端密钥与所述服务器端密钥相同,所述终端设备与所述服务器之间通过所述客户端密钥或所述服务器端密钥进行信息交互。

可选地,所述密钥生成模块可以包括:

密钥长度确定单元,用于确定所述客户端密钥的长度;

比特抽取单元,用于根据预设的比特抽取规则从所述二进制序列中依次抽取keylength个比特,并使用抽取出的比特生成所述客户端密钥,keylength为所述客户端密钥的长度。

进一步地,所述密钥生成模块还可以包括:

第一随机数生成单元,用于通过预设的伪随机数生成器生成第一随机数,并向所述服务器发送所述第一随机数;

抽取规则选取单元,用于根据下式从预设的抽取规则集合中选取出一个候选抽取规则作为所述比特抽取规则:

ruleseq=mod(randomnum1,rulenum)+1

其中,所述抽取规则集合中包括两个以上的候选抽取规则,mod为求余函数,randomnum1为所述第一随机数,rulenum为所述抽取规则集合中的候选抽取规则的数目,ruleseq为所述比特抽取规则在所述抽取规则集合中的序号。

可选地,所述密钥生成模块还可以包括:

哈希处理单元,用于根据下式对所述二进制序列进行处理,生成所述客户端密钥:

key=hashfunc(binarystream)

其中,binarystream为所述二进制序列,hashfunc为预设的哈希函数,key为所述客户端密钥。

进一步地,所述密钥生成模块还可以包括:

第二随机数生成单元,用于通过预设的伪随机数生成器生成第二随机数,并向所述服务器发送所述第二随机数;

哈希函数选取单元,用于根据下式从预设的哈希函数集合中选取出一个候选哈希函数作为对所述二进制序列进行处理的哈希函数:

funcseq=mod(randomnum2,funcnum)+1

其中,所述哈希函数集合中包括两个以上的候选哈希函数,mod为求余函数,randomnum2为所述第二随机数,funcnum为所述哈希函数集合中的候选哈希函数的数目,funcseq为选取出的对所述二进制序列进行处理的哈希函数在所述哈希函数集合中的序号。

进一步地,所述密钥生成装置还可以包括:

第三随机数生成模块,用于通过预设的伪随机数生成器生成第三随机数,并向所述服务器发送所述第三随机数;

位数计算模块,用于根据下式计算移位操作的位数:

shiftbit=mod(randomnum3,bistrlen)

其中,mod为求余函数,randomnum3为所述第三随机数,bistrlen为所述二进制序列的总位数,shiftbit为移位操作的位数;

移位操作模块,用于根据下式对所述二进制序列进行移位操作:

newbinarystream=binarystream<<shiftbit

newbinarystream=binarystream>>shiftbit

其中,binarystream为所述二进制序列,《为左移运算符,》为右移运算符,newbinarystream为移位操作后得到的二进制序列。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

图4示出了本发明实施例提供的一种终端设备的示意框图,为了便于说明,仅示出了与本发明实施例相关的部分。

在本实施例中,所述终端设备4可以是手机、平板电脑、笔记本、掌上电脑及智能手表/手环等计算设备。该终端设备4可包括:处理器40、存储器41以及存储在所述存储器41中并可在所述处理器40上运行的计算机可读指令42,例如执行上述的密钥生成方法的计算机可读指令。所述处理器40执行所述计算机可读指令42时实现上述各个密钥生成方法实施例中的步骤,例如图1所示的步骤s101至s104。或者,所述处理器40执行所述计算机可读指令42时实现上述各装置实施例中各模块/单元的功能,例如图3所示模块301至304的功能。

示例性的,所述计算机可读指令42可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述处理器40执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令42在所述终端设备4中的执行过程。

所述处理器40可以是中央处理单元(centralprocessingunit,cpu),还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器41可以是所述终端设备4的内部存储单元,例如终端设备4的硬盘或内存。所述存储器41也可以是所述终端设备4的外部存储设备,例如所述终端设备4上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器41还可以既包括所述终端设备4的内部存储单元也包括外部存储设备。所述存储器41用于存储所述计算机可读指令以及所述终端设备4所需的其它指令和数据。所述存储器41还可以用于暂时地存储已经输出或者将要输出的数据。

在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干计算机可读指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储计算机可读指令的介质。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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