解密系统、方法、装置、电子设备及存储介质与流程

文档序号:25537216发布日期:2021-06-18 20:31阅读:88来源:国知局
解密系统、方法、装置、电子设备及存储介质与流程

本申请实施例涉及计算机应用技术领域,尤其涉及一种解密系统、方法、装置、电子设备及存储介质。



背景技术:

由国家密码管理局颁发的国家商用密码标准算法sm9是一种基于标识的密码(identity-basedcryptography,ibc)算法,该ibc算法基于用户的身份证号、手机号、邮箱地址等身份标识计算用户的公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,非常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。

目前,一般在解密设备本地保存用于解密密文数据的私钥,当解密设备接收到密文数据时,获取本地保存的私钥对密文数据进行解密。然而,若解密设备被攻击者入侵,很容易造成私钥泄露,进而影响数据的安全性。



技术实现要素:

本申请实施例提供一种解密系统、方法、装置、电子设备及存储介质,用以提高数据的安全性。

第一方面,本申请实施例中提供了一种解密系统,包括:n个解密设备、第一服务端和第二服务端;

所述第一服务端,用于接收所述第二服务端发送的私钥生成请求;基于n个私钥参数生成对应的n个私钥;将所述n个私钥及各自对应的私钥参数分别发送给所述n个解密设备,由所述n个解密设备分别保存各自对应的私钥及私钥参数;

所述第二服务端,用于接收密文数据;从所述n个解密设备中选择k个第一解密设备,其中,n以及k分别为正整数;向所述k个第一解密设备分别发送所述密文数据和第一解密请求;从所述k个第一解密设备中选择第二解密设备,向所述第二解密设备发送第二解密请求;

所述第一解密设备,用于接收到所述第二服务端发送的所述密文数据和所述第一解密请求,根据所述第一解密请求获取不包括自身的其它第一解密设备所保存的私钥参数;根据自身保存的私钥及对应的私钥参数、其它第一解密设备各自对应的私钥参数,处理所述密文数据以获得自身的解密参数并保存;将自身解密参数提供给所述第二解密设备;

所述第二解密设备,用于接收到所述第二服务端发送的第二解密请求时,获取k-1个其他第一解密设备各自的解密参数;根据所述k-1个其他第一解密设备各自的解密参数和自身的解密参数对所述密文数据进行解密。

第二方面,本申请实施例中提供了一种解密方法,应用于第一服务端,该方法包括:接收第二服务端发送的私钥生成请求;基于n个私钥参数生成对应的n个私钥;将所述n个私钥及各自对应的私钥参数分别发送给所述n个解密设备,由所述n个解密设备分别保存各自对应的私钥及私钥参数。

第三方面,本申请实施例中提供了一种解密方法,应用于第二服务端,该方法包括:接收密文数据;从所述n个解密设备中选择k个第一解密设备,其中,n以及k分别为正整数;向所述k个第一解密设备分别发送所述密文数据和第一解密请求;从所述k个第一解密设备中选择第二解密设备,向所述第二解密设备发送第二解密请求。

第四方面,本申请实施例中提供了一种解密方法,应用于解密设备,该方法包括:接收并保存第一服务端发送的私钥及对应的私钥参数;在接收到第二服务端发送的密文数据和第一解密请求时,获取不包括自身的其它第一解密设备所保存的私钥参数;根据自身保存的私钥及对应的私钥参数、其它第一解密设备各自对应的私钥参数,处理所述密文数据以获得自身的解密参数并保存;在接收到所述第二服务端发送的第二解密请求时,获取k-1个其它第一解密设备各自的解密参数;根据所述k-1个其他第一解密设备各自的解密参数和自身的解密参数对所述密文数据进行解密。

第五方面,本申请实施例中提供了一种解密装置,包括:

接收模块,用于接收所述第二服务端发送的私钥生成请求。

处理模块,用于基于n个私钥参数生成对应的n个私钥。

发送模块,用于将所述n个私钥及各自对应的私钥参数分别发送给所述n个解密设备,由所述n个解密设备分别保存各自对应的私钥及私钥参数。

第六方面,本申请实施例中提供了一种解密装置,包括:

接收模块,用于接收密文数据。

处理模块,用于从所述n个解密设备中选择k个第一解密设备,其中,n以及k分别为正整数。

发送模块,用于向所述k个第一解密设备分别发送所述密文数据和第一解密请求。

第七方面,本申请实施例中提供了一种解密装置,包括:

接收模块,用于接收并保存第一服务端发送的私钥及对应的私钥参数。

处理模块,用于在接收到第二服务端发送的密文数据和第一解密请求时,获取不包括自身的其它第一解密设备所保存的私钥参数。

处理模块,还用于根据自身保存的私钥及对应的私钥参数、其它第一解密设备各自对应的私钥参数,对所述密文数据进行处理获得自身的解密参数并保存。

处理模块,还用于在接收到所述第二服务端发送的第二解密请求时,获取k-1个其它第一解密设备各自的解密参数;根据所述k-1个其他第一解密设备各自的解密参数和自身的解密参数对所述密文数据进行解密。

第七方面,本申请实施例提供了一种电子设备,包括处理组件以及存储组件;

所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行;

所述处理组件用于:

接收所述第二服务端发送的私钥生成请求;基于n个私钥参数生成对应的n个私钥;将所述n个私钥及各自对应的私钥参数分别发送给所述n个解密设备,由所述n个解密设备分别保存各自对应的私钥及私钥参数;

或者,所述处理组件用于:

接收密文数据;从所述n个解密设备中选择k个第一解密设备,其中,n以及k分别为正整数;向所述k个第一解密设备分别发送所述密文数据和第一解密请求;从所述k个第一解密设备中选择第二解密设备,向所述第二解密设备发送第二解密请求。

或者,所述处理组件用于:

接收并保存第一服务端发送的私钥及对应的私钥参数;在接收到第二服务端发送的密文数据和第一解密请求时,获取不包括自身的其它第一解密设备所保存的私钥参数;根据自身保存的私钥及对应的私钥参数、其它第一解密设备各自对应的私钥参数,对所述密文数据进行处理获得自身的解密参数并保存;在接收到所述第二服务端发送的第二解密请求时,获取k-1个其它第一解密设备各自的解密参数;根据所述k-1个其他第一解密设备各自的解密参数和自身的解密参数对所述密文数据进行解密。

第八方面,本申请实施例提供了一种存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述解密方法。

本申请实施例中,依托于包括n个解密设备、第一服务端和第二服务端的解密系统,第一服务端确定n个私钥及对应的私钥参数并分发给n个解密设备;第二服务端随机从n个解密设备中选择k个第一解密设备参与解密任务,以及触发k个第一解密设备各自基于自身的私钥以及k个私钥参数确定各自的解密参数,并从k个第一解密设备任选一个作为第二解密设备;第二解密设备基于k个解密参数执行解密操作。由于解密密文数据所需的私钥分布在多个解密设备中,解密密文数据需要多个解密设备参与,且利用多个解密设备的私钥进行解密,增加了攻击者的破解难度,有效避免了私钥泄露,提高了数据安全性。

本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

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

图1示出了根据本申请实施例在一个实际应用中的解密系统的结构示意图;

图2示出了根据本申请提供的解密方法另一个实施例的流程图;

图3示出了根据本申请提供的解密方法另一个实施例的流程图;

图4示出了根据本申请提供的解密方法另一个实施例的流程图;

图5示出了根据本申请提供的解密装置一个实施例的结构示意图;

图6示出了根据本申请提供的解密装置另一个实施例的结构示意图;

图7示出了根据本申请提供的解密装置另一个实施例的结构示意图;

图8示出了根据本申请提供的电子设备一个实施例的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

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

图1示出了根据本申请实施例在一个实际应用中的解密系统的结构示意图。如图1所示,解密系统包括:多个解密设备102、第一服务端103以及第二服务端104。本申请实施例的应用场景是将加密设备101提供的密文数据传输至解密设备102进行解密。在该应用场景下,加密设备101可以分别和第一服务端103、第二服务端104建立网络连接,第二服务端104还与多个解密设备102、第一服务端103建立网络连接,第一服务端103还与多个解密设备102建立网络连接。其中,加密设备101、解密设备102包括但不限于台式计算机、智能手机、平板电脑、电子阅读器、智能穿戴设备以及其他用户终端。第一服务端103或第二服务端104可以是单个服务端或服务端集群,本申请实施例对此不做限制。

在本申请实施例中,加密设备101可以从第一服务端103获取参与到sm9算法的系统参数,以及加密设备101可以从解密设备102获取解密侧用户对应的用户身份标识等信息,并基于上述系统参数、解密侧用户对应的用户身份标识和现有的sm9算法对明文数据进行加密获取密文数据,并向第二服务端104发送密文数据。

为了便于理解,以下简单介绍加密设备的加密流程:

s1、加密设备101获取解密侧用户对应的用户身份标识,以及从第一服务端103获取系统参数。

其中,加密设备101可以从第二服务端104获取解密侧用户对应的用户身份标识,也可以从各个解密设备102获取解密侧用户对应的用户身份标识。另外,全部的解密设备保存同一个解密侧用户对应的用户身份标识。

s2、加密设备101按照公式qb=h1(idb||hid,n)×p1+ppub-e进行计算,以获取对应于解密设备的用户身份标识的公钥qb。

其中,第一服务端103可以是密钥生成中心侧的服务端。关于第一服务端103的提供的系统参数详见下文介绍。

其中,h1(idb||hid,n)表示将idb||hid、n作为哈希函数h1的输入函数,得到哈希函数h1的输出结果也即h1(idb||hid,n)。||表示拼接符号,idb||hid即拼接比特串idb与比特串hid所得的拼接结果。idb为解密侧用户对应的用户身份标识。

s3、加密设备101随机选择随机数r。

需要指出的是,r∈zn*,即r在zn*的取值范围内取值,zn*∈[1,n-1],即zn*为正整数。可以理解的是,加密设备从zn*的取值范围内随机选择一个随机数r。

s4、加密设备101按照公式c1=r×qb进行计算第一密文c1。

需要指出的是,c1可以视为第一加法循环群g1中的一个元素。

s5、加密设备101按照公式g=e(ppub-e,p2)进行计算,得到第一结果g。

可以理解的是,由于e()是从g1×g2到gt的双线性对映射,第一结果g可以视为乘法循环群gt中的一个元素。

s6、加密设备101按照公式w=gr进行计算得到第二结果w,以及将w转化为比特串形式的w。

可以理解的是,w是g的r次幂的幂运算结果,w也可以视为是乘法循环群gt中的一个元素。

为了便于数据处理,在得到第二结果w之后,将第二结果w转换为用比特(bit)编码的比特串。

s7、加密设备101按照加密明文的方法分类进行计算第二密文c2。

如果加密明文的方法是基于密钥派生函数kdf()的序列密码算法,则步骤s7的具体实现方式为:首先,确定整数klen。其中,整数klen=mlen+k2-len。其中,mlen为密文数据的长度,k2-len根据选择的mac()消息认证码函数进行确定。其次,按照公式k=kdf(c1||w||idb,klen)计算对称密钥k。其中,令k=k1||k2,k1为k中的前mlen个比特,k2为k中的后k2-len个比特。若k1全为0,则返回执行步骤s3;若k1不全为0,则按照公式c2=m⊕k1进行计算第二密文c2。

如果加密明文的方法是基于密钥派生函数kdf()的分组密码算法,则步骤s7的具体实现方式为:首先,确定整数klen,其中,整数klen=k1-len+k2-len。其中,k1-len由选定的分组密码算法确定,例如,基于选定的分组密码算法确定的k1-len可以为64或128,当然,k1-len并不限于64或128。k2-len根据选择的mac()消息认证码函数进行确定。其次,按照公式k=kdf(c1||w||idb,klen)计算对称密钥k。令k=k1||k2,其中,k1为k中的前k1-len个比特,k2为k中的后k2-len个比特。若k1全为0,则返回执行步骤s3;若k1不全为0,则按照公式c2=enc(k1,m)计算第二密文c2。其中,enc()表示分组密码算法中的加密函数,enc(k1,m)表示利用k1对明文数据m进行加密。

s8、加密设备101按照公式c3=mac(k2,c2)计算第三密文c3。其中,mac()是消息认证码函数。

s9、加密设备101输出密文数据c=c1||c2||c3。

可以理解的是,将c1、c2、c3依次进行拼接,得到密文数据c。

在本申请实施例中,第一服务端103可以是密钥生成中心的服务端。该第一服务端103可以承担以下任务:1、负责生成sm9算法所需的系统参数,并下发给加密设备101进行加密或解密设备102进行解密。2、负责为解密设备102生成解密密文数据所需的私钥。

在本申请实施例中,执行sm9算法所需的系统参数根据实际的业务需求进行确定。例如,系统参数包括但不限于以下参数中的一种或多种:安全参数z、正整数n、第一加法循环群g1、第二加法循环群g2、乘法循环群gt、第一生成元p1、第二生成元p2、双线性对映射e、密钥派生函数kdf()、哈希函数h1:{0,1}*×n→zn、主公钥ppub-e、加密私钥生成函数识别符hid。其中,zn在取值范围[0,n-1]之间取任意整数。

其中,安全参数z用于声明sm9算法的安全强度。密钥生成中心的第一服务端103可以接收密钥生成中心kgc的管理人员输入的安全参数z。

其中,双线性对映射e:g1×g2→gt,即从g1×g2到gt的双线性对映射。

其中,第一生成元p1为第一加法循环群的生成元,第二生成元p2为第二加法循环群的生成元。

其中,g1、g2以及gt的阶数均为n,也即g1、g2均为n阶加法循环群,gt为n阶乘法循环群。

其中,密钥生成中心的第一服务端103选择一个字节来表示加密私钥生成函数识别符hid。

其中,密钥生成中心的第一服务端103在生成主公钥ppub-e时,先随机选择主私钥ke,其中,ke∈zn,即ke在zn的取值范围内取值;接着,按照公式ppub-e=ke×p1计算主公钥ppub-e。需要指出的是,主私钥ke和主公钥ppub-e组成加密主密钥对。

关于上述系统参数的更多介绍可以参见国家密码管理局颁布sm9算法的相关标准文件。

需要指出的是,密钥生成中心的第一服务端103可以选择公开安全参数z、正整数n、第一加法循环群g1、第二加法循环群g2、乘法循环群gt、第一生成元p1、第二生成元p2、双线性对映射e、密钥派生函数kdf()、哈希函数h1:{0,1}*×n→zn、主公钥ppub-e、加密私钥生成函数识别符hid等系统参数,密钥生成中心kgc的第一服务端103对主私钥ke进行保密。

其中,密钥生成中心的第一服务端103所公开的系统参数,可以被加密设备101或解密设备102获取的,密钥生成中心的第一服务端103所保密的主私钥ke是不可以被加密设备101或解密设备102获取的。可以理解的是,密钥生成中心的第一服务端103向加密设备101或解密设备102发送的系统参数是所公开的系统参数,不包括保密的系统参数(例如主私钥ke)。

在本申请实施例中,密钥生成中心的第一服务端103还负责为解密设备102生成私钥。具体而言,密钥生成中心的第一服务端103可以基于系统参数、主私钥ke、解密设备102对应的用户身份标识生成私钥,并通过安全渠道下发给解密设备102。其中,需要指的是,全部的解密设备102保存同样一个解密侧用户的用户身份标识,另外,第二服务端中也可以保存解密侧用户的用户身份标识。

在本申请实施例中,密钥生成中心的第一服务端103还负责为解密设备102生成私钥。具体的,第一服务端103,用于接收第二服务端发送的私钥生成请求;基于n个私钥参数生成对应的n个私钥;将n个私钥及各自对应的私钥参数分别发送给n个解密设备,由n个解密设备分别保存各自对应的私钥及私钥参数。

可以理解的是,n个私钥及对应的私钥参数分别下发给n个解密设备,以使每个解密设备都保存一个私钥及对应的私钥参数。

在一种可能的实现方式中,第一服务端103基于n个私钥参数生成对应的n个私钥具体是:随机选择n个私钥参数,基于n个私钥参数生成对应的n个私钥。

在本申请实施例中,第二服务端104可以在接收到加密设备101发送的密文数据后,向密钥生成中心的第一服务端103发送私钥生成请求。第二服务端104也可以在尚未接收到加密设备101发送的密文数据时,向密钥生成中心的第一服务端103发送私钥生成请求。当然,第二服务端104何时向第一服务端103发送私钥生成请求,本申请实施例对此不做限制。

在本申请实施例中,第一服务端103响应接收到的私钥生成请求,为多个解密设备102中的每一个解密设备102分别生成一个私钥及对应的私钥参数。

在一些实施例中,第一服务端103可以基于sm9算法的系统参数、解密侧用户对应的用户身份标识确定解密所需的多个私钥。其中,用户身份标识于唯一标识解密侧用户。用户身份标识例如可以是解密侧用户的身份证号、手机号、邮箱地址等身份标识。

在一些实施例中,“基于sm9算法的系统参数、解密侧用户对应的用户身份标识确定解密所需的私钥”具体包括以下步骤:

s1、第一服务端103按照公式t1={h1(idb||hid,n)+ke}modn进行计算,若t1=0,则需要重新产生加密主密钥对,也即第一服务端重新生成主私钥ke和主公钥ppub-e;若t1≠0,则按照公式t2=(t1-1×ke)modn。

其中,||表示拼接符号,h1(idb||hid,n)表示将拼接idb与hid得到的拼接结果idb||hid以及n输入到哈希函数h1()中,进行哈希运算得到的哈希结果。modn表示进行模n的运算。

s2、第一服务端103随机选择k-1次多项式y=f(x)modn,且满足f(0)=t2。随机选择n个私钥参数,n个私钥参数分别为x1、x2……xn,且每个私钥参数在有限域fn中取值;接着第一服务端103分别计算n个私钥,n个私钥分别为f(x1)×p2、f(x2)×p2……f(xn)×p2。

可以理解的是,由于n个私钥参数是随机选择的,n个私钥也是随机生成的。当n个私钥及其对应私钥参数下发给n个解密设备后,由于私钥及其私钥参数的随机性,由此,使得攻击者需要破解多个解密设备的私钥及其私钥参数,才能破解密文数据。可以理解的是,n个随机的私钥及其私钥参数,可以极大地增加攻击者的破解难度,提高数据安全性。

其中,第一服务端103随机选择的k-1次多项式可以是构造的构造lagrange插值多项式p(u)。由相关技术对拉格朗日多项式的介绍可知,多项式p(x)是一个通过(u1,v1)、(u2,v2)……(un,vn)等n个点,并且次数不大于n-1的多项式。多项式p(u)的公式为,其中,

在本申请实施例中,第一服务端103得到n个私钥及其私钥参数之后,将n个私钥及其私钥参数分别通过安全渠道下发给n个解密设备。可以理解的是,将多个私钥分别下发给多个解密设备,相比现有技术中的只由一个解密设备存储用于解密密文数据的私钥,能够增加攻击者的破解难度,提高数据安全性。

在本申请实施例中,第二服务端104,用于接收密文数据;从n个解密设备中选择k个第一解密设备,其中,n以及k分别为正整数;向k个第一解密设备分别发送密文数据和第一解密请求;从k个第一解密设备中选择第二解密设备,向第二解密设备发送第二解密请求。

具体而言,第二服务端104在接收到密文数据时,可以采用随机选择方式地从n个解密设备中选择参与解密任务的k个第一解密设备,也可以采用规则选择方式从n个解密设备中选择参与解密任务的k个第一解密设备。其中,随机选择方式是一种无需按照某种规则选择的方式,即每个第一解密设备都是被随机选择出来的。规则选择方式是需要按照某种规则选择方式,即每个第一解密设备是按照某种规则从多个解密设备中选择出来的。例如,规则选择方式是选择尚未参与过解密任务的解密设备作为第一解密设备;又例如,规则选择方式是选择曾经参与过解密任务的解密设备继续作为第一解密设备。又例如,选择当前空闲的解密设备作为第一解密设备。当然,具体的规则选择方式可以视具体的业务需求设置,本申请实施例对此不做限制。

可以理解的是,从n个解密设备102中选择k个第一解密设备102,这就需要攻击者需要破解k个第一解密设备102的私钥及对应的私钥参数,显然,可以极大地增加攻击者的破解难度,进一步地提高数据安全性。

在本申请实施例中,多个解密设备102的数量至少为2个,第一解密设备102的数量至少为2个。可以理解的是,n可以大于k,n也可以等于k,也即第二服务端104可以选择全部的解密设备102都作为参与到解密任务的第一解密设备102,第二服务端104也可以从全部的解密设备102中选择部分作为参与到解密任务的第一解密设备102。

在本申请实施例中,第二服务端104选择好多个第一解密设备102之后,需要控制每个第一解密设备102执行解密参数获取步骤。这时,第二服务端104可以向每个第一解密设备102发送密文数据和第一解密请求,以使第一解密设备102执行解密参数获取步骤。关于第一解密设备102执行解密参数获取步骤参见后文的介绍。

在本申请实施例中,第二服务端104可以对每个第一解密设备102是否完成解密参数获取步骤进行监控,并在监控获知各个第一解密设备102各自获取到解密参数后,第二服务端104从多个第一解密设备102中任选一个作为第二解密设备102,并向第二解密设备102发送第二解密请求以请求第二解密设备102基于多个解密参数对密文数据进行解密。关于第二解密设备102如何基于多个解密参数对密文数据进行解密参见后文的介绍。

在本申请实施例中,对第二服务端104如何对每个第一解密设备102是否完成解密参数获取步骤进行监控的方式不做限制,以下介绍几种监控方式:

第一种:每个第一解密设备102可以在完成解密参数获取步骤之后,向第二服务端104发送通知信息,以通知第二服务端104该第一解密设备102完成了解密参数获取步骤,进而使得第二服务端104可以对每个第一解密设备102的解密参数获取步骤的完成状态进行实时监控。

第二种:第二服务端104可以周期性地请求每个第一解密设备102上报自身的解密参数获取步骤的处理状态,并在第一解密设备102上报的处理状态为完成状态时,停止请求每个第一解密设备102上报自身的解密参数获取步骤的处理状态。由此,使得第二服务端104可以对每个第一解密设备102的解密参数获取步骤的处理状态进行实时监控。

在本申请实施例中,第一解密设备102,用于接收到第二服务端104发送的密文数据和第一解密请求,根据第一解密请求获取不包括自身的其它第一解密设备102所保存的私钥参数;根据自身保存的私钥及对应的私钥参数、其它第一解密设备102各自对应的私钥参数,处理密文数据以获得自身的解密参数并保存;将自身解密参数提供给第二解密设备102。

在本申请实施例中,第一服务端103为多个解密设备102中的每个解密设备102分配一个私钥及对应的私钥参数,每个解密设备102接收并保存第一服务端103分配的私钥及对应的私钥参数。

在本申请实施例中,多个解密设备102中的任一解密设备102都有概率被选中作为参与到解密任务中的第一解密设备102。在任一个解密设备102选中作为第一解密设备102时,若该第一解密设备102接收到第二服务端104发送的密文数据和第一解密请求,该第一解密设备102执行解密参数获取步骤。

第一解密设备102执行解密参数获取步骤时,可以获取k-1个其他第一解密设备102所保存的私钥参数,并根据自身所保存的私钥及对应的私钥参数、k-1个其他第一解密设备102的私钥参数,处理密文数据以获取自身的解密参数并保存。

在一些实施例中,第一解密设备102获得自身的解密参数具体是:根据自身保存的私钥及对应的私钥参数、其它第一解密设备102各自对应的私钥参数计算第一结果;对密文数据中的第一密文和第一结果进行双线性对映射,得到解密参数,其中,第一密文由加密设备基于随机数和对应于解密设备102的用户身份标识的公钥生成。

需要指出的是,任一第一解密设备102在获取到自身的解密参数之后,还可以将自身的解密参数存储至公共存储区,由此,公共存储区可以存储k个第一解密设备102的解密参数。该公共存储区可以允许任一第一解密设备102访问,也即任一第一解密设备102可以从公共存储区获取k个第一解密设备102的解密参数。

需要指出的是,任一第一解密设备102在获取到自身的解密参数之后,可以向其他第一解密设备102发送自身的解密参数供其他第一解密设备102进行保存,这样任一第一解密设备102本地可以保存k个第一解密设备102的解密参数。

需要指出的是,任一第一解密设备102在获取到自身的解密参数之后,还可以响应第二解密设备102的请求,向第二解密设备102发送自身的解密参数,以使第二解密设备102本地可以保存k个第一解密设备102的解密参数,其中,第二解密设备102为多个第一解密设备102中任一个第一解密设备102。

假设包括多个解密设备102的解密设备102集合记为s0,s0={b1,b2……bn},b1,b2……bn分别表示n个解密设备102中任一个解密设备102;假设参与解密任务的第一解密设备102集合记为s1,s1={bi1,bi2……bik},对任一第一解密设备bij∈{b1,b2……bn},其中,j在1至k中任一个正整数。bij∈{b1,b2……bn}表示任一第一解密设备bij是从b1,b2……bn等n个解密设备102中选择出来的。

令s2={i1,i2……ik},对任一第一解密设备bij:

首先,按照公式pij=f(xij)×p2×πl∈s2,l≠ij{(-xl)÷(xij-xl)}计算第一结果pij,接着,计算解密参数wij=e(c1,pij),也即将第一密文c1和第一结果pij输入到e()函数中进行双线性对映射,所得结果即为解密参数wij。

由于l∈s2,可以理解的是,l可以为i1,i2……ik中的任一个数,在l为i1时,xl为bi1的私钥参数,在l为i2时,xl为bi2的私钥参数,以此类推,在l为ik时,xl为bik的私钥参数。

需要指出的是,xij为第一解密设备bij的私钥参数,xl为k-1个其他第一解密设备102中任一个的私钥参数f(xij)×p2为第一解密设备bij的私钥。pij可以理解为基于第一解密设备bij自身的私钥及对应的私钥参数,和k-1个其他第一解密设备102的私钥参数计算得到。

需要指出的是,任一第一解密设备bij在确定自身的解密参数wij时,还需要从密文数据c中提取第一密文c1。作为一种示例,可以基于密文数据c的属性信息从密文数据c中提取第一密文c1。

需要指出的是,加密设备101在确定密文数据c,还可以确定密文数据c的属性信息,以及加密设备101在向第二服务端104发送密文数据c时,还可发送密文数据c的属性信息给第二服务端104。第二服务端104在向解密设备102转发密文数据c,也可以发送密文数据c的属性信息。

其中,密文数据c的属性信息包括但不限于各个密文部分的比特串长度以及各个密文部分在密文数据c的位置等。具体的,c=c1||c2||c3,密文数据c的属性信息可以包括c1、c2或c3等各个密文部分的比特串长度,各个密文部分在密文数据c的位置。例如,密文数据c由50个比特组成的比特串,c1的比特串长度为30个比特,c1在密文数据c中的位置为第1至30个比特所在的位置。c2的比特串长度为10个比特,c2在密文数据c中的位置为第31至40个比特所在的位置。c3的比特串长度为10个比特,c3在密文数据c中的位置为第41至50个比特所在的位置。

在本申请实施例中,第二解密设备102,用于接收到第二服务端104发送的第二解密请求时,获取k-1个其他第一解密设备102各自的解密参数;根据k-1个其他第一解密设备102各自的解密参数和自身的解密参数对密文数据进行解密。

在本申请实施例中,多个第一解密设备102中的任一第一解密设备102都有概率被选中作为第二解密设备102。选中的第二解密设备102在接收到第二服务端104的第二解密请求时,获取k-1个其他第一解密设备102各自的解密参数;根据k-1个其他第一解密设备102各自的解密参数和自身的解密参数对密文数据进行解密。

需要指出的是,第二解密设备102可以从公共存储区获取k-1个其他第一解密设备102各自的解密参数,也可以获取本地预先保存的k-1个其他第一解密设备102各自的解密参数,本申请对此不做限制。

在一些实施例中,第二解密设备102根据k-1个其他第一解密设备102各自的解密参数和自身的解密参数对密文数据进行解密具体是:对k个解密参数进行相乘,将相乘结果作为目标解密参数;基于加密明文的密码方法和目标解密参数对密文数据进行解密。

具体的,在解密之前,第二解密设备102按照公式w′=πij∈s2wij计算目标解密参数w′,并将w′转化成比特串形式的w′。由于ij∈s2,ij可以为i1,i2……ik中的任一个数,在ij为i1时,wi1为bi1的解密参数,在ij为i2时,wi2为bi2的解密参数,以此类推,在ij为ik时,wik为bik的解密参数。另外,在得到目标解密参数w′之后,第二解密设备102可以按照加密明文的密码方法进行解密。

如果加密明文的方法是基于密钥派生函数kdf()的序列密码算法,则第二解密设备102解密步骤具体是:首先,确定整数klen。其中,整数klen=mlen+k2-len。其中,mlen为密文数据的长度,k2-len根据选择的mac()消息认证码函数进行确定。其次,按照公式k=kdf(c1||w||idb,klen)计算对称密钥k。其中,令k=k1||k2,k1为k中的前mlen个比特,k2为k中的后k2-len个比特。若k1全为0,则结束解密步骤。若k1不全为0,则按照公式m=c2⊕k1进行解密得到密文数据c的解密结果,解密结果即明文数据m。

如果加密明文的方法是基于密钥派生函数kdf()的分组密码算法,则第二解密设备102解密步骤具体是:首先,确定整数klen,其中,整数klen=k1-len+k2-len。其中,k1-len由选定的分组密码算法确定,例如,基于选定的分组密码算法确定的k1-len可以为64或128,当然,k1-len并不限于64或128。k2-len根据选择的mac()消息认证码函数进行确定。其次,按照公式k=kdf(c1||w′||idb,klen)计算对称密钥k。令k=k1||k2,其中,k1为k中的前k1-len个比特,k2为k中的后k2-len个的比特。若k1全为0,则结束解密流程;若k1不全为0,则按照公式m=dec(k1,c2)进行解密得到密文数据c的解密结果,解密结果即明文数据m。其中,dec()表示分组密码算法中的解密函数,dec(k1,c2)表示利用k1对第二密文c2进行解密。在解密得到明文数据m之后,第二解密设备102还按照公式c3′=mac(k2,c2)计算c3′,以及从密文数据c中取出c3,若c3′≠c3,则结束解密流程;若c3′=c3,则第二解密设备102确认c2未经过修改,这时第二解密设备102输出明文数据m。

本申请实施例中,依托于包括n个解密设备、第一服务端和第二服务端的解密系统,第一服务端确定n个私钥及对应的私钥参数并分发给n个解密设备;第二服务端随机从n个解密设备中选择k个第一解密设备参与解密任务,以及触发k个第一解密设备各自基于自身的私钥以及k个私钥参数确定各自的解密参数,并从k个第一解密设备任选一个作为第二解密设备;第二解密设备基于k个解密参数执行解密操作。由于解密密文数据所需的私钥分布在多个解密设备中,解密密文数据需要多个解密设备参与,且利用多个解密设备的私钥进行解密,增加了攻击者的破解难度,有效避免了私钥泄露,提高了数据安全性。

图2示出了根据本申请提供的解密方法另一个实施例的流程图。该方法的执行主体为第一服务端103。

如图2所示,本实施例提供的解密方法,可以包括以下步骤:

201、接收第二服务端104发送的私钥生成请求。

202、基于n个私钥参数生成对应的n个私钥。

203、将n个私钥及各自对应的私钥参数分别发送给n个解密设备,由n个解密设备分别保存各自对应的私钥及私钥参数。

关于第一服务端103执行解密方法的相关介绍详见前述介绍,在此不再赘述。

图3示出了根据本申请提供的解密方法另一个实施例的流程图。该方法的执行主体为第二服务端104。

如图3所示,本实施例提供的解密方法,可以包括以下步骤:

301、接收密文数据。

302、从n个解密设备中选择k个第一解密设备102,其中,n以及k分别为正整数。

303、向k个第一解密设备分别发送密文数据和第一解密请求。

304、从k个第一解密设备中选择第二解密设备,向第二解密设备发送第二解密请求。

关于第二服务端104执行解密方法的相关介绍详见前述介绍,在此不再赘述。

图4示出了根据本申请提供的解密方法另一个实施例的流程图。该方法的执行主体为解密设备102。

如图4所示,本实施例提供的解密方法,可以包括以下步骤:

401、接收并保存第一服务端103发送的私钥及对应的私钥参数。

402、在接收到第二服务端104发送的密文数据和第一解密请求时,获取不包括自身的其它第一解密设备所保存的私钥参数。

403、根据自身保存的私钥及对应的私钥参数、其它第一解密设备各自对应的私钥参数,对密文数据进行处理获得自身的解密参数并保存。

404、在接收到第二服务端104发送的第二解密请求时,获取k-1个其它第一解密设备各自的解密参数。

405、根据k-1个其他第一解密设备各自的解密参数和自身的解密参数对密文数据进行解密。

关于解密设备102执行解密方法的相关介绍详见前述介绍,在此不再赘述。

需要指出的是,多个解密设备中的任一解密设备均可以执行步骤401,在多个解密设备中的任一解密设备选择作为第一解密设备时,还可以执行402和403。在多个第一解密设备中的任一第一解密设备选择作为第二解密设备时还可以执行步骤404和405。

图5示出了根据本申请提供的解密装置一个实施例的结构示意图。如图5所示,本实施例提供的解密装置,可以包括:

接收模块501,用于接收第二服务端发送的私钥生成请求。

处理模块502,用于基于n个私钥参数生成对应的n个私钥。

发送模块503,用于将n个私钥及各自对应的私钥参数分别发送给n个解密设备,由n个解密设备分别保存各自对应的私钥及私钥参数。

图5的解密装置可以执行图2所示实施例的解密方法,其实现原理和技术效果不再赘述。对于上述实施例中的解密装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图6示出了根据本申请提供的解密装置另一个实施例的结构示意图。如图6所示,本实施例提供的解密装置,可以包括:

接收模块601,用于接收密文数据。

处理模块602,用于从n个解密设备中选择k个第一解密设备,其中,n以及k分别为正整数。

发送模块603,用于向k个第一解密设备分别发送密文数据和第一解密请求。

处理模块602,还用于从k个第一解密设备中选择第二解密设备。

发送模块603,还用于向第二解密设备发送第二解密请求。

图6的解密装置可以执行图3所示实施例的解密方法,其实现原理和技术效果不再赘述。对于上述实施例中的解密装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图7示出了根据本申请提供的解密装置另一个实施例的结构示意图。如图7所示,本实施例提供的解密装置,可以包括:

接收模块701,用于接收并保存第一服务端发送的私钥及对应的私钥参数。

处理模块702,用于在接收到第二服务端发送的密文数据和第一解密请求时,获取不包括自身的其它第一解密设备所保存的私钥参数。

处理模块702,还用于根据自身保存的私钥及对应的私钥参数、其它第一解密设备各自对应的私钥参数,对密文数据进行处理获得自身的解密参数并保存。

处理模块702,还用于在接收到第二服务端发送的第二解密请求时,获取k-1个其它第一解密设备各自的解密参数;根据k-1个其他第一解密设备各自的解密参数和自身的解密参数对密文数据进行解密。

图7的解密装置可以执行图4所示实施例的解密方法,其实现原理和技术效果不再赘述。对于上述实施例中的解密装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

在一个可能的设计中,图5至7所示实施例的解密装置可以实现为电子设备,如图8所示,该电子设备可以包括存储组件801以及处理组件802;

存储组件801用于存储一条或多条计算机指令,其中,一条或多条计算机指令供处理组件调用执行。

处理组件802用于:

接收第二服务端发送的私钥生成请求;基于n个私钥参数生成对应的n个私钥;将n个私钥及各自对应的私钥参数分别发送给n个解密设备,由n个解密设备分别保存各自对应的私钥及私钥参数;

或者,处理组件802用于:

接收密文数据;从n个解密设备中选择k个第一解密设备,其中,n以及k分别为正整数;向k个第一解密设备分别发送密文数据和第一解密请求;从k个第一解密设备中选择第二解密设备,向第二解密设备发送第二解密请求。

或者,处理组件802用于:

接收并保存第一服务端发送的私钥及对应的私钥参数;在接收到第二服务端发送的密文数据和第一解密请求时,获取不包括自身的其它第一解密设备所保存的私钥参数;根据自身保存的私钥及对应的私钥参数、其它第一解密设备各自对应的私钥参数,对密文数据进行处理获得自身的解密参数并保存;在接收到第二服务端发送的第二解密请求时,获取k-1个其它第一解密设备各自的解密参数;根据k-1个其他第一解密设备各自的解密参数和自身的解密参数对密文数据进行解密。

其中,处理组件802可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

存储组件801被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

电子设备还可以包括显示组件803,显示组件803可以为电致发光(el)元件、液晶显示器或具有类似结构的微型显示器、或者视网膜可直接显示或类似的激光扫描式显示器。

当然,电子设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。

输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。

通信组件被配置为便于电子设备和其他设备之间有线或无线方式的通信等。

如在本文所使用的,“电子设备”可以是远程web服务器、服务器、计算机联网设备、芯片组、台式计算机、笔记本式计算机、工作站,或任何其他处理设备或者装备。

其中,该电子设备可以为物理设备或者云计算平台提供的弹性计算主机等,此时电子设备即可以是指云服务器,上述处理组件、存储组件等可以是从云计算平台租用或购买的基础服务器资源。

本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被计算机执行时可以实现上述图2至图4所示实施例的解密方法。

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

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

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

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