2.1 具有加同态性质的加密方案的构造
Smart等[6]基于SPIP问题、PCP问题和CVP问题,构造了理想格上部分同态加密方案,本研究对其进行变形,以适用于后续缺损函数簇的构造.该加密方案由4个算法组成:{KeyGen,Encrypt,Decrypt,Add},系统参数为(N,n).设明文空间为{0,1}n,n<N.符号·表示就近取整函数,x=x+1/2,其中·为向下取整函数.本文中模奇数p运算的取值定义落在区间[-((p-1))/2,((p-1))/2]内.
2.1.1 密钥生成算法KeyGen()
1)随机生成素数p,随机选择Z上N次不可约多项式N(x);
2)对i=1,2,…,n,依次如下操作:
(i)独立从B∞,N(2N1/2-1)中随机选取Si(x),计算Gi(x)=1+2Si(x),要求对1≤j<i,均有gcd(Gi(x),Gj(x))=1且resultant(Gi(x),N(x))=p;
(ii)在环Zp[x]上计算Di(x)=gcd(Gi(x),N(x)),取Di(x)的根αi∈Zp;
(iii)用有理数域上的最大公因子算法计算正系数多项式Zi(x)=∑N-1k=0zi,kxk,满足Zi(x)·Gi(x)=pmod N(x);
(iv)令Bi=zi,0(mod 2p).
3)输出公钥CPK=(p,α1,α2,…,αn)和私钥CSK=(p,B1,B2,…,Bn).
2.1.2 加密算法Encrypt(M,CPK)
1)分解明文M=m1 m2…,mn∈{0,1}n;
2)对i=1,2,…,n,进行如下步骤:
(i)从B∞,N((N1/2)/2)中随机选取Ri(x);
(ii)计算Ci(x)=mi+2Ri(x);
(iii)ci←Ci(αi)mod p;
3)输出密文C=c1,c2…cn.
2.1.3 解密算法Decrypt(C,CSK)
1)分解密文C=c1 c2…cn,私钥CSK=(p,B1,B2,…,Bn);
2)对i=1,2,…,n,计算mi=(ci- ci·Bi/p)(mod 2);
3)输出明文M=m1 m2…mn.
2.1.4 加法运算算法Add(C',C″,CPK)
1)分解C'=c'1 c'2…c'n,C″=c″1 c″2…c″n;
2)计算ci=(c'i+c″i)mod p,i=1,2,…,n;
3)输出和密文C=C'+C″=c1 c2…cn.
2.2 具有加同态性质的加密方案的安全性分析
定理1 上述加密方案具有如下性质:
(i)在SPIP问题困难假设下,给定公钥恢复私钥是困难的;
(ii)在格上CVP问题困难假设下,给定密文恢复明文是困难的;
(iii)在PCP问题困难假设下,是语义安全的,即密文不可区分.
证明 当n=1时,方案与文献[6]的类似.尽管生成素数p和多项式G的方式有所不同,但p,N和G的关系是一样的,均为resultant(G(x),N(x))=p,所以加密方案具有相同性质.
(i)方案中的公钥实际上给出了一个次数为1的主理想的二元表示,私钥是该主理想的一个小生成元的逆元.故给定公钥恢复私钥是SPIP问题的一个示例.
(ii)给定密文恢复明文这个问题等价于:给定p和α,c∈Zq,寻找xi,i=1,2,…,N,使得存在整数k,满足∑Ni=1xi·αi=c-k·pi,|xi|≤N1/2/2.令矩阵
H=(p
-α0 1
-αN-1 1),
考虑由H的行向量生成的格,则上式等价于(k,-x1,-x2,…,-xn)·H=(c-x0,-x1,-x2,…,-xn).故问题相当于寻找与非格向量(c,0,…,0)最近的格向量(c-x0,-x1,-x2,…,-xn)的格上CVP问题.
(iii)假设存在算法A以ε的概率攻破上述加密方案的语义安全性,那么存在一个算法B,在和A相同的运行时间内,以ε/2的概率解决PCP问题.证明如下:算法B为算法A的挑战(r,p,α)创建一个挑战密文c←Mβ(α)+2·r(mod p),这里M0和M1是A的两个挑战消息,β是B随机选择的挑战比特.A发送对β的挑战β',B返回ββ'.
PCP问题中,当b=0时,显然挑战密文c有正确的分布,所以B的优势与A相同,等于ε.当b=1时,r(mod p)是一致随机的,由于p是奇数,2r(mod p)也是一致随机的,因此A的优势为0,这意味着B解决PCP问题的整体优势为ε/2.
在PCP问题假设下,方案是语义安全的,即给定单比特消息通过加密方案加密得到的密文,无法区分该消息是0或1.
当n>1时,进行混合论证.给定n长比特串消息M0=m01 m02…m0n 和M1=m11 m12…m1n,记Mβi(x)=x-mβi(β=0,1).构造一系列游戏H0,…,Hn,证明相邻的游戏Hk-1和Hk是不可区分的,从而由n是多项式级的,得到H0和Hn是不可区分的.
游戏H0中,对(r,p,α1,α2,…,αn),如下定义c=c1 c2…cn,对i=1,2,…,n,令ci=M0i(αi)+2·r(modp).
游戏Hn中,对(r,p,α1,α2,…,αn),如下定义c=c1 c2…cn,对i=1,2,…,n,令ci=M1i(αi)+2·r(modp).
游戏Hk(1≤k<n)中,对(r,p,α1,α2,…,αn),定义消息Mk=m01 …m0k m1k+1 …m1n 的密文c=c1 c2…cn,对i=1,2,…,n,令ci=Mki(αi)+2·r(mod p).
对任意的k∈[n],考虑模拟算法SΟ,这里预言O或回答M0k(αk)+2·r(mod p),或回答M1k(αk)+2·r(mod p).分两种情形:对i<k,令ci=M1(αi)+2·r(mod p); 对i>k,令ci=M0(αi)+2·r(mod p).
那么,对k∈[n],当预言O的回答为M0(αk)+2·r(mod p)时,SΟ的输出等同于Hk-1; 回答为M1(αk)+2·r(mod p)时,SΟ的输出等同于Hk.
由于在PCP问题假设下单比特密文是无法区分的,故Hk-1与Hk无法区分.(证毕)
2.3 缺损函数簇(L,F)的构造
首先,给出不可逆陷门单向函数簇L的抽样算法:
1)随机生成GF(2)上的n×m阶矩阵A,其中前n列是单位矩阵,其余元素为零.
2)调用加密方案,重复地随机加密A的第1列到第m列,得矩阵C.
3)取二元[m,n]纠错码的生成矩阵G,对原像x∈{0,1}n,令x'=G'·x,定义像y=C·x'=C·(Gt·x).
4)输出函数索引C和函数陷门(CSK,A,i1,i2,…,in).
那么,索引为C,陷门为(CSK,A,i1,i2,…,in)的函数L的陷门求逆算法如下:
对函数值y∈Znp,利用解密密钥CSK调用解密算法,生成向量y'∈{0,1}n,然后在二元域上求解方程y'=A·(-overx),得解向量(-overx).再利用陷门信息i1,i2,…,in得到(-overx)的第i1,i2,…,in列,最后通过纠删码译码算法得到原像(-overx)'∈{0,1}n.
其次,给出第二原像抵抗的函数簇F的抽样算法:
1)随机选取n个整数i1,i2,…,in,其中 1≤i1<i2<…<in≤m.随机生成二元域上n×m阶矩阵A=(A1,A2,…,Am),要求其第i1,i2,…,in列组成秩为n-1的方阵,其余元素为零.
2)调用上述加密方案,由密钥生成算法得到公私钥对(CPK,CSK),用加密算法分别重复地随机加密A的列向量A1,A2,…,Am得到密文C1,C2,…,Cm.从而得到矩阵C=(C1,C2,…,Cm)∈Zn×mp.
3)取二元[m,n]纠错码的生成矩阵G,对原像x∈{0,1}n,令x'=G'·x,定义像y=C·x'=C·(G'·x).
4)输出函数索引C和函数陷门(CSK,A,i1,i2,…,in).
2.4 缺损函数簇(L,F)的缺损性证明
定理2 上述所构造的函数簇(L,F)是一个缺损函数簇,满足
(i)函数簇L是不可逆的;
(ii)函数簇F是抗第二原像的;
(iii)函数簇L和F是不可区分的.
证明 利用加密方案的性质分析.
在SPIP问题困难假设下,加密方案给定公钥恢复私钥是困难的,这个性质保证了陷门信息的秘密性.
在格上CVP问题困难假设下,给定密文恢复明文是困难的,这个性质保证了函数L和F是无陷门求逆难的,得到结论(i).在PCP问题困难假设下,加密方案是语义安全的,等价于密文不可区分性,从而无法区分函数索引矩阵C对应的矩阵A是选自L或F,从而得到了结论(iii).函数簇L中矩阵A满秩,实现了一对一映射; 函数簇F中矩阵A的秩为n-1,实现了二对一映射,保证了第二原像的存在性.由结论(i)和(iii)可得(ii),否则如果F能够解出第二原像,由于L是一对一映射,第二原像是不存在的,那么通过是否存在第二原像,即可区分F和L,与(iii)矛盾.(证毕)