一、Rabin密码体制
Rabin密码体制是RSA密码体制的一种,假定模数$n=pq$不能被分解,该类体制对于选择明文攻击是计算安全的。因此,Rabin密码体制提供了一个可证明安全的密码体制的例子:假定分解整数问题是整数上不可行的,那么Rabin密码体制是安全的。
Thm1 (Rabin密码体制)设$n=pq$,其中$p$和$q$是素数,且$p,q \equiv 3 (mod \, 4)$,设$P=C=Z^{\star}_{n}$,且定义$$\kappa =\{(n,p,q)\}$$对$K=(n,p,q)$,定义$$e_{K}(x)=x^{2} (mod \, n)$$和$$d_{K}=\sqrt{y} (mod \, n)$$ $n$为公钥,$p$和$q$为私钥。
注:条件$p,q \equiv 3 (mod \, 4)$可以省去,条件$P=C=Z^n_{\star}$也可以弱化为$P=C=Z^n$,只是在使用更多的限制性描述的时候,简化了许多方面的计算和密码体制分析。
注意看到这个函数$y=x^{2}$对于加密来说不是一个单射,所以解密不能以一种明显的方式完成,特别的,对于$y \equiv x^{2} (mod \, n)$,对于某一个$x \in Z^{\star}_{n}$,存在$y$模$n$的是个解,除非有其他的冗余信息,否则无法确认是那一个值。
从Bob的观点来看解密问题,它有一个密文y,要想得到x使得$$x^2 \equiv y(mod \, n)$$这是一个关于$Z_{n}$中未知元$x$的二次方程,解密需要求出模$n$的平方根,等价于求解以下两个同余方程。$$z^{2} \equiv y (mod \, p)$$ $$z^{2} \equiv y (mod \, q)$$虽然我们可以利用Euler准则来判断$y$是否为一个模$p$或模$q$的二次剩余。事实上,如果加密正确的执行,$y$是一个模$p$和模$q$的二次剩余,遗憾的是它并不能帮助我们找到$y$。
当$p \equiv 3(mod \, 4)$时,有一个简单公式来计算模$p$的二次剩余的平方根,假定$y$是一个模$p$的二次剩余,且$y \equiv 3 (mod \, 4)$那么有$$\begin{align} (\pm y^{\frac {p+1}{4}})^{2} \equiv & y^{\frac{p+1}{2}} (mod \, p) \\ \equiv & y^{\frac{p-1}{2}}y (mod \, p) \\ \equiv & y(mod \, p) \\ \end{align}$$这里又一次使用了Euler准则,即当$y$是一个模$p$的二次剩余时,有$y^{\frac{p-1}{2}} \equiv 1 (mod \, p)$,因此,$y$模$p$的两个平方根为$\pm y^{\frac{p+1}{4}} (mod \, p)$,同样的讨论可以知道,$y$模$q$的两个平方根为$\pm y^{\frac{p+1}{4}} (mod \, q)$,再利用中国剩余定理可以得到$y$模$n$的四个平方根。
二、Rabin密码体制的安全性
它的安全性证明使用了一个图灵归约,定义如下:
Def2 (图灵归约)假定G和H为问题,一个从G到H的图灵归约是一个具有如下性质的算法SolveG:
1. SolveG假定了存在某一算法SolveH求解问题H;
2. SolveG可以调用SolveH并使用它的任一输出值,但SolveG不能对SolveH执行的实际运算做任何限定(也就是说,SolveH被看作一个黑盒子,称为一个谕示器);
3. SolveG是一个多项式时间算法;
4. SolveG正确地求解问题G。
如果存在一个从G到H的图灵归约,记为$G \varpropto _{T} H$。
一个图灵归约$G \varpropto_{T} H$并不一定得到一个求解问题G的多项式时间算法,它实际上证明的是:如果存在一个多项式时间算法求解问题H,那么存在一个多项式时间算法求解时间G。
下面将提供图灵归约的一个清晰的例子,可以证明,一个解密谕示器Rabin Decrypt可以并入到一个分解模数$n$的$Las Vegas$算法中且具有至少$\frac{1}{2}$的概率,也就是说,可以得到Factoring $\varpropto_{T}$ Rabin Decryption,其中图灵归约本身是一个随机算法。假定$n$是两个不同素数$p$和$q$的乘积,那么Rabin Decryption是一个执行Rabin解密过程的谕示器,对一个给定的密文返回对应四个可能的明文中的一个。
Alg3 Rabin Oracle Factoring(n)
external Rabin Decrypt
随机选择一个整数$r \in Z^n_{\star}$
$y \leftarrow r^{2} (mod \, n)$
$x \leftarrow Rabin Decrypt(y)$
if $x \equiv \pm r(mod \, n)$
then return ("failure")
else
$p \leftarrow gcd(x+r , n)$
<