数据发送方法及装置、密钥索引的生成方法及装置与流程

文档序号:14914353发布日期:2018-07-11 00:18阅读:265来源:国知局

本申请涉及互联网数据处理技术领域,特别涉及一种数据发送方法及数据发送装置,以及一种加密密钥的密钥索引的生成方法及装置。



背景技术:

目前,随着互联网技术的普及,越来越多的用户使用终端,例如计算机或者移动终端等,和各种平台通过互联网进行数据交互。例如,登录邮箱进行邮件的收发操作,或者发布帖子,或者进行网络购物,等等。每一次交互都需要终端和各平台服务器之间建立连接从而进行数据交互。在某些场景下,服务器在和终端成功建立连接后,可以向该终端下发一个加密的数据,后续终端再和服务器进行交互时,将该加密的数据直接发给服务器进行验证,从而由服务器依据终端发送的加密的数据对终端进行验证,终端和服务器之间的数据发送的安全性较低。



技术实现要素:

基于此,本申请提供了一种密钥索引的生成方法和一种数据发送方法,用以采用库级索引来标识服务器端的密钥库,进而使用混淆后的随机数和库级索引来组成密钥索引的方式,既能解决服务器端新旧版本的密钥库不能兼容的问题,还可以通过对随机数的混淆而使攻击者获得密钥索引中的库内索引的难度大大增加,以此增加服务器和终端之间数据发送的安全性。

本申请还提供了一种密钥索引的生成装置,和一种数据发送装置用以保证上述方法在实际中的实现及应用。

为了解决上述问题,本申请公开了一种数据发送方法,该方法应用于服务器上,该方法包括:

响应于所述服务器与终端建立连接,获取在建立连接过程中协商的会话密钥;

确定所述会话密钥的加密密钥和密钥索引,所述密钥索引用于唯一标识所述加密密钥;

将使用所述加密密钥加密后的会话密钥和所述密钥索引,一并发送至所述终端。,

其中,所述密钥索引包括:库级索引和混淆后的随机数,所述确定所述会话密钥的加密密钥和密钥索引,包括:

所述服务器选择所述加密密钥的库级索引,所述库级索引用于唯一标识保存所述加密密钥的密钥库;

所述服务器依据生成一随机数确定所述加密密钥的库内索引,所述库内索引用于在所述库级索引标识的密钥库内唯一标识加密密钥;

依据所述库级索引和库内索引查找得到所述加密密钥,以及,对所述随机数进行混淆,得到混淆后的随机数。

其中,所述服务器依据生成的一随机数确定所述加密密钥的库内索引,包括:

所述服务器获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;

将所述加密密钥的总大小对所述随机数进行取模运算,得到库内索引。

其中,所述对所述随机数进行混淆,得到混淆后的随机数,包括:

将所述随机数填充至预设的空索引的奇数位,以及,在所述预设的空索引的偶数位添加预设的无效字符,得到混淆后的随机数。

其中,所述方法还包括:

响应于下一次建立连接前所述终端发送所述加密后的会话密钥和所述密钥索引,所述服务器依据所述密钥索引获取所述加密密钥;

依据获取的加密密钥对加密后的会话密钥进行解密,得到会话密钥;

验证所述会话密钥是否有效,如果是,则与所述终端建立连接。

其中,所述响应于所述终端发送所述加密后的会话密钥和所述密钥索引,依据所述密钥索引获取所述加密密钥,包括:

从所述混淆后的随机数的奇数位获取随机数;

获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;

将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引;

依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥。

其中,所述方法还包括:

所述服务器生成新密钥库,并为新密钥库生成对应的新库级索引;

相应的,所述服务器选择所述加密密钥的库级索引,具体为:

所述服务器选择所述新库级索引作为所述加密密钥的库级索引;

以及,相应的,所述依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥,包括:

判断所述库级索引是否为新库级索引,如果为新库级索引,则在所述新库级索引对应的新密钥库中检索所述库内索引对应的加密密钥;

如果为旧库级索引,则判断所述旧库级索引对应的旧密钥库是否可用,如果可用,则在所述旧库级索引对应的旧密钥库中检索所述库内索引对应的加密密钥。

本申请还公开了一种密钥索引的生成方法,该方法应用于服务器上,该方法包括:

所述服务器为加密密钥选择库级索引,所述库级索引用于唯一标识保存所述加密密钥的密钥库;

所述服务器依据生成的随机数确定所述加密密钥的库内索引,所述库内索引用于在所述库级索引标识的密钥库内唯一标识加密密钥;

对所述随机数进行混淆,得到混淆后的随机数,并将所述库级索引和混淆后的随机数组合为所述加密密钥的密钥索引。

其中,所述服务器依据生成的随机数确定所述加密密钥的库内索引,包括:

所述服务器获取所述库级索引所标识的密钥库中加密密钥的总大小;

将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引。

其中,所述对所述随机数进行混淆,得到混淆后的随机数,包括:

将所述随机数填充至预设的空索引的奇数位,以及,在所述预设的空索引的偶数位添加预设的无效字符,得到混淆后的随机数。

其中,所述方法还包括:

使用所述加密密钥对目标数据进行加密,得到加密后的目标数据,并将所述加密后的目标数据和所述密钥索引发送至终端。

其中,所述方法还包括:

响应于所述终端发送所述加密后的目标数据和所述密钥索引,依据所述密钥索引获取所述加密密钥;

依据获取的加密密钥对加密后的目标数据进行解密,得到目标数据;

依据所述目标数据对所述终端进行验证。

其中,所述响应于所述终端发送所述加密后的目标数据和所述密钥索引,依据所述密钥索引获取所述加密密钥,包括:

从所述混淆后的随机数的奇数位获取随机数;

获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;

将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引;

依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥。

其中,所述方法还包括:

所述服务器生成新密钥库,并为新密钥库生成对应的新库级索引;

相应的,所述服务器为加密密钥选择库级索引,具体为:

所述服务器选择所述新库级索引作为所述加密密钥的库级索引;

相应的,所述依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥,包括:

判断所述密钥索引中的库级索引是否为新库级索引,如果为新库级索引,则在所述新库级索引对应的新密钥库中检索所述库内索引对应的加密密钥;

如果为旧库级索引,则判断所述旧库级索引对应的旧密钥库是否可用,如果可用,则在所述旧库级索引对应的旧密钥库中检索所述库内索引对应的加密密钥。

本申请还公开了一种数据发送装置,该装置集成于服务器上,该装置包括:

获取会话密钥单元,用于响应于所述服务器与终端建立连接,获取在建立连接过程中协商的会话密钥;

确定密钥索引单元,用于确定所述会话密钥的加密密钥和密钥索引,所述密钥索引用于唯一标识所述加密密钥;

发送单元,用于将使用所述加密密钥加密后的会话密钥和所述密钥索引,一并发送至所述终端。

其中,所述密钥索引包括:库级索引和混淆后的随机数,所述确定单元包括:

选择子单元,用于选择所述加密密钥的库级索引,所述库级索引用于唯一标识保存所述加密密钥的密钥库;

确定子单元,用于依据生成的随机数确定所述加密密钥的库内索引,所述库内索引用于在密钥库内唯一标识一个加密密钥;

查找子单元,用于依据所述库级索引和库内索引查找得到所述加密密钥;

混淆处理子单元,用于对所述随机数进行混淆,得到混淆后的随机数。

其中,所述确定子单元,具体用于:获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;将所述加密密钥的总大小对所述随机数进行取模运算,得到库内索引。

其中,所述混淆处理子单元具体用于:

将所述随机数填充至预设的空索引的奇数位,以及,在所述预设的空索引的偶数位添加预设的无效字符,得到混淆后的随机数。

其中,所述装置还包括:

获取加密密钥单元,用于响应于下一次建立连接前所述终端发送所述加密后的会话密钥和所述密钥索引,所述服务器依据所述密钥索引获取所述加密密钥;

解密会话密钥单元,用于依据获取的加密密钥对加密后的会话密钥进行解密,得到会话密钥;

验证会话密钥单元,用于验证所述会话密钥是否有效;

会话复用单元,用于在所述验证单元的结果为是的情况下,与所述终端建立连接。

其中,所述获取加密密钥单元包括:

获取随机数子单元,用于从所述混淆后的随机数的奇数位获取随机数;

获取大小子单元,用于获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;

运算子单元,用于将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引;

确定子单元,用于依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥。

其中,所述装置还包括:

密钥库升级单元,用于生成新密钥库,并为新密钥库生成对应的新库级索引;

相应的,所述选择子单元,具体用于:选择所述新库级索引作为所述加密密钥的库级索引;

以及,相应的,所述确定子单元具体用于:

判断所述库级索引是否为新库级索引,如果为新库级索引,则在所述新库级索引对应的新密钥库中检索所述库内索引对应的加密密钥;如果为旧库级索引,则判断所述旧库级索引对应的旧密钥库是否可用,如果可用,则在所述旧库级索引对应的旧密钥库中检索所述库内索引对应的加密密钥。

本申请还公开了一种密钥索引的生成装置,该装置集成于服务器上,该装置包括:

选择单元,用于为加密密钥选择库级索引,所述库级索引用于唯一标识保存所述加密密钥的密钥库;

确定库内索引单元,用于所述服务器依据生成的随机数确定所述加密密钥的库内索引,所述库内索引用于在所述库级索引标识的密钥库内唯一标识加密密钥;

混淆处理单元,用于对所述随机数进行混淆,得到混淆后的随机数;

组合单元,用于将所述库级索引和混淆后的随机数组合为所述加密密钥的密钥索引。

其中,所述确定库内索引单元,包括:

获取大小子单元,用于获取所述库级索引所标识的密钥库中加密密钥的总大小;和,运算子单元,用于将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引。

其中,所述混淆处理单元503具体可以包括:

填充子单元,用于将所述随机数填充至预设的空索引的奇数位,以及,添加子单元,用于在所述预设的空索引的偶数位添加预设的无效字符,得到混淆后的随机数。

其中,所述装置还可以包括:

加密单元,用于使用所述加密密钥对目标数据进行加密,得到加密后的目标数据,并将所述加密后的目标数据和所述密钥索引发送至终端。

其中,所述装置还可以包括:

获取加密密钥单元,用于响应于所述终端发送所述加密后的目标数据和所述密钥索引,依据所述密钥索引获取所述加密密钥;

解密数据单元,用于依据获取的加密密钥对加密后的目标数据进行解密,得到目标数据;

验证数据单元,用于依据所述目标数据对所述终端进行验证。

其中,所述获取加密密钥单元包括:

获取随机数子单元,用于从所述混淆后的随机数的奇数位获取随机数;获取大小子单元,用于获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;运算子单元,用于将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引;和,确定子单元,用于依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥。

其中,所述装置还包括:

密钥库升级单元,用于生成新密钥库,并为新密钥库生成对应的新库级索引;

相应的,所述选择单元具体用于:

所述服务器选择所述新库级索引作为所述加密密钥的库级索引;

其中,所述确定子单元,具体用于:

判断所述密钥索引中的库级索引是否为新库级索引,如果为新库级索引,则在所述新库级索引对应的新密钥库中检索所述库内索引对应的加密密钥;如果为旧库级索引,则判断所述旧库级索引对应的旧密钥库是否可用,如果可用,则在所述旧库级索引对应的旧密钥库中检索所述库内索引对应的加密密钥。

与现有技术相比,本申请包括以下优点:

在本申请实施例中,为加密密钥生成的密钥索引中同时包括了库级索引和混淆后的随机数。因此,如果服务器端的密钥库升级,也可以通过其中的库级索引来标识出新密钥库或者仍然可用的旧密钥库,因此可以解决服务器端升级后的密钥库的新旧版本不能兼容的问题。同时,混淆后的随机数即便被攻击者破解,由于混淆的方式并不是公开的,还可以增加攻击者破解随机数的难度,从而提升传递密钥索引以及加密的目标数据的安全性。

当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

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

图1是本申请在实际应用中的场景架构图;

图2是本申请的密钥索引的生成方法实施例的流程图;

图3是本申请的密钥索引的数据结构示意图;

图4是本申请的数据发送方法实施例的流程图;

图5是本申请的密钥索引的生成装置实施例的结构框图;

图6是本申请的数据发送装置的结构框图;

图7是本申请的服务器的结构框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请发明人在研究过程中发现,在现有技术中,服务器在下发加密的数据的同时,还需要将对该数据进行加密使用的加密密钥所对应的密钥索引,也一并发送给终端。而服务器如果直接给终端发送密钥索引和加密的数据,一旦攻击者获得密钥索引,就可以解析出加密密钥进而得到未加密的原始数据,因此终端和服务器之间的数据发送的安全性较低。

此外,服务器对保存加密密钥的密钥库进行升级时,现有的密钥索引也存在密钥库的新旧版本不能兼容的问题,即终端使用已经下发的密钥索引来供服务器验证时,服务器由于在下发密钥索引后进行了密钥库升级从而导致无法正确解析密钥索引来得到加密密钥。

参考图1所示,为本申请在实际应用中的场景架构图,用户通过终端101和服务器102进行通信,则终端101和服务器102之间就建立了会话连接,并在建立会话连接中协商除了会话密钥,服务器102可以将会话密钥通过加密密钥进行加密,并将加密后的会话密钥和密钥索引通过会话票证session ticket一并发送给终端101,以便终端101下一次建立会话连接时可以将session ticket再发送给服务器102,服务器再由密钥索引拿到加密密钥,从而加密得到会话密钥,从而与终端101之间进行会话复用。

当然,在实际应用中,本申请还可以应用于终端101与服务器102之间进行交互的其他场景。例如,终端101向服务器102提交了验证码,服务器向终端下发一个后续用来验证是否已经提交验证码的字段token的应用场景,服务器可以将加密后的token,和加密使用的加密密钥对应的密钥索引一起发送给终端从而实现后续服务器对终端的校验。

参考图2,示出了本申请的一种加密密钥的密钥索引的生成方法实施例的流程图,本实施例可以应用于图1所示的服务器上,本实施例可以包括以下步骤:

步骤201:服务器为加密密钥选择库级索引。

在本实施例中,加密密钥是用来对目标数据进行加密的密钥,为了唯一标识对某一个数据进行加密的加密密钥,则需要为每一个加密密钥都生成一个唯一标识该加密密钥的密钥索引。在本实施例中,密钥索引可以包括:库级索引和混淆后的库内索引,其中,库级索引用于唯一标识保存加密密钥的密钥库,而库内索引则用于在库级索引标识的密钥库内唯一标识加密密钥。

在实际应用中,在服务器中保存了多个密钥库,则为了标识各个密钥库,每一个密钥库都对应有一个库级索引。服务器在更新密钥库例如生成了新密钥库后,该库级索引还可以用于标识各个密钥库是新版本的密钥库还是旧版本的密钥库。具体的,例如,库级索引为“A1”,则表示新版本的密钥库1,库级索引为“B2”,则表示旧版本的密钥库2。可见,英文字符A用于表示密钥库是新密钥库,而英文字符B用于表示密钥库是旧密钥库,可见英文字符加数字的方式可以在服务器端唯一标识密钥库。

在服务器对密钥库进行版本升级,或者生成新密钥库后,同时还可以为新密钥库生成对应的新库级索引。具体在为新密钥库进行编号时,可以将当前使用的密钥库的数字编号“seq”再加1作为新密钥库的数字编号:seq+1。同时,考虑到密钥库“seq”的存储空间能表示的最大大小为“MAX_SEQ”,还可以使用“seq=seq%MAX_SEQ”为新的密钥库编号,其中,“%”表示进行取模运算。当然,这仅仅是密钥库的数字编号的一种具体的实施方式,在实际应用中,只要库级索引能够唯一区分任意一个旧密钥库或新密钥库均可。

如果服务器端生成了新密钥库,在本步骤中可以优先选择新库级索引作为加密密钥的库级索引。

步骤202:所述服务器依据生成的随机数确定所述加密密钥的库内索引。

服务器选择库级索引后,接着确定加密密钥的库内索引,从而依据库级索引和库内索引从而能够唯一确定得到一个加密密钥。首先,服务器可以利用随机数发生器生成一个随机数,接着利用该随机数和步骤201中得到库级索引一起确定一个库内索引。

具体的,依据随机数确定加密密钥的库内索引的过程,可以包括步骤A1~步骤A2:

步骤A1:所述服务器获取所述库级索引所标识的密钥库中加密密钥的总大小。

首先,针对步骤201中选择的库级索引对应的密钥库,服务器获取该密钥库中所保存的加密密钥的总大小,例如一共保存了110个加密密钥,则本步骤获取到的数值为110。

步骤A2:将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引。

接着,服务器将步骤A1中得到的数值110,对生成的随机数进行取模运算,将取模运算的结果作为库内索引来选取密钥库中的加密密钥。例如,随机数如果为6,则本步骤的库内索引就是110对6进行取模运算的结果。

步骤203:对所述随机数进行混淆,得到混淆后的随机数。

在本实施例中,与现有技术的不同之处在于,服务器在按照步骤202的方式得到库内索引后,不会直接将该随机数和库级索引传送给终端,而是对随机数先进行混淆,后续再传送混淆后的随机数,以便起到提高数据发送的安全性的目的。

具体的,服务器可以以取奇数位为有效位而偶数位为混淆位的方式进行混淆,即可以将生成的随机数填充至预设的空索引的奇数位,并在该预设的空索引的偶数位添加预设的无效字符(例如字符0或者1等),得到混淆后的库内索引。例如,预设的空索引位数一共有10位,则将随机数6填充进第1、3、5、7、9位,而在第0、2、4、6、8位填充数字0作为混淆位。当然,空索引的位数多少可以由本领域技术人员自主设置,并且,上述混淆方式仅为示例性的说明,不应将其理解为本申请的限定。

步骤204:将库级索引和混淆后的随机数组合为所述加密密钥的密钥索引。

在得到库级索引和混淆后的随机数之后,将库级索引和混淆后的随机数一起组合为密钥索引,该密钥索引能够唯一标识一个服务器端的加密密钥。

具体的,该密钥索引中库级索引和混淆后的随机数的数据结构示意图可以参考图3所示。其中,库级索引为“seq”,混淆后的随机数为“index”,在“index”中仅仅奇数位为有效位,通过获取奇数位的内容可以得到随机数。

在依据库内索引和库级索引确定了加密密钥,并生成了密钥索引之后,还可以包括:

步骤205:使用加密密钥对目标数据进行加密,得到加密后的目标数据。

在本步骤中,可以利用库级索引和库内索引唯一确定一个加密密钥,服务器再利用该加密密钥对待加密的目标数据进行加密,得到加密后的目标数据。例如,在验证码校验中,用户在正确输入了验证码后,服务器可以向终端发送一个后续用来校验用户是否已经输入过验证码的目标数据token,则服务器在下发token之前,可以采用步骤201~步骤204的方式为token生成一个加密密钥的密钥索引,并将密钥索引和采用该加密密钥加密后的token一起发送给终端。

当然,在生成密钥索引之后,采用该密钥索引对应的加密密钥进行加密的数据,可以适用于任何服务器向终端发送目标数据的场景。

步骤206:将所述加密后的目标数据和所述密钥索引发送至终端。

服务器再将加密后的目标数据和密钥索引一起发送给终端进行保存。在下一次终端需要和服务器进行数据交互或者需要服务器进行验证的情况下,终端可以再将该加密后的目标数据和密钥索引一起发送给服务器,由服务器再依据密钥索引得到加密密钥,进而利用该加密密钥对加密后的目标数据进行解密得到目标数据,从而可以依据解密得到的目标数据是否准确,来验证终端的请求是否合法。

步骤207:响应于所述终端发送所述加密后的目标数据和所述密钥索引,依据所述密钥索引获取所述加密密钥。

在本步骤中,假设终端向服务器发送了加密后的目标数据和密钥索引,服务器再依据密钥索引中包括的库级索引和混淆后的随机数,来查找到一个加密密钥,并依据查找到的加密密钥来对加密后的目标数据进行解密,例如,对加密后的token进行解密。

具体的,服务器进行依据密钥索引来获取加密密钥的过程可以包括步骤B1~步骤B4:

步骤B1:从所述混淆后的随机数的奇数位获取随机数。

服务器首先从混淆后的随机数中的奇数位获取到随机数。例如,从第1、3、5、7、9位的内容中读取到随机数为6。

步骤B2:获取所述库级索引所标识的密钥库中保存的加密密钥的总大小。

接着确定密钥索引中包括的库级索引对应的密钥库,并查找得到该密钥库保存的加密密钥的总大小。例如,密钥库“A1”一共保存了110个加密密钥。

步骤B3:将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引。

接着将加密密钥的总大小的值,对随机数进行取模运算,得到库内索引。即,将总大小110对随机数6进行取模运算,得到的数值即为库内索引。

步骤B4:依据所述库内索引和所述库级索引确定所述目标数据的加密密钥。

进而依据库内索引和库级索引可以唯一确定一个加密密钥,用来对目标数据进行加密。

当然,如果库级索引为服务器新生成的新密钥库对应的新库级索引,则步骤B4具体可以包括步骤B41~步骤B44:

步骤B41:判断所述库级索引是否为新库级索引,如果为新库级索引,则进入步骤B42,如果不是,则进入步骤B43。

具体的,在库级索引中可以采用一个字段来标识当前库级索引是不是新库级索引,例如采用第一个字段为英文字符A来标识库级索引为一个新库级索引,采用第一个字段为英文字符B来标识库级索引是一个旧库级索引,本步骤则可以通过判断第一个字段的具体内容来实现。

步骤B42:在所述新库级索引对应的新密钥库中检索所述库内索引对应的那个加密密钥。

如果是新库级索引,则直接在新库级索引对应的新密钥库中,检索库内索引对应的加密密钥。

步骤B43:判断所述旧库级索引对应的旧密钥库是否可用,如果可用,则进入步骤B44,如果不可用,则服务器可以放弃接收到的密钥索引和对应的加密后的目标数据。

如果为旧库级索引,则可以先判断该旧库级索引对应的旧密钥库是否可用。具体的,服务器可以设置一个数据表,用来保存正在使用的、新密钥库和旧密钥库的各个库级索引。如果某个旧密钥库不再使用,则从该数据表中删除该不再使用的旧密钥库对应的库级索引,则本步骤中的实现可以是判断该数据表中是否能查询到所述旧库级索引,如果能查询到,则说明对应的旧密钥库可用,如果查询不到,则说明对应的旧密钥库不可用。

步骤B44:在所述旧库级索引对应的旧密钥库中检索所述库内索引对应的加密密钥。

服务器接着在可用的旧密钥库中,检索库内索引所标识的那个加密密钥。

步骤208:依据获取的加密密钥对加密后的目标数据进行解密,得到目标数据。

接着,服务器依据获取到的加密密钥来对加密后的目标数据进行解密,得到目标数据,例如未加密的token。

步骤209:依据所述目标数据对所述终端进行验证。

服务器可以依据步骤208中解密得到的token,与步骤206中下发给终端的token是否一致,来对终端进行验证,或者是否允许通过终端的请求等。如果一致则可以认为终端的请求合法,例如,已经输入过合法的验证码等。

可见,在本申请实施例中,为加密密钥生成的密钥索引中包括了库级索引和混淆后的随机数。如果服务器端的密钥库升级,也可以通过库级索引来标识出新密钥库或者仍然可用的旧密钥库,因此可以解决服务器端升级后的密钥库的新旧版本不能兼容的问题。同时,混淆后的随机数即便被攻击者破解,由于混淆的方式并不是公开的,还可以增加攻击者破解随机数的难度,从而提升传递密钥索引以及加密的目标数据的安全性。

参考图4,示出了本申请一种数据发送方法实施例的流程图,本实施例可以应用于终端和服务器建立会话连接的应用场景中,本实施例可以包括以下步骤:

步骤401:响应于所述服务器与终端建立连接,获取在建立连接过程中协商的会话密钥。

在本实施例中,具体的应用场景为会话复用。例如,终端和服务器已经通过握手协议建立了通信连接,这种情况下服务器会向终端发送会话票证session ticket,该在会话票证中包括加密后的会话密钥,和加密密钥的密钥索引,以方便下一次终端和服务器之间再次建立通信连接时,终端可以将该会话票证发送给服务器,服务器会利用密钥索引获取到加密密钥,再对加密后的会话密钥进行解密得到会话密钥,从而在会话复用时使用该会话密钥。

本步骤中服务器可以首先获取到的在于终端建立连接时协商出的会话密钥。

步骤402:所述服务器确定所述会话密钥的加密密钥和密钥索引。

在本步骤中,服务器为会话密钥确定一个加密密钥,以及为该加密密钥生成唯一对应的密钥索引。

其中,密钥索引可以包括:库级索引和混淆后的随机数,具体确定会话密钥的加密密钥和密钥索引的过程,可以包括步骤C1~步骤C3:

步骤C1:所述服务器生成新密钥库,并为新密钥库生成对应的新库级索引。

在本实施方式中,服务器对密钥库进行了升级,生成一个新密钥库并为该新密钥库生成对应的新库级索引。具体的生成新库级索引的方式,可以参考步骤201中的详细介绍,在此不再赘述。

步骤C2:所述服务器选择所述新库级索引作为所述加密密钥的库级索引。

服务器选择新库级索引作为加密密钥的库级索引。

步骤C3:所述服务器依据生成的随机数确定所述加密密钥的库内索引。

接着服务器生成一随机数,再利用该随机数来确定加密密钥的库内索引,例如,可以先获取步骤C2中的库级索引所标识的密钥库中保存的加密密钥的总大小,再将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引。

步骤C4:依据所述库级索引和库内索引查找得到所述加密密钥。

依据库级索引和库内索引可以唯一查找到一个加密密钥。

步骤C5:对所述随机数进行混淆,得到混淆后的随机数。

服务器再对随机数进行混淆,得到混淆后的随机数。其中一种可能的混淆方式可以为:将所述随机数填充至预设的空索引的奇数位,以及,在所述预设的空索引的偶数位添加预设的无效字符,得到混淆后的随机数。

步骤403:将使用所述加密密钥加密后的会话密钥和所述密钥索引,一并发送至所述终端。

服务器再将包括了使用加密密钥加密后的会话密钥,和密钥索引,通过会话票证,一并发给终端。

在步骤403之后,如果终端需要再次和服务器建立通信连接,则可以将上一次服务器下发的会话票证发送给服务器,由服务器执行步骤404~步骤407进行验证:

步骤404:响应于下一次建立连接前所述终端发送所述加密后的会话密钥和所述密钥索引,所述服务器依据所述密钥索引获取所述加密密钥。

终端再将服务器下发的会话票证,其中包括了加密后的会话密钥和密钥索引,发送给服务器,服务器对该会话票证进行解析,从而依据其中的密钥索引得到加密密钥。

具体的,服务器对密钥索引进行解析得到加密密钥的过程,可以包括:从所述混淆后的随机数的奇数位获取随机数,获取所述库级索引所标识的密钥库中保存的加密密钥的总大小,再将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引,最后依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥。

具体的,依据库内索引和库级索引来确定加密密钥的过程,可以包括:

先判断所述库级索引是否为新库级索引,如果为新库级索引,则在所述新库级索引对应的新密钥库中检索所述库内索引对应的加密密钥;如果为旧库级索引,则判断所述旧库级索引对应的旧密钥库是否可用,如果可用,则在所述旧库级索引对应的旧密钥库中检索所述库内索引对应的加密密钥,如果不可用,则可以直接丢弃该会话票证。

步骤405:依据获取的加密密钥对加密后的会话密钥进行解密,得到会话密钥。

接着服务器依据加密密钥对加密后的会话密钥进行解密,从而得到未加密的会话密钥。该会话密钥后续可以用于终端和服务器之间进行会话复用。

步骤406:验证所述会话密钥是否有效,如果是,则进入步骤307,如果否,则不执行后续流程。

服务器验证该会话密钥是否有效,如果与下发给终端的会话密钥一致,则终端验证通过,可以与终端之间进行会话复用,如果会话密钥无效,则可以不执行后续流程,即与终端不再进行会话复用并建立会话连接。

步骤407:与所述终端进行会话复用,从而建立会话连接。

本实施例中对于密钥索引的生成过程,以及依据密钥索引确定会话密钥的过程,都和上一个实施例类似,具体可以参考上一个实施例中的详细表述。

在本实施例中,服务器和终端之间建立会话连接时,可以采用上一次服务器下发的会话票证进行验证,利用会话票证中包括的密钥索引来得到加密密钥,进而解密得到会话密钥来进行会话复用,不仅使得终端和服务器之间的握手过程可以更为简洁,还可以通过密钥索引中包括的库级索引和混淆后的随机数,不仅解决了密钥库在升级过程中新旧版本的兼容性问题,还可以增加攻击者对密钥索引的分析难度,从而提升会话密钥以及数据发送的安全性。

对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

与上述本申请一种密钥索引的生成方法实施例所提供的方法相对应,参见图5,本申请还提供了一种密钥索引的生成装置实施例,在本实施例中,该装置可以集成于服务器端,该装置可以包括:

选择单元501,用于为加密密钥选择库级索引,所述库级索引用于唯一标识保存所述加密密钥的密钥库。

其中,所述选择单元501还可以用于:选择新库级索引作为所述加密密钥的库级索引。

确定库内索引单元502,用于依据生成的随机数确定所述加密密钥的库内索引,所述库内索引用于在所述库级索引标识的密钥库内唯一标识加密密钥。

其中,所述确定库内索引单元502可以包括:

获取大小子单元,用于获取所述库级索引所标识的密钥库中加密密钥的总大小;和,运算子单元,用于将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引。

混淆处理单元503,用于对所述随机数进行混淆,得到混淆后的随机数。

其中,所述混淆处理单元503具体可以包括:

填充子单元,用于将所述随机数填充至预设的空索引的奇数位,以及,添加子单元,用于在所述预设的空索引的偶数位添加预设的无效字符,得到混淆后的随机数。

组合单元504,用于将所述库级索引和混淆后的随机数组合为所述加密密钥的密钥索引。

在实际应用中,该装置还可以包括:

加密单元505,用于使用所述加密密钥对目标数据进行加密,得到加密后的目标数据,并将所述加密后的目标数据和所述密钥索引发送至终端。

获取加密密钥单元506,用于响应于所述终端发送所述加密后的目标数据和所述密钥索引,依据所述密钥索引获取所述加密密钥。

其中,所述获取加密密钥单元506可以包括:

获取随机数子单元,用于从所述混淆后的随机数的奇数位获取随机数;获取大小子单元,用于获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;运算子单元,用于将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引;和,确定子单元,用于依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥。

其中,所述确定子单元,具体可以用于:

判断所述密钥索引中的库级索引是否为新库级索引,如果为新库级索引,则在所述新库级索引对应的新密钥库中检索所述库内索引对应的加密密钥;如果为旧库级索引,则判断所述旧库级索引对应的旧密钥库是否可用,如果可用,则在所述旧库级索引对应的旧密钥库中检索所述库内索引对应的加密密钥。

解密数据单元507,用于依据获取的加密密钥对加密后的目标数据进行解密,得到目标数据。

验证数据单元508,用于依据所述目标数据对所述终端进行验证。

其中,所述装置还可以包括:

密钥库升级单元,用于生成新密钥库,并为新密钥库生成对应的新库级索引。

本实施例中的装置,为加密密钥生成的密钥索引中包括了库级索引和混淆后的随机数,如果服务器端的密钥库升级,也可以通过库级索引来标识出新密钥库或者仍然可用的旧密钥库,因此可以解决服务器端升级后的密钥库的新旧版本不能兼容的问题。同时,混淆后的随机数即便被攻击者破解,由于混淆的方式并不是公开的,还可以增加攻击者破解随机数的难度,从而提升传递密钥索引以及加密的目标数据的安全性。

参考图6所示,本申请还提供了一种数据发送装置实施例,在本实施例中,该装置可以集成于服务器端,该装置可以包括:

获取会话密钥单元601,用于响应于所述服务器与终端建立连接,获取在建立连接过程中协商的会话密钥。

确定密钥索引单元602,用于确定所述会话密钥的加密密钥和密钥索引,所述密钥索引用于唯一标识所述加密密钥。

其中,所述密钥索引可以包括:库级索引和混淆后的随机数,所述确定密钥索引单元602具体可以包括:

选择子单元,用于选择所述加密密钥的库级索引,所述库级索引用于唯一标识保存所述加密密钥的密钥库;确定子单元,用于依据生成的随机数确定所述加密密钥的库内索引,所述库内索引用于在密钥库内唯一标识一个加密密钥;查找子单元,用于依据所述库级索引和库内索引查找得到所述加密密钥;和,混淆处理子单元,用于对所述随机数进行混淆,得到混淆后的随机数。

其中,所述选择子单元还可以用于:选择所述新库级索引作为所述加密密钥的库级索引。

其中,所述确定子单元,具体用于:获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;将所述加密密钥的总大小对所述随机数进行取模运算,得到库内索引。

其中,所述混淆处理子单元,具体用于:将所述随机数填充至预设的空索引的奇数位,以及,在所述预设的空索引的偶数位添加预设的无效字符,得到混淆后的随机数。

发送单元603,用于将使用所述加密密钥加密后的会话密钥和所述密钥索引,一并发送至所述终端。

其中,所述装置还可以包括:

获取加密密钥单元604,用于响应于下一次建立连接前所述终端发送所述加密后的会话密钥和所述密钥索引,所述服务器依据所述密钥索引获取所述加密密钥。

其中,所述获取加密密钥单元604具体可以包括:

获取随机数子单元,用于从所述混淆后的随机数的奇数位获取随机数;获取大小子单元,用于获取所述库级索引所标识的密钥库中保存的加密密钥的总大小;运算子单元,用于将所述加密密钥的总大小对所述随机数进行取模运算,得到所述库内索引;确定子单元,用于依据所述库内索引和所述库级索引确定所述会话密钥的加密密钥。

其中,所述确定子单元具体可以用于:

判断所述库级索引是否为新库级索引,如果为新库级索引,则在所述新库级索引对应的新密钥库中检索所述库内索引对应的加密密钥;如果为旧库级索引,则判断所述旧库级索引对应的旧密钥库是否可用,如果可用,则在所述旧库级索引对应的旧密钥库中检索所述库内索引对应的加密密钥。

解密会话密钥单元605,用于依据获取的加密密钥对加密后的会话密钥进行解密,得到会话密钥。

验证会话密钥单元606,用于验证所述会话密钥是否有效。

会话复用单元607,用于在所述验证单元的结果为是的情况下,与所述终端建立连接。

其中,所述装置还可以包括:

密钥库升级单元,用于生成新密钥库,并为新密钥库生成对应的新库级索引。

本实施例中的服务器和终端之间建立会话连接时,可以采用上一次服务器下发的会话票证进行验证,利用会话票证中包括的密钥索引来得到加密密钥,进而解密得到会话密钥来进行会话复用,不仅使得终端和服务器之间的握手过程可以更为简洁,还可以通过密钥索引中包括的库级索引和混淆后的随机数,不仅解决了密钥库在升级过程中新旧版本的兼容性问题,还可以增加攻击者对密钥索引的分析难度,从而提升会话密钥以及数据发送的安全性。

图7是本发明实施例中服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。

服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的数据发送方法及装置、密钥索引的生成方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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