Post-quantum RSA
阅读报告
1.归纳文章主要思想与工作
文章认为目前使用的非对称性密码RSA不会因为量子计算机的出现而消亡,但目前版本的RSA在量子算法面前不堪一击,进而提出了一种比现在通行的RSA密码体系更加能够抵抗量子计算机的改进版RSA,该版本在某种意义上可以对抗已知的量子算法,且攻击代价在使用成本上基本上是二次的。文章通过实验和数据分析出,假设已构建了成本低廉且可扩展的量子计算机,现行的RSA公钥增加字长和改善算法,就能迫使量子计算机的恶意攻击因为难以承受的代价而失败告终。同时介绍了一种新的量子分解算法GEECM,该算法可以比任何已知算法更有效地生成大批独立的均匀随机素数,从而一次生成一个素数。
改进版RSA是 通过一系列数学技巧(如快速的乘法以及随机生成质数的方法等),在加密解密的计算量都控制在正比于n的前提下,将多个质数相乘使得n非常大,最终使得让破解的计算量远超过加密解密的计算量。即把加密解密的计算量(n)降低到了破解的计算量(n的平方)之下。但面对多项式时间敌手时的渐近安全性的定义下,后量子RSA没有达到安全的标准,但后量子RSA看似确实提供了一个合理水平的具体的安全性。
2.讨论相关技术
2.1标准快速乘法技术
计算xd mod n的经典加速是计算xd mod p和xd mod q,其中p和q是n的主要因数。根据费尔马同一性:xp mod p = x mod p进一步意味着xd mod p = xd mod(p-1)mod p(因为d mod(p-1)≥1)并且类似地xd mod q = xd mod(q-1)mod q值。指数d mod(p - 1)和d mod(q - 1)只有n的一半。该指数xd模n因此被具有半尺寸指数和半尺寸模的两个指数代替。如果n是更多的素数的乘积,例如k≥3个素数,则相同的加速使用(1 / k)大小指数的k次幂指数变得更加有效和(1 / k) - 大小模量。
2.2标准的素数生成技术
生成可能是主要的随机数字后采用拉宾的测试。决定一个给定的数字可能是素数,并产生一个或几个可能是素数的随机整数。
产生一个数字
其中:函数Rabin(n)
{n是一个奇数,n> 1}
在2和n - 2之间随机一致地选择一个整数
如果〜R〜 则返回 “素数”
否则返回“复合”。
测试步骤如下:
1、funetiofi GenPrime(l,k)
{I是正整数;k是安全参数}
2、重复n〜随机选取的数字奇数
3、直到重复Rabin(n,k)=“prime”
4、返回
但输出只是一个概率上的素数,存在错误的概率。
3.RSA-KEM算法
RSA-KEM加密过程:OAEP-EME.Encode(M,L,ELEN)
//判断是否| M | >ELEN - 2·HLEN - 1;
If(| M | >ELEN - 2·HLEN - 1)
return false;
//生成长度HLEN的随机字节串R。
byteR[]=new byte[HLen];Random rand=new Random();for(int i=0;i
len=ELen-| M | -2·HLen;
bytepad[]=new byte[len];
x= Hash.eval(L)||pad||M;
s= KDF(r,ELen - HLen)⊕x;
t= KDF(s,HLen)⊕r;
Output E = t||s;
RSA-KEM解密过程:OAEP-EME.Decode(E,L)
1.ELen= | E |;
if(Elen<2·HLen + 1)
Return false;
e= ts;
| T | = HLen;
| S | = ELen- HLen;
r = KDF(s,HLen)⊕t。
x = KDF(r,ELen - HLen)⊕s。
If(x! = Hash.eval(L)||pad||M)
return fasle;
Output M.
4.未来的研究方向、及未解决的难题
4.1、RSA的所有用户(包括传统的前量子RSA的用户)都应该将他们的密钥生成计算委托给NIST或其他可信的第三方。难题是证明批量生成与一次一个用户的RSA密钥生成相比,可以更有效地执行安全的多用户RSA密钥生成。
4.2、后续工作的另一个自然方向是将后量子RSA集成到标准互联网协议(如TLS)中。这种集成概念简单明了,但需要解决许多系统级的挑战,例如对加密库允许的RSA密钥大小的各种限制。