Rabin算法体制是对RSA的一种修正,具有以下两个特点:
1.对同一个密文,可能有两个以上对应的明文,即不再以一一对应的单向陷门函数为基础
2.破译该体制等价于对大整数的分解
RSA中选取的公开钥e满足1<e<φ(n),且gcd(e, φ(n))=1。 Rabin密码体制,取e=2。
分析:
1.密钥的生成
随机选择两个大素数p,q,满足p=3 mod 4且q=3 mod 4
即这两个素数都为4k+3
计算n=p*q
2.加密
C=m^2 mod n 其中m为明文,C是对应的密文
3.解密:
解密过程等价于解方程x^2=C mod n,将n可以分解为p*q,
即可以得到:
证明:
由于p=3 mod 4 且 q= 3 mod 4
由此可知,(p+1)/4是整数,值为k
因C是模p后的平方剩余,故可写为:
因此,在mod p 或 mod q的情况下,分别有两个根
以mod p 为例:
两个根分别为:
和