具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
术语解释部分:
云计算:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
同态加密:同态加密是一种基于数学难题的特殊加密技术。对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。同态性一般分为加法同态和乘法同态两种,只具备其中一种性质的加密算法被称为半同态算法,同时具备两种性质的被称为全同态算法。
安全多方计算:安全多方计算是解决一组互不信任的参与方之间保护隐私的协同计算问题。要确保输入的独立性,计算的正确性,同时不泄露各输入值给参与计算的其他成员。
安全多方计算一般分为两种模型,半诚实模型和恶意模型。在半诚实模型中,半诚实成员也叫被动攻击者。在多方计算过程中,一个半诚实成员完全遵守协议的执行过程,中途不退出协议的执行过程,可以保留执行协议过程中的一些中间结果并通过这些中间结果试图分析推导其他成员的输入数据。在恶意模型中,恶意成员也即恶意攻击者,也是主动攻击者。在计算过程中,恶意攻击者可以不按照协议的流程执行,能够随意中断协议的运行,破坏协议的正常执行过程也能随意修改协议的中间结果或者与其他参与方相互勾结。
对称加密算法:对称加密算法指加密和解密使用相同密钥的加密算法。加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来,而在大多数的对称加密算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。
非对称加密算法:也称为公钥算法。非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
实施例一,如图1所示,本实施例提供了DNA序列相似率安全计算方法;
DNA序列相似率安全计算方法,包括:
S3:每个客户端获取待计算相似率的DNA序列;每个客户端不能获取其他客户端的待计算相似率的DNA序列;每个客户端利用自身的公钥对获取的待计算相似率的DNA序列进行加密处理,得到加密的待计算相似率的DNA序列;每个客户端将加密的待计算相似率的DNA序列发送给云服务器C;
S4:云服务器C将所有客户端的公钥进行累乘,生成公共公钥PK;云服务器C和云服务器S将加密的待计算相似率的DNA序列转换为通过公共公钥PK加密的密文,得到重新加密的待计算相似率的DNA序列;
S5:从云服务器C和云服务器S中分别选取重新加密的待计算相似率的DNA序列,对重新加密的待计算相似率的DNA序列进行同态加密运算,得到DNA序列相似率。
作为一个或多个实施例,所述方法的步骤S3之前,还包括:
S1:云服务器S生成公共参数PP和主密钥MS;云服务器S将公共参数PP发送给云服务器C;云服务器C将公共参数PP发送给各个客户端;
S2:每个客户端获取公共参数PP;每个客户端利用公共参数PP生成每个客户端自身的公钥和私钥。
作为一个或多个实施例,所述方法的步骤S5之后,还包括:
S6:云服务器C和云服务器S将DNA序列相似率转换为由客户端公钥加密的DNA序列相似率;
S7:云服务器C将加密后的DNA序列相似率分发给各个客户端,每个客户端利用自身的私钥解密,得到最终的DNA序列相似率。
作为一个或多个实施例,所述步骤S1中,云服务器S运用BCP算法生成公共参数PP和MS。
作为一个或多个实施例,所述步骤S3中,每个客户端获取待计算相似率的DNA序列,是指每个客户端接收用户输入的待计算相似率的DNA序列;客户端与待计算相似率的DNA序列存在一一对应关系。
作为一个或多个实施例,所述步骤S4中,云服务器C将所有客户端的公钥进行累乘,生成公共公钥PK具体步骤为:
云服务器C将所有客户端的公钥进行累乘,累乘之积模N,最后得到公共公钥PK。
作为一个或多个实施例,所述步骤S4中,云服务器C和云服务器S将加密的待计算相似率的DNA序列转换为通过公共公钥PK加密的密文,得到重新加密的待计算相似率的DNA序列;具体步骤包括:
云服务器C把加密的待计算相似率的DNA序列,分别与不同随机数同态加法混淆得到混淆密文,然后发送混淆后的用户密文给云服务器S;
云服务器S解密出混淆密文,然后再依次通过PK加密,发回云服务器C;
云服务器C再通过同态加法去除混淆即完成密文转换,得到重新加密的待计算相似率的DNA序列。
作为一个或多个实施例,所述步骤S5中,对重新加密的待计算相似率的DNA序列进行同态加密运算的具体步骤为:
对重新加密的DNA序列的对应位置的氮碱基均依次进行同态加法和同态乘法;
DNA序列不同氮碱基的计算结果的顺序进行随机调整;
对随机调整后的每个氮碱基的计算结果进行加密处理,得到同态加密运算的结果。
作为一个或多个实施例,所述步骤S5中,同态加密运算中的同态加法由云服务器C独立完成,同态加密运算中的同态乘法由云服务器C和云服务器S共同完成。
作为一个或多个实施例,所述BCP算法的算法英文名取自作者Emmanuel Bresson,Dario Catalano,David Pointcheval的姓缩写,类似RSA,BCP即为全称。
涉及BCP算法的论文:Bresson E,Catalano D,Pointcheval D.Asimple public-key cryptosystem with a double trapdoor decryption mechanism and itsapplications[C].ASIACRYPT.LNCS,2003,2894:37-54.
一.BCP公钥算法
在本公开采用的安全多方计算模型中,客户端加密解密数据,服务端间通信使用的密码算法均为BCP算法。
BCP算法自带加法同态性,支持双陷门解密。双陷门解密指除了和一般公钥算法一样公私钥对可以正常加解密以外,拥有MasterSecret的一方可以在没有对应私钥的情况下解密其公钥加密的数据,借助这个特性可以实现乘法同态,也就是全同态。
由于在加密时使用了随机数r,因此即使是对相同明文使用相同密钥加密,不同次加密得到的结果也不会相同,但对这些结果使用相同解密密钥解密时依然可以得到相同的明文。
BCP算法部分:
Setup(κ):κ是算法中N的最小比特长度,类似RSA2048中的2048,确定下κ之后,就可以随机生成N与p,q。生成公式为:N=pq,p=2p′+1,q=2q′+1,其中p,p′,q,q′均为素数。
接下来生成其余两项公共参数g和k:
gp′q′mod N2=1+kN,其中k∈[1,N-1],g是群ZN 2中的素数(g∈Z*N 2)且群ZN 2中元素的阶为pp′qq′。
生成如下:
PP(public parameters)=(N,k,g)
MS(master secret)=(p′,q′)
KeyGen(PP):选取随机数a且a∈ZN 2从而计算出:
h=ga mod N2,pk=h,sk=a
PP是公共参数,pk为公钥,sk为私钥;
加密部分:
Enc(PP,pk)(m):m为明文m∈ZN,r为随机数且r∈ZN 2
从而进行加密输出秘文(A,B):
A=gr mod N2
B=hr(1+mN)mod N2
解密部分:
Dec(PP,sk)(A,B):
m=[B/(Aa)-1mod N2]/N
用PP和私钥sk对(A,B)解密得到明文m;
MasterDec解密部分:
mDec(PP,pk,MS)(A,B):
a mod N=[hp′q′-1mod N2]/N
r mod N=[Ap′q′-1mod N2]/N
m=[(B/(gγ))p′q′-1mod N2]/N(γ定义为ar mod N)
用PP,公钥pk,MS对密文(A,B)解密得到m
二.基于BCP算法实现不可信第三方
本公开设置了两个服务器C和S一起作为不可信第三方,其中:
服务器C:
1、负责与客户端之间通信
2、负责存储客户端数据以及计算过程中的各种数据
3、只能存储BCP公钥算法公有参数
服务器S:
1、只能与C进行通信
2、负责存储BCP公钥算法私有参数
交互流程大体分为以下四步:
1、S初始化BCP算法,保存私有参数MS(Master Secret,以后简称MS)。
2、C从S获取公共参数PP(Public Parameters,以后简称PP)并存储之。
3、客户端从C获取PP,通过PP生成公私钥对,通过公钥加密DNA数据,并将公钥和加密数据上传至服务器C。
4、C和S通过同态加法,同态乘法,结果密文转换一系列交互计算完毕,客户端取回结果解密算出DNA相似率。
同态加法概述:BCP算法具备加法同态特性,同态加法可以直接在C进行计算。
已知:参与同态加法计算的密文为(A,B)和(A′,B′),并且这些密文使用同一个密钥加密,生成该密钥使用的公共参数PP(N,k,g)。加法函数记为add(A,B),其中A、B为使用同一密钥加密的密文。
1、(A,B)=(A·A′mod N2,B·B′mod N2),(A,B)即为(A,B)和(A′,B′)进行一次同态加法的结果,用加法函数表达为(A,B)=add((A,B),(A′,B′))。
密文转换概述:C和S将所有用户公钥累乘得到公共密钥,并通过一系列的交互将所有用户由自己公钥加密的密文转换为通过公共密钥加密的密文,为同态加密提供了条件。
已知:所有参与计算的密文分别为(A1,B1),…,(An,Bn),密文数量为n,这些密文的加密密钥分别为pk1,…,pkn,生成这些密钥使用的公共参数为PP(N,k,g)。
(1)C执行的上半部分
1、C将所有密文的加密密钥相乘之积模N得到公共密钥PK。
2、C依次为每个密文生成随机数τ1,…,τn,这些随机数服从ZN下的均匀分布。
3、C将这些随机数依次使用每个密文的加密密钥加密,得到
4、C将所有密文和所有被加密的随机数依次进行同态加法,得到
其中i∈(1,…,n)。
5、C将(pki,(Ci,Di))(其中i∈(1,…,n))发送给S。
(2)S部分
1、S将所有密文的加密密钥相乘之积模N得到公共密钥PK。模N就是mod N,对N取余,例如:25mod 3=1。
2、
(其中i∈(1,…,n)),S依次对(C
1,D
1),…,(C
N,D
N)使用它们的加密密钥和MasterSecret解密,得到z
1,…,z
n。
3、(Wi,Zi)=EncPK(zi)(其中i∈(1,…,n)),S依次对z1,…,zn使用公共密钥PK加密,得到(W1,Z1),…,(Wn,Zn)。
4、S将(W1,Z1),…,(Wn,Zn)发送给C。
(3)C执行的下半部分
(
Ai ,
Bi )=add((W
i,Z
i),Enc
PK(-τ
i))(其中i∈(1,…,n)),C将(W
1,Z
1),…,(W
n,Z
n)与
同态相加得到
(A 1,
B1 ),…,(
An ,
Bn ),其中-τ代表对τ作模N下的加法逆元。(
A1 ,
B1 ),…,(
An ,
Bn)即为由用户各自公钥加密转化为由公共密钥PK加密的用户数据。
同态乘法概述:同态乘法需要C与S通过一系列交互计算进行。
已知:参与同态乘法计算的密文为(A,B)和(A′,B′),并且这些密文使用同一个密钥加密,该密钥使用的公共参数PP(N,k,g)。乘法函数记为mult(A,B),其中A、B为使用同一密钥加密的密文。
(1)C执行的上半部分
1、C为(A,B)生成随机数μ1,为(A′,B′)生成随机数μ2,这些随机数服从ZN下的均匀分布。
2、C将μ1、μ2模N下的加法逆元依次使用PK加密,得到EncPK(-μ1)和EncPK(-μ2)。
3、C将(A,B)和EncPK(-μ1)进行同态加法得到(C,D),C将(A′,B′)和EncPK(-μ2)进行同态加法得到(C′,D′)。
4、C将(C,D)和(C′,D′)发送给S。
(2)S部分
1、z=mDec(PK,MS)(C,D)、z′=mDec(PK,MS)(C′,D′),S使用PK和MasterSecret对(C,D)和(C′,D′)解密,得到z和z′。
2、(Z1,Z2)=EncPK(z·z′),S将z和z′相乘的结果用PK加密得到(Z1,Z2)。由于z和z′均为在C处混淆过的明文,而明文都是整数,所以在算术意义上的整数的加减乘除都可以进行。
3、S将(Z1,Z2)发送给C。
(3)C执行的下半部分
1、(T1,T2)=EncPK(-μ1·μ2),C将μ1的加法逆元和μ2相乘并用PK加密得到(T1,T2)。
2、
C将Z
1、A的μ
2次方、A′的μ
1次方、T
1相乘再模N
2得到
A,C将Z
2、B的μ
2次方、B′的μ
1次方、T
2相乘再模N
2得到
B。(
A,
B)即为(A,B)和(A′,B′)进行一次同态乘法的结果。
结果密文转换概述:经过一系列对密文的同态加法和乘法的操作后得到了计算结果,最终C和S继续通过协议交互将使用公共公钥加密的计算结果转换为使用各个用户公钥加密的结果,并发回各个用户。
已知:计算结果(A,B),公共密钥PK,参与计算的密文数量为n,所有参与计算的密文的加密密钥pk1,…,pkn。
(1)C执行的上半部分
1、C生成一个服从ZN下随机分布的随机数τ。
2、C将τ使用PK加密得到EncPK(τ)。
3、(C,D)=add((A,B),EncPK(τ)),C将(A,B)和EncPK(τ)进行同态加法得到(C,D)。
4、C将(C,D)发送给S
(2)S部分
1、z=mDec(PK,MS)(C,D),S使用PK和MS对(C,D)进行解密得到z。
2、
(其中i∈(1,…,n)),S用每个加密密钥分别加密z得到(W
1,Z
1),…,(W
n,Z
n)。
3、S将(W1,Z1),…,(Wn,Zn)发送给C。
(3)C执行的下半部分
(其中i∈(1,…,n)),将(W
1,Z
1),…,(W
n,Z
n)分别与
进行同态加法得到(
A1 ,
B1 ),…,(
An ,
Bn )。(
A1 ,
B1 ),…,(
An ,
Bn )即为分别由用户各自公钥加密的本次计算的最终结果,用户通过自己私钥解密即可得到。
服务端所做的工作为将参与计算的用户密文转换为由同一个密钥加密,再将参与者的密文分别进行一次同态加法和同态乘法得到结果,然后再把结果转换为由各个用户公钥加密的版本。
三.服务端打乱计算结果的意义
本公开需要计算的,仅为用户之间DNA序列的相似率,而如果两段DNA序列的每位按同样顺序打乱,对相似率的计算结果是没有影响的。关键是,若服务端不进行打乱,一方用户解密之后通过自己的DNA序列和比对结果一一对应即可逆向出其他用户的DNA序列,安全性将无法得到保证。
借助不完全可信第三方进行比对,是利用密码学技术的新兴方案,正越来越多地被采用。根据使用的密码学知识不同,有不同的实现,本公开正是采用密码学技术的,借助不完全可信第三方比对的实现之一。本公开采用自带加法同态、支持双陷门解密的BCP公钥算法以及基于该算法的一系列交互流程实现了BCP算法的全同态,又通过真值表映射的方式,将DNA序列比对转化为了通过同态加乘可以解决的问题,实现了对密文状态下的DNA数据比对。
本公开适用于基因技术中的DNA序列比对领域。更确切的说,是适用于多个用户之间“安全地”计算同长度DNA序列相似率的场景。DNA序列比对有多种计算场景,如计算DNA相似率,计算DNA编辑距离等等。同长度DNA相似率计算,即计算两段长度相同的DNA序列之间相同的位数占总长度的比例,例如,Alice的DNA序列为AATTA,Bob的DNA序列为TGTCA,长度均为5,他们的第3、5位相同,则他们的DNA相似率为40%。
1.用户数据明文存储问题,用户提交给C的均为通过自己公钥加密的密文,私钥只有用户自己保有,S虽存有MS(MasterSecret)但C将用户数据发送给S之前都进行了随机数盲化,S通过MasterDec解密后无法得到用户的原始明文,而C既没有用户私钥也没有MS,这就保证了用户数据不可能在第三方处泄露。
2.过于依赖可信第三方问题,在本公开中也得到解决。只要求采用能遵循协议交互的第三方就可以保证用户数据安全,用户数据可以任意让第三方查看、存储,在可信度要求上比借助完全可信第三方要低的多。
3..第三方遭到恶意劫持时用户数据泄露问题,即使第三方遭到恶意劫持,用户数据泄露,攻击者因为没有私钥,也无法解密用户数据。
实施例二,如图2所示,本实施例提供了DNA序列相似率安全计算系统;
DNA序列相似率安全计算系统,包括:云服务器S,所述云服务器S与云服务器C连接,所述云服务器C与若干个客户端连接;
每个客户端获取待计算相似率的DNA序列;每个客户端不能获取其他客户端的待计算相似率的DNA序列;每个客户端利用自身的公钥对获取的待计算相似率的DNA序列进行加密处理,得到加密的待计算相似率的DNA序列;每个客户端将加密的待计算相似率的DNA序列发送给云服务器C;
云服务器C将所有客户端的公钥进行累乘,生成公共公钥PK;云服务器C和云服务器S将加密的待计算相似率的DNA序列转换为通过公共公钥PK加密的密文,得到重新加密的待计算相似率的DNA序列;
从云服务器C和云服务器S中分别选取重新加密的待计算相似率的DNA序列,对重新加密的待计算相似率的DNA序列进行同态加密运算,得到DNA序列相似率。
作为一个或多个实施例,所述系统,还包括:
云服务器S生成公共参数PP和MS;云服务器S将公共参数PP发送给云服务器C;云服务器C将公共参数PP发送给各个客户端;
每个客户端获取公共参数PP;每个客户端利用公共参数PP生成每个客户端自身的公钥和私钥。
作为一个或多个实施例,所述系统,还包括:
云服务器C和云服务器S将DNA序列相似率转换为由客户端公钥加密的DNA序列相似率;
云服务器C将加密后的DNA序列相似率分发给各个客户端,每个客户端利用自身的私钥解密,得到最终的DNA序列相似率。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。