应用于数据协同加密系统的加密方法、解密方法与流程

文档序号:19321048发布日期:2019-12-04 00:32阅读:307来源:国知局
应用于数据协同加密系统的加密方法、解密方法与流程

本申请实施例涉及计算机技术领域,具体涉及应用于数据协同加密系统的加密方法、解密方法。



背景技术:

数据分享是云计算环境下一个非常重要的应用,而云服务商往往是不能完全信任的第三方服务商。要保证数据的安全分享,需要将待分享数据加密后再上传。传统的加密机制,加密时需要用到解密方的密钥,而基于云计算的数据分享场景下,加密时往往尚无法确定解密者,因此并不适用。

代理重加密机制下,半可信代理人能够通过授权人产生的转换密钥将用授权人的公钥加密的密文转换为用被授权人的公钥加密的密文。在转换过程中,代理人无法得到数据的明文信息。因此,代理重加密机制可用于云计算环境下的数据分享场景。

同时,在一些应用场合,存在需要多个解密者协作才能成功解密获取明文的需求。使用密钥分割技术可以实现协同地解密,但是密钥分割技术采用的密钥分量是由加密密钥生成的,密钥分量需要通过安全的信道传输给解密者集群,存在密钥安全分发的困难。



技术实现要素:

本申请实施例的目的在于提出了一种改进的应用于数据协同加密系统的加密方法、解密方法,来解决以上背景技术部分提到的技术问题。

第一方面,本申请实施例提供了一种应用于数据协同加密系统的加密方法,系统包括:数据访问端集群、数据管理端、数据服务端;该加密方法包括:数据管理端对明文数据进行加密,得到第一密文,并将第一密文发送至数据服务端;数据访问端集群根据各个数据访问端分别对应的私钥,生成协同公钥,并将协同公钥发送至数据管理端,其中,数据访问端集群中的每个数据访问端的私钥不共享;数据管理端基于协同公钥生成重加密密钥,并将重加密密钥发送至数据服务端;数据服务端基于第一密文和重加密密钥,生成第二密文。

在一些实施例中,数据访问端集群中的数据访问端分别对应的私钥,预先根据如下步骤生成:对于数据访问端集群中的每个数据访问端,该数据访问端从预设的数据集合中选择数据作为该数据访问端对应的私钥。

在一些实施例中,对明文数据进行加密,得到第一密文,包括:获取数据管理端对应的公钥,以及从预设的数据数据集合中选择数据作为加密用数据基于数据管理端对应的公钥和加密用数据,对明文数据进行加密,生成第一密文。

在一些实施例中,基于协同公钥生成重加密密钥,包括:基于协同公钥和数据管理端对应的私钥,生成重加密密钥。

在一些实施例中,根据各个数据访问端分别对应的私钥,生成协同公钥,包括:数据访问端集群中的第一解密数据访问端基于对应的私钥,生成中转公钥;第一解密数据访问端从数据访问端集群中的未生成中转公钥的其他数据访问端中确定第一目标数据访问端;第一解密数据访问端将所生成的中转公钥发送至第一目标数据访问端;第一目标数据访问端执行如下生成步骤:第一目标数据访问端利用接收的中转公钥和对应的私钥,生成新的中转公钥;确定数据访问端集群中是否存在未生成中转公钥的数据访问端;如果不存在,将最近一次生成的中转公钥确定为协同公钥;如果存在,从数据访问端集群中的未生成中转公钥的其他数据访问端中重新确定第一目标数据访问端;重新确定的第一目标数据访问端继续执行生成步骤。

在一些实施例中,系统还包括系统管理端;以及在数据管理端对明文数据进行加密,得到第一密文之前,方法还包括:系统管理端对系统进行初始化操作。

在一些实施例中,数据服务端为云服务端。

第二方面,本申请实施例提供了一种应用于数据协同加密系统的解密方法,该解密方法包括:数据访问端集群中的第一解密数据访问端从数据服务端获取第一密文和第二密文,其中,第一解密数据访问端为用于协同解密的首个数据访问端;基于第一密文和第二密文,由数据访问端集群中的数据访问端分别利用对应的私钥协同地进行解密,由第二目标数据访问端得到明文数据,其中,第二目标数据访问端为待获得明文数据的数据访问端。

在一些实施例中,由数据访问端集群中的数据访问端分别利用对应的私钥协同地进行解密,得到明文数据,包括:第一解密数据访问端基于对应的私钥和第二密文,生成中转密文;第一解密数据访问端从数据访问端集群中的未生成中转密文的其他数据访问端中确定下一个数据访问端,并将所生成的中转密文发送至下一个数据访问端;下一个数据访问端执行如下解密步骤:利用接收的中转密文和对应的私钥,生成新的中转密文;确定数据访问端集群中是否存在未生成中转密文的数据访问端;如果不存在,基于最近一次生成的中转密文和第一密文进行解密,得到明文数据;如果存在,从数据访问端集群中的未生成中转密文的其他数据访问端中重新确定下一个数据访问端;重新确定的下一个数据访问端继续执行解密步骤。

本申请实施例提供的应用于数据协同加密系统的加密方法、解密方法,通过数据管理端对明文数据进行加密,得到第一密文,数据访问端集群根据各个数据访问端分别对应的私钥,生成协同公钥,数据管理端基于协同公钥生成重加密密钥,数据服务端基于第一密文和重加密密钥,生成第二密文,解密时,多个数据访问端协同地对第二密文进行解密,从而基于代理重加密技术,实现了对协同解密的支持,提高了数据传输的安全性,并且使得数据分享策略更加灵活,能够支持任意个用户。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的应用于数据协同加密系统的加密方法的一个实施例的时序图;

图3是根据本申请的应用于数据协同加密系统的解密方法的一个实施例的流程图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请实施例的数据协同加密系统的示例性系统架构100。

如图1所示,系统架构100可以包括数据访问端集群101、数据管理端102、数据服务端103和网络104。网络104用以在数据访问端集群101、数据管理端102、数据服务端103之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

数据服务端103可以是提供各种服务的服务器,例如对数据管理端102上传的文件提供服务的云端服务器。

数据访问端集群101包括的数据访问端可以是供用户使用的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机、台式计算机等。

应该理解,图1中的数据访问端集群101、数据管理端102、数据服务端103和网络104的数目仅仅是示意性的。根据实现需要,可以具有任意数目的数据访问端集群101、数据管理端102、数据服务端103和网络104。

继续参考图2,其示出了根据本申请的应用于数据协同加密系统的加密方法的一个实施例的时序图200。其中,数据协同加密系统包括:数据访问端集群、数据管理端、数据服务端(如图1所示),该方法包括以下步骤:

步骤201,数据管理端对明文数据进行加密,得到第一密文,并将第一密文发送至数据服务端。

在本实施例中,数据管理端(即待加密的文件的属主)可以按照各种方法对明文数据进行加密,得到第一密文,并将第一密文发送至数据服务端。作为示例,数据管理端可以利用椭圆曲线加密算法对明文数据进行加密。

在本实施例的一些可选的实现方式中,上述系统还包括系统管理端。在步骤201之前,该方法还可以包括:

系统管理端对系统进行初始化操作。初始化操作可以为数据管理端、数据访问端集群设置数据加密、解密的机制。例如,可以采用现有的椭圆曲线加密算法,设置大素数p,椭圆曲线群g,g1。其中,g和g1的为p阶椭圆曲线群。g的生成元为g。定义双线性映射e:g×g→g1,计算z=e(g,g)。公开g、e、g、g1、z。

在本实施例的一些可选的实现方式中,数据管理端可以按照如下步骤对明文数据进行加密,得到第一密文:

首先,获取数据管理端对应的公钥,以及从预设的数据集合中选择数据作为加密用数据。其中,数据集合可以是系统管理者预先生成的。例如,数据集合可以包括区间为[0,p-1]中的数。数据管理端对应的私钥也可以是预先从数据集合中选择的。作为示例,假设明文为m,数据管理端的公钥为其中,do为数据管理端对应的私钥,d0∈zp。数据管理端随机选择k∈zp,k即为加密用私钥。

然后,基于数据管理端对应的公钥和加密用数据,对明文数据进行加密,生成第一密文。继续上述示例,计算c3=mzk。得到第一密文(c1,c2,c3),并将(c1,c2,c3)上传至数据服务端。

在本实施例的一些可选的实现方式中,数据服务端可以为云服务端。使用云服务端,可以使用户的加密后的文件的存储更加方便快捷,提高用户管理文件的效率。

步骤202,数据访问端集群根据各个数据访问端分别对应的私钥,生成协同公钥,并将协同公钥发送至数据管理端。

在本实施例中,数据访问端集群可以根据各个数据访问端分别对应的私钥,生成协同公钥,并将协同公钥发送至数据管理端,其中,数据访问端集群中的每个数据访问端的私钥不共享。

具体地,数据访问端集群可以按照各种方法生成协同公钥。例如,第一个数据访问端根据预设的算法对其对应的私钥进行计算,得到计算结果,将计算结果发送至下一个数据访问端,下一个数据访问端利用接收的计算结果和对应的私钥,继续进行计算,得到新的计算结果,将计算得到的计算结果再发送至下一个数据访问端,以此类推,直到最后一个数据访问端计算得到计算结果,将该计算结果确定为协同公钥。

在本实施例的一些可选的实现方式中,可以按照如下步骤生成协同公钥:

步骤一,数据访问端集群中的第一解密数据访问端基于对应的私钥,生成中转公钥。其中,第一解密数据访问端可以是数据访问端集群中的任一个。作为示例,第一解密数据访问端可以是编号为1的数据访问端。第一解密数据访问端可以按照预设的算法,生成中转公钥。例如,假设第一解密数据访问端为u1,则其生成的中转公钥为d1=gd1。

步骤二,第一解密数据访问端从数据访问端集群中的未生成中转公钥的其他数据访问端中确定第一目标数据访问端。具体地,第一解密数据访问端可以按照各种方式确定第一目标数据访问端。作为示例,可以按照数据访问端的编号顺序确定第一目标数据访问端。

步骤三,第一解密数据访问端将所生成的中转公钥发送至第一目标数据访问端。第一目标数据访问端执行如下生成步骤(包括步骤四-步骤六)。

步骤四,第一目标数据访问端利用接收的中转公钥和对应的私钥,生成新的中转公钥。作为示例,假设第一目标数据访问端为uj,其中,j为第一目标数据访问端的编号。其生成的中转公钥可以为其中,d123...j-1为接收的来自上一个数据访问端的中转公钥。dj为uj的私钥。

步骤五,确定数据访问端集群中是否存在未生成中转公钥的数据访问端。作为示例,第一目标数据访问端可以确定其对应的编号是否为最大的编号,如果是,则数据访问端集群中不存在未生成中转公钥的数据访问端。

步骤六,如果不存在,将最近一次生成的中转公钥确定为协同公钥。作为示例,假设最近一次生成中转公钥的第一目标数据访问端的编号为n,其中,n为数据访问端集群中的数据访问端的数量。则协同公钥可以为

步骤七,如果存在,从数据访问端集群中的未生成中转公钥的其他数据访问端中重新确定第一目标数据访问端;重新确定的第一目标数据访问端继续执行上述生成步骤(即步骤四-步骤六)。

作为示例,可以按照数据访问端的编号顺序,从数据访问端集群中重新确定第一目标数据访问端。

在本实施例中,上述数据访问端集群中的每个数据访问端对应于一个私钥。私钥不公开。私钥可以是数据访问端预先根据现有的各种密钥生成算法生成的密钥。

在本实施例的一些可选的实现方式中,数据访问端集群中的数据访问端分别对应的私钥,可以预先根据如下步骤生成:

对于数据访问端集群中的每个数据访问端,该数据访问端从预设的数据集合中选择数据(例如随机选择出的随机数)作为该数据访问端对应的私钥。其中,数据集合可以是系统管理者预先生成的。例如,数据集合可以包括区间为[0,p-1]中的数。作为示例,数据集合可以为上述zp,假设某个数据访问端的编号为i,该数据访问端可以随机选择di∈zp,di为i的私钥。数据访问端还可以根据私钥计算对应的公钥,例如计算di即i的公钥。其中,公开di,保密di。

步骤203,数据管理端基于协同公钥生成重加密密钥,并将重加密密钥发送至数据服务端。

在本实施例中,数据管理端可以基于协同公钥生成重加密密钥,并将重加密密钥发送至数据服务端。具体地,数据管理端可以按照各种现有的数据加密方法对协同公钥进行加密。

在本实施例的一些可选的实现方式中,数据管理端可以基于协同公钥和数据管理端对应的私钥,生成重加密密钥。作为示例,数据管理端可以按照如下公式对协同公钥进行加密,得到重加密密钥re-key:

其中,d123...n为协同公钥,d0为数据管理端的私钥。

步骤204,数据服务端基于第一密文和重加密密钥,生成第二密文。

在本实施例中,数据服务端基于第一密文和重加密密钥,生成第二密文。

具体地,数据服务端可以按照如下公式生成第二密文:

其中,上述公式中的各参数可以参考上述各示例,这里不再赘述。

本申请的上述实施例提供的方法,通过数据管理端对明文数据进行加密,得到第一密文,数据访问端集群根据各个数据访问端分别对应的私钥,生成协同公钥,数据管理端基于协同公钥生成重加密密钥,数据服务端基于第一密文和重加密密钥,生成第二密文,从而基于代理重加密技术,实现了对协同解密的支持,提高了数据传输的安全性,并且使得数据分享策略更加灵活,能够支持任意个用户。

进一步参考图3,其示出了根据本申请的应用于如图1所示的数据协同加密系统的解密方法的一个实施例的流程300。该方法包括以下步骤:

步骤301,数据访问端集群中的第一解密数据访问端从数据服务端获取第一密文和第二密文。

在本实施例中,数据访问端集群中的第一解密数据访问端从数据服务端获取第一密文和第二密文。其中,第一解密数据访问端为用于协同解密的首个数据访问端。通常,第一解密数据访问端可以是数据访问端集群中的任一个。例如,可以从数据访问端集群中随机选择一个数据访问端作为第一解密数据访问端。当用户欲通过其使用的数据访问端获得明文数据时,系统可以首先以随机的方式选择第一解密数据访问端,第一解密数据访问端可以从数据服务端获取预先对明文数据进行加密生成的第一密文和第二密文。

步骤302,基于第一密文和第二密文,由数据访问端集群中的数据访问端分别利用对应的私钥协同地进行解密,由第二目标数据访问端得到明文数据。

在本实施例中,数据访问端集群中的数据访问端可以分别利用对应的私钥协同地进行解密,由第二目标数据访问端得到明文数据。其中,第二目标数据访问端为待获得明文数据的数据访问端。数据访问端集群中的部分或全部数据访问端可以参与协同解密,通常,数据访问端集群中的所有数据访问端均参与协同解密。具体地,数据访问端集群可以按照各种方法对第一密文和第二密文进行协同地解密。例如,第一解密数据访问端利用其对应的私钥,对第一密文和第二密文进行解密计算,得到计算结果,将计算结果发送至下一个数据访问端。下一个数据访问端利用接收的计算结果和对应的私钥,继续进行解密计算,得到新的计算结果,将计算得到的计算结果再发送至下一个数据访问端,以此类推,直到最后一个数据访问端计算得到计算结果,将该计算结果确定为明文数据。其中,上述最后一个数据访问端即为第二目标数据访问端。通常,上述协同解密的方法中,可以随机地确定下一个数据访问端。

在本实施例的一些可选的实现方式中,数据访问端集群可以按照如下步骤得到明文数据:

步骤一,第一解密数据访问端基于对应的私钥和第二密文,生成中转密文。如上述图2对应实施例中描述的内容,第二密文如下式所示:

第一解密数据访问端u1执行运算其中,d1为u1的私钥,c1”为中转密文。

步骤二,第一解密数据访问端从数据访问端集群中的未生成中转密文的其他数据访问端中确定下一个数据访问端,并将所生成的中转密文发送至下一个数据访问端。具体地,第一解密数据访问端可以按照各种方式确定下一个数据访问端。作为示例,可以按照随机地确定下一个数据访问端。需要说明的是,由于第二目标数据访问端为待获得明文数据的数据访问端,因此,将第二目标数据访问端作为最后一个执行解密步骤的数据访问端。下一个数据访问端执行如下解密步骤(包括步骤三-步骤五)。

步骤三,利用接收的中转密文和对应的私钥,生成新的中转密文。作为示例,假设下一个数据访问端为u2,其生成的中转密文可以为依此类推,假设下一个数据访问端为uj,其中,j为下一个数据访问端的编号,其生成的中转密文可以为其中,c12...j-1″为接收的中转密文。dj为uj的私钥。

步骤四,下一个数据访问端确定数据访问端集群中是否存在未生成中转公钥的数据访问端。

步骤五,如果不存在,基于最近一次生成的中转密文和第一密文进行解密,得到明文数据。作为示例,假设最近一次生成中转密文的数据访问端为un,则un计算得到的中转密文为c12...n″=zk。根据公式c3=mzk,计算明文数据需要说明的是,当不存在未生成中转公钥的数据访问端时,最后一个执行步骤五的数据访问端即为第二目标数据访问端。

步骤六,如果存在,从数据访问端集群中的未生成中转密文的其他数据访问端中重新确定下一个数据访问端;重新确定的下一个数据访问端继续执行解密步骤(即步骤三-步骤五)。

通过循环地执行上述解密步骤,每个数据访问端均参与了解密过程,从而提高了数据加密的安全性。

本申请的上述实施例提供的方法,通过数据访问端集群中的数据访问端分别利用对应的私钥协同地进行解密,得到明文数据,从而实现了解密过程由多个终端完成,提高了解密过程的复杂程度,有利于提高数据传输的安全性。此外,本申请实施例不存在需要传输的秘密信息。各解密者使用本地生成的私钥完成解密。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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