密码学基础(九) - 公钥加密中的高等概念
陷门置换构造加密方案
陷门置换(Trapdoor Permutation)是公钥加密体制中的一种抽象概念,
在一些结构中,参数生成算法Gen输出一些附加信息\(t\)和I,从而实现\(f_I\)的有效求逆。称这些附加信息为陷门(trapdoor),并将单向置换的族称为陷门置换的附加属性族。
陷门的形式化定义为:
一组多项式时间算法(Gen,Samp,f,Inv)如果满足以下条件则称其为陷门:
- 概率性的参数生成算法Gen:输入\(1^n\),输出(I,td)其中|I| \(\le\) n,I的每一个值定义了一个置换的定义域和值域\(D_I\),\(f_I:D_I\to D_I\)
- 用\(Gen_1\)表示由Gen算法生成的结果,并且只输出I。则(\(Gen_1\),Samp,f)是一族单向置换
- 用\((I,td)\)表示\(Gen(1^n)\)的输出,则确定性的反向算法Inv,将td以及y \(\in D_I\)作为输入,然后输出x \(\in D_I\),表示成x := \(Inv_{td}(y)\)。则需要保证所有由Gen(\(1^n\))生成的(I,td),有一个概率均匀的选择x \(\in D_I\),有\(Inv_{td}(f_I(x))=x\)
也就是对陷门置换\(f_I\),如果未知陷门\(td\),则很难求\(f_I\)的逆;如果已知陷门\(td\),则能够高效率的求\(f_I\)的逆。
陷门置换构造的公钥加密方案:设\(\Pi\)=(Gen,f,Inv)是一族陷门置换,令hc为一个确定性的多项式时间算法,这个算法接收I以及x\(\in D_I\)作为输入,然后输出一个比特\(hc_I(x)\),称hc为\(\Pi\)的硬核谓词,如果对于所有PPT上的算法A,存在一个可忽略函数negl满足\(Pr[A(I,f_I(x))=hc_I(x)] \le \frac{1}{2}+negl(n)\)
陷门置换的不对称性意味着任何一个知道与\(I\)相关的陷门td的人而可以从\(f_I(x)\)中恢复出x,并由此从\(f_I(x)\)计算出\(hc_I(x)\)
但是如果只给了一个I,对于一个概率均匀选择的x,很难从\(f_I(x)\)计算出\(hc_I(x)\)
从任何一组陷门置换构造公钥加密方案:设\(\Pi'\)=(Gen',f,Inv)是一族陷门置换,其硬核谓词为hc,则可以构造一个公钥加密方案如下:
- Gen:输入安全参数\(1^n\),运行Gen'(\(1^n\))获得(I,td),输出公钥I,私钥td
- Enc:输入一个公钥I以及一条明文m \(\in\) {0,1},概率均匀的选择一个r \(\in D_I\),r满足\(hc_I(r)=m\),输出密文c := \(f_I(r)\)
- Dec:输入一个私钥td以及一条密文c,计算r:=\(Inv_I(c)\),然后输出明文m := \(hc_I(r)\)
定理:如果\(\Pi'\)是一族硬核谓词为hc的陷门置换,那么上面所构造的加密方案是CPA安全的
加密更长的明文:在前面的RSA-lsb中已经介绍过如何利用加密单比特明文的加密方案加密更长的明文
秘密共享以及门限加密
安全(交互)协议可能比基本的密码原语(例如,加密和签名方案)复杂得多。一方面是因为它们可能涉及多方交换几轮消息,另一方面是因为它们旨在实现更复杂的安全需求。
秘密共享
应用情景:一个发牌员持有一个秘密(比如核弹的发射密码),希望通过给与每个用于一点份额在用户集合\(P_1,...,P_N\)之间共享这个秘密,任意t个用户都能通过将他们的份额组装起来从而恢复这个秘密,但是用户数量小于t则无法知道任何关于这个秘密的信息
上述的应用情景称为(t,N)门限秘密共享,而(t,N)门限秘密共享有有两种情况,\(t=N\),以及\(t<N\)的情况:
-
\(t=N\)的情况:
假设秘密信息 \(s\in\lbrace 0,1 \rbrace^l\)- 发牌员概率均匀的选择\(s_1,...,s_{N-1}\in\lbrace 0,1 \rbrace^l\),然后计算\(s_N:=s\oplus(\oplus^{N-1}_{i=1}s_i)\),则每个用户的份额就是\(s_i,i=1,...,N\)
- 因为\((\oplus^N_{i=1}s_i)=s\),当\(N\)个用户都提供了自己的份额后能够恢复秘密信息\(s\)
- 并且,当用户数量少于\(N\)的时候,无法获得任何关于秘密\(s\)的信息
-
\(t<N\)的情况,与上面那种情况不同的是,在选择\(s_1,...,s_N\)的时候需要满足一定的约束,并且显然效率是很低的。主要由Shamir秘密共享算法实现。
Shamir秘密共享方案:这个方案是基于一个有限多项式域\(F\)设计的,其中\(F\)满足秘密\(s\in F\) 并且\(|F| > N\),其原理主要是:给定\(k\)个点,能够确定唯一的多项式\(f\),满足\(\deg f=k-1\)
即,给定\(F\)中任意\(t\)个不重复的点,\((x_1,y_1),...,(x_t,y_t)\),都有一个唯一的多项式\(p\)满足\(p(x_i)=y_i, \deg f=(t-1)\)
该方案的工作原理如下,设\(x_1,...,x_N \in F\),没有重复并且不含零元素,这些信息是可以公开的:
- 共享:给定一个秘密\(s\in F\),发牌员均匀随机的选择\(a_1,...,a_{t-1} \in F\),然后定义一个多项式\(p(X)=s+\Sigma^{t-1}_{i=1}a_iX^i\),每个用户的秘密份额为\(s_i=p(x_i) \in F\)
- 恢复:\(t\)个用户\(P_1,...,P_t\)交出他们的份额\(s_1,...,s_t\)然后利用\(p(x_i)=s_i\)计算出多项式多项式\(p\),则秘密为\(s=p(0)\)。而且显然,对于任何用户数量小于t的用户都无法计算出p,也就无法获取任何关于秘密s的信息
\(\mathrm{Example}:\) 令\(N=4,t=2\),以及\(x_1=1,x_2=2,x_3=3,x_4=4\),秘密\(s=64\),则Shamir秘密共享算法:
构造多项式:随机选取整数\(a=14\),则\(p(x)=64+14x\)
共享份额:\(s_1=p(x_1)=64+14=78\),\(s_2=p(x_2)=92\),\(s_3=p(x_3)=106\),\(s_4=p(x_4)=120\)
恢复秘密:显然,任意两个点\((x_i,s_i)\)都能够恢复多项式\(p(x)=64+14x\),而秘密信息\(s=p(0)=64\)
可验证秘密共享
在秘密共享方案中存在着两种恶意行为,而可验证秘密共享(Verifiable Secret Sharing,VSS)用于抵抗这两种恶意行为
- 腐败的发牌员:给用户发放不一致的份额,这样会导致不同的用户组会恢复出不同的秘密
- 在恢复阶段中一个恶意的用户可能会提交一个假的份额,从而影响恢复过程
更加形式化的定义是,可验证秘密共享方案需要满足以下两个条件:如果用户集合中有t-1个腐败的用户,并且相互串通,甚至其中可能包括发牌员,则:
- 在共享阶段结束的时候,需要保证任何t个份额都能够会付出秘密s
- 如果发牌员是诚实的,那么秘密就是发牌员的密钥
当然上面的第一个条件是假设用户集合中的大多数(\(\le\) t个)用户是不腐败的,那么N应该满足N \(\le\) t+t-1 > 2(t-1)
可验证秘密共享方案:设H是一个由随机预言机构造的函数,假设由G(\(1^n\))生成的可信任参数(G,q,g)是提前发表了的,其中q是一个素数,所以\(Z_q\)是一个域,并且所有用户都可以访问广播频道
- 共享阶段:
- 设将要分享的秘密为s,则发牌员概率均匀的选择一个\(a_0 \in Z_q\),然后利用Shamir秘密共享方案共享\(a_0\),将\(s_i=p(i)=\Sigma^{t-1}_{j=0}a_ii^j\)发送给用户\(P_i\),此外,发牌员利用广播频道广播\(A_0=g^{a_0},...,A_{t-1}=g^{a_{t-1}}\),以及“被掩盖的秘密”c := H(\(a_0\)) \(\bigoplus\) s
- 每个用户\(P_i\)在收到了自己的份额后需要验证\(g^{s_i}=?\prod^{t-1}_{j=0}(A_j)^{i^j}\),如果不满足,则在广播频道上报错
\(\prod^{t-1}_{j=0}(A_j)^{i^j}=\prod^{t-1}_{j=0}(g^{a_i})^{i^j}=g^{\Sigma^{t-1}_{j=0}a_j·i^j}=g^{p(i)}=g^{s_i}\) - 如果有超过t-1个用户报错,则发牌员不合格,协议终止;否则,发牌员广播\(s_i\)作为回应;如果广播出去的份额仍然无法通过验证,则这个发牌员是不合格的,协议终止;否则,用户\(P_i\)将广播的\(s_i\)作为自己的份额
- 恢复阶段:在恢复之前需要先进行验证,如果用户组中的用户\(P_i\)不能通过验证,那么这个用户将被丢弃,而在这剩下的t个通过验证的用户中,可以恢复出\(a_0\),然后计算s:=c\(\bigoplus\)H(\(a_0\))
电子选举
这种技术依赖于El-Gamal加密方案的一种变体的同态加密方案:给定公钥\(pk=(G,q,g,h)\),如果要加密明文\(m\in Z_q\),则计算\(M=g^m\),概率均匀的选择一个\(y\in Z_q\),然后发送密文\(c=(g^y,h^y·M)\);如果要解密,想用标准的El-Gamal加密方案计算出M,然后计算\(m=log_gM\)
- 缺点:如果明文空间比较大,那么效率将会非常低;如果明文空间比较小,那么接收方可以使用穷举搜索高效的解密
- 优点:对于\(Z_q\)中的加法同态:\((g^{y_1},h^{y_1}·g^{m_1})·(g^{y_2},h^{y_2}·g^{m_2})=(g^{y_1+y_2},h^{y_1+y_2}·g^{m_1+m_2})\)
使用同态加密进行电子选举的基本方法是让每个投票者对其投票\(v_i\in\{0,1\}\)进行加密,从而获得一个密文\(c_i\)。收集所有人的密钥,然后将所有的密文相乘,从而得到最终投票结构的密文,称为最终密文,然后将私钥发送到权威机构进行解密,从而获取投票的总和
然而存在着一个缺陷:权威机构必须是可信的,否则,其既可以(正确地)解密最终的密文,也可以不解密任何个别选民的密文而作弊。
解决的方法是同时委托多个机构,然后利用秘密共享将私钥分享给这些机构
不过仍然存在着一个缺陷:如果权威机构为了解密某个密文而恢复这个私钥,那么所有的机构都会知道这个私钥,那么他们可以按照自己选择解密任何密文。
浙公网安备 33010602011771号