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密钥大小的各种限制。

你可能感兴趣的:(Post-quantum RSA)