一种云计算环境中并行同态数据加密方法转让专利

申请号 : CN201510339182.X

文献号 : CN105162590B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨庚杨倍思胡持闵兆娥屠袁飞滕玮

申请人 : 南京邮电大学

摘要 :

本发明公开了一种云计算环境中并行同态数据加密方法,包括以下步骤:步骤1,根据给定的安全强度要求参数和加密后明文数据的比特长度,生成私钥和公钥;步骤2,将明文数据等分成N块,记为m1,…,mN,每一块独立进行加密运算,最后一块如长度不够,用零填充;步骤3,将步骤2分块后的明文数据在Map中用步骤1生成的公钥进行并行加密处理,得到加密后的密文数据c1,…,cN;步骤4,将步骤3得到的密文数据c1,…,cN在Reduce中进行拼接,得到完整的密文c。本发明通过对明文数据进行分组加密,利用同态加密算法和云计算环境的MapReduce机制,实现对整个文件的高速并行加密。

权利要求 :

1.一种云计算环境中并行同态数据加密方法,其特征在于:包括以下步骤:

步骤1,根据给定的安全强度要求参数λ和对明文数据分块后每块长度的比特数k,生成私钥sk,根据生成的私钥sk生成公钥pk;

步骤2,将明文数据m等分成N块,记为m1,…,mN-1,mN,且每块长度的字节数为k/8,mN的长度等于或小于m1,…,mN-1的长度,当mN的长度小于m1,…,mN-1的长度时,mN后面用零补充使mN的长度等于m1,…,mN-1的长度;

步骤3,将步骤2分块后的明文数据m1,…,mN在任务分配Map中用步骤1生成的公钥pk进行并行加密处理,得到加密后的密文数据c1,…,cN;

步骤4,将步骤3得到的密文数据c1,…,cN在结果收集Reduce中进行拼接,得到完整的密文c。

2.如权利要求1所述云计算环境中并行同态数据加密方法,其特征在于:步骤1所述生3

成私钥sk的过程为:计算η=λ+k,选取比特为η的素数p,得到私钥sk=p。

3.如权利要求1所述云计算环境中并行同态数据加密方法,其特征在于:步骤1所述生成公钥pk的过程为:选取任意正整数τ,计算γ=λ5和xi=2ri+pqi,i=0,1,2,…,τ-1,其中,ri为λ个比特的随机整数,qi为γ个比特的随机素数整数,得到集合{xi},将集合{xi}中最大的整数记为xmax,并交换x0和xmax对应的数值,得到公钥pk=

4.如权利要求1所述云计算环境中并行同态数据加密方法,其特征在于:所述步骤3的过程为:从公钥集合pk中任意选取若干个xi进行累加,得到sum,在区间(-2λ,2λ)任选一随机整数r,在Map中根据加密公式cj=(mj+2k*r+2*sum)modx0进行并行加密处理,得到加密后的密文数据cj,j=1,2,…,N。

5.如权利要求1所述云计算环境中并行同态数据加密方法,其特征在于:步骤4所述完整的密文c=c1+c2+…+cN。

说明书 :

一种云计算环境中并行同态数据加密方法

技术领域

[0001] 本发明涉及一种云计算环境中并行同态数据加密方法,属于信息安全技术领域。

背景技术

[0002] 大数据安全领域是近几年备受关注的一个热点问题。一方面,数据所有者将大量的数据存储于云计算环境中,供使用者访问使用。但这些大量数据中有很多敏感数据需要保障其机密性,如位置信息、个人身份等隐私信息等,如何实现对这类存储模式中数据文件的信息加密,实现安全、有效、简单的数据访问控制是云计算走向实际应用需要解决的问题。另一方面,由于文件数据数量大,需要构建一种针对大数据的快速加密算法,而在云计算环境中,就要解决如何能够利用云计算环境可并行计算的特点,实现大数据的快速并行加密。
[0003] 同态加密是一种对数据进行处理的加密方法,设计云计算环境下的可并行计算同态加密方法,既可以利用同态加密进行数据加密,又可以利用云计算环境的并行计算性能,提高数据加密解密的速度,实现不可信云计算环境中的数据隐私保护,具有广泛的应用前景。

发明内容

[0004] 本发明所要解决的技术问题是:提供一种云计算环境中并行同态数据加密方法,通过结合云计算环境MapReduce的并行技术和同态加密技术实现一种并行的同态加密方案,提高了大数据量的加密解密速度。
[0005] 本发明为解决上述技术问题采用以下技术方案:
[0006] 一种云计算环境中并行同态数据加密方法,包括以下步骤:
[0007] 步骤1,根据给定的安全强度要求参数λ和对明文数据分块后每块长度的比特数k,生成私钥sk,根据生成的私钥sk生成公钥pk;
[0008] 步骤2,将明文数据m等分成N块,记为m1,…,mN-1,mN,且每块长度的字节数为k/8,mN的长度等于或小于m1,…,mN-1的长度,当mN的长度小于m1,…,mN-1的长度时,mN后面用零补充使mN的长度等于m1,…,mN-1的长度;
[0009] 步骤3,将步骤2分块后的明文数据m1,…,mN在Map中用步骤1生成的公钥pk进行并行加密处理,得到加密后的密文数据c1,…,cN;
[0010] 步骤4,将步骤3得到的密文数据c1,…,cN在Reduce中进行拼接,得到完整的密文c。
[0011] 优选的,步骤1所述生成私钥sk的过程为:计算η=λ3+k,选取比特为η的素数p,得到私钥sk=p。
[0012] 优选的,步骤1所述生成公钥pk的过程为:选取任意正整数τ,计算γ=λ5和xi=2ri+pqi,i=0,1,2,…,τ-1,其中,ri为λ个比特的随机整数,qi为γ个比特的随机素数整数,得到集合{xi},将集合{xi}中最大的整数记为xmax,并交换x0和xmax对应的数值,得到公钥pk=
[0013] 优选的,所述步骤3的过程为:从公钥集合pk中任意选取若干个xi进行累加,得到sum,在区间(-2λ,2λ)任选一随机整数r,在Map中根据加密公式cj=(mj+2k*r+2*sum)mod x0进行并行加密处理,得到加密后的密文数据cj,j=1,2,…,N。
[0014] 优选的,步骤4所述完整的密文c=c1+c2+…+cN。
[0015] 本发明采用以上技术方案与现有技术相比,具有以下技术效果:
[0016] 本发明并行同态数据加密方法解决了云计算实际应用过程中要解决的两个问题,一是数据所有者对数据文件的机密性要求,通过对明文文件的分组加密,上载存储于云环境中,保证数据所有者的敏感信息受到保护;二是针对大数据高速计算要求,采用分组加密并行的计算技术,使数据文件的加密过程可利用云计算环境中的并行计算技术,实现对大数据文件加密的高速并行计算,最终满足云计算环境中大数据的安全高速访问。

附图说明

[0017] 图1是本发明云计算环境中并行同态数据加密方法的流程图。
[0018] 图2是在MapReduce中进行并行同态加密的模型图。

具体实施方式

[0019] 下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0020] 如图1所示,包括如下步骤:
[0021] 步骤1,获取密钥
[0022] 给定一个安全强度要求参数λ,取k为每块加密的明文长度的比特数,计算η=λ3+k,γ=λ5。选取一个η比特的素数p,计算sk=p,作为解密的私钥。
[0023] 采用下面的方法来产生公钥pk。对给定的任意正整数τ,取i=0,1,2,……,τ-1,计算xi=2ri+pqi,其中ri为λ个比特的随机整数,qi为γ个比特的随机素数整数,得到一组整数,记为集合{xi},在集合中找到最大的整数xmax,把x0和xmax位置进行交换,得到一个新的数组,并且x0是最大的元素,则pk=
[0024] 步骤2,对明文数据文件进行分块
[0025] 将明文数据文件m等分成N块,每块长度的字节数为d,k=8*d,记为m1,m2,m3,……,mN。每一块独立进行加密运算,最后一块如长度不够,用零填充。
[0026] 步骤3,用公钥系统对数据文件进行加密
[0027] 为提高并行加密时的速度,在集合(0,1,2,...,τ-1)中随机选取一个子集合S,计算 即从公钥集合pk中任意选取若干个xi进行累加,得到sum的值。
[0028] 在区间(-2λ,2λ)任选一个随机整数r,各个云平台中的Map节点对步骤2中所划分的明文块进行并行处理,加密方法为:
[0029] cj=(mj+2k*r+2*sum)mod x0其中j=1,2,3,……,N
[0030] 在所有云计算平台中的Map节点操作结束后,Map节点输出分段加密后的密文cj,将Map节点生成的密文块作为云计算平台Reduce节点的输入,Reduce节点进行计算,负责处理不同的中间结果数据集合,即在Reduce过程中将并行加密而成的密文进行拼接,进而得到完整的密文c,即c=c1+c2+……+cN。
[0031] 步骤4,用公钥系统对加密数据进行解密
[0032] 在得到密文和私钥p后,根据模运算原理,对密文进行解密。解密算法如下:
[0033] Mj=(cj mod p)mod 2k
[0034] 事实上,由加密公式可得:
[0035] cj=(mj+2k*r+2*sum)mod x0
[0036] 对于i∈(0,1,2,...τ-1)有x0>xi,取a为一任意整数,可得:
[0037]
[0038] 因为xi=2k*ri+p*qi,可得:
[0039]
[0040]
[0041] 因为 远小于p,所以用密文cj对p进行求模运算,可得到又因为mj是k比特的整数,所以小于2k,由此,
进行模2k运算后,可以得到明文mj,实现密文的解密。
[0042] 下面根据具体实施例对技术方案做进一步详细描述:
[0043] 步骤1,密钥的选取
[0044] 私钥的生成:选取一个安全参数λ=3,k=32,计算η=λ3+k=59,γ=λ5=243,选取一个η位比特的素数p,作为私钥sk,即p=512459108289551201,sk=512459108289551201。
[0045] 对于公钥pk,将用下面的方法来产生。取τ=5,选取5个λ比特的随机整数组(r0,r1,r2,r3,r4),5个γ比特的随机素数整数组(q0,q1,q2,q3,q4),具体如下:
[0046] r0=3,r1=4,r2=6,r3=2,r4=4;
[0047] q0=11194750613945766175575610766554872888781682217441303472150513148694324551,
[0048] q1=8492031685339572574313728763524112363042504024065018677660910912598216507,
[0049] q2=8802967451602809312516642615537868848742327136531727175275956435965922551,
[0050] q3=9983679068944655542941186352186124653012476808248831241521808005965882303,
[0051] q4=12978910388448875789014003690257777731368261010041111094407389204279377839;
[0052] 计算xi=2ri+pqi,其中i=0,1,2,3,4。得到一组整数,记为集合{x0,x1,x2,x3,x4},具体为:
[0053] x0=5736851917146553179875532824987001357402938153238507932556027377288816059038693776510737639,
[0054] x1=4351818985035732011954204486028711472323185505436675059772808992941696619064915393239744091,
[0055] x2=4511160850550318628561874721326501412264251072365071283858928867227446481340157003484837527,
[0056] x3=5116227273120434945714382869493002870299884746841354027885894086113495299247202118448230495,
[0057] x4=6651160844234503481087661042427036440611814198425582183507791236993923677542435821995103823。
[0058] 在集合{x0,x1,x2,x3,x4}中找到最大的整数xmax,把x0和xmax交换位置,得到一个新的数组,并且x0是最大的元素,则公钥pk为:
[0059] pk==<6651160844234503481087661042427036440611814198425582183507791236993923677542435821995103823,
[0060] 4351818985035732011954204486028711472323185505436675059772808992941696619064915393239744091,
[0061] 4511160850550318628561874721326501412264251072365071283858928867227446481340157003484837527,
[0062] 5116227273120434945714382869493002870299884746841354027885894086113495299247202118448230495,
[0063]57368519171465531798755328249870013574029381532385079325560273772888160590386
93776510737639>。
[0064] 步骤2,对明文数据文件分块
[0065] 在MapReduce中将源数据文件进行分块,取明文为m=(aaaabbbbcccc),取N=3,即将明文分为三块,分别为m1=(aaaa)=1633771873,m2=(bbbb)=1650614882和m3=(cccc)=1667457891,d=4,分块后就可以对每一块独立进行Map计算,以保证加密过程的并行性。
[0066] 步骤3,用公钥系统对数据块进行加密
[0067] 计算sum0=x0=6651160844234503481087661042427036440611814198425582183507791236993923677542435821995103823,
[0068] 从pk中任意选取4个进行累加,得到sum1=x1+x2+x1+x3,sum2=x2+x2+x2+x3,sum3=x1+x2+x1+x2,sum4=x1+x3+x3+x3,具体为:
[0069] sum1=18331026093742217598184666562876927227210506830079775431290440939224335018717189908412556204,
[0070] sum2=18649709824771390831400007033472507107092637963936567879462680687795834743267673128902743076,
[0071] sum3=17725959671172101281032158414710425769174873155603492687263475720338286200810144793449163236,
[0072] sum4=19700500804397036849097353094507720083222839745960737143430491251282182516806521748584435576。
[0073] 运用加密公式对明文m1,m2,m3进行加密:
[0074] cj=(mj+2k*r+2*sum)mod x0,j=1,2,3
[0075] 其中k为明文数据的比特长度,k=32,r=7,得到密文:
[0076] c1=4423637982703094318856836329856352887951244758752328320247893246350438845725273181157498535,其中sum=sum3;
[0077] c2=5347388136302383869224684948618434225869009567085403512447098213807987388182801516627921384,其中sum=sum2;
[0078] c3=4423637982703094318856836329856352887951244758752328320247893246350438845725273181191184553,其中sum=sum3。
[0079] 每一块独立进行Map运算,即加密运算,以保证加密过程的并行性,在所有的Map块操作结束后,Map端输出分段加密后的密文,在Reduce中将并行加密而成的密文进行拼接,进而得到完整的密文:
[0080] c=44236379827030943188568363298563528879512447587523283202478932463504388457252731811574985355347388136302383869224684948618434225869009567085403
51244709821380798738818280151662792138444236379827030943188568363298563528879
51244758752328320247893246350438845725273181191184553。
[0081] 步骤4,用公钥系统对加密数据进行解密
[0082] 输入私钥p=512459108289551201和得到的密文c,运用下列解密公式计算明文:
[0083] mj=(cj mod p)mod 2k,其中j=1,2,3;
[0084] 可计算出明文块m1=aaaa,m2=bbbb,m3=cccc,拼接得最终明文m=aaaabbbbcccc。
[0085] 如图2所示,对明文数据进行分块,输入到各个Map节点并行处理同态加密,然后将加密后的密文块输入到Reduce节点进行连接处理,在Reduce节点处理之前,必须等到所有的Map节点处理完,因此在Reduce节点前加入同步障,Reduce节点完成连接操作后输入完整的密文。
[0086] 以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。