《Post-quantum RSA》閱讀報告
20152100123卓翔
一、文章主要思想與工作
文章主要是提出了一種新型改進版的后量子RSA。這個后量子RSA比現(xiàn)在通行的RSA密碼體系更加能夠抵抗量子計算機的攻擊。但在理論層面,這個進步只是把“完全不安全”(敵方破解幾乎跟合法用戶解密一樣快)提升到了“稍微有點安全可言”(破解的速度低于加密解密的速度),遠遠沒有達到正統(tǒng)的安全標準(破解的計算量指數(shù)增長)。該文結(jié)論是:目前版本的RSA在量子算法面前不堪一擊,因此該文章介紹了一種新的量子分解算法GEECM,它比Shor算法和所有預(yù)量子分解算法快得多。GEECM成為后量子RSA參數(shù)選擇的主要限制之一,在某種意義上可以對抗已知的量子算法。
二、討論相關(guān)技術(shù)
量子位提供了難以想象的海量數(shù)字存儲和運算能力,但此處還需要能調(diào)動得起量子計算機這可怕性能的量子算法,才能讓量子計算具備實際用途。后量子密碼術(shù)是個活躍的研究領(lǐng)域,但沒有在原理層面證明任何一個公鑰密碼體制可以抵抗量子計算機甚至經(jīng)典計算機。一個公鑰密碼體制可以抵抗某種算法的攻擊(包括量子算法),不等于能從原理上證明其安全性,因為后者是要證明它可以抵抗任何已知和未知算法的攻擊。而至今唯一能從原理上嚴格證明安全性的密碼體制,就是量子密碼術(shù)。這是量子密碼術(shù)與所有的公鑰密碼體制之間的根本差別。
目前人類對于量子算法研究里已經(jīng)形成公眾影響力的領(lǐng)域是信息安全——具體點說就是加密和解密,尤其是后者。其中最有名的是1994年的Shor算法,這個算法可指導(dǎo)量子計算機進行大數(shù)因子分解,而大數(shù)因子分解正是目前流行的公開密鑰體系RSA的核心。
Shor把因數(shù)分解的計算量減少到了多項式級別。由于合法用戶加密解密也是需要計算量的,而Shor的量子算法強大到了破解RSA跟合法用戶解密幾乎一樣快。所以為了對抗已知的量子算法的攻擊,該文章提出了一種改進的RSA版本。
在老派的安全性定義下,即面對多項式時間敵手時的漸近安全性的定義下,后量子RSA沒有達到安全的標準。然而,后量子RSA看起來確實提供了一個合理水平的具體的安全性。沒有任何公鑰密碼體系在多項式時間的量子敵手的面前是安全的;但是有公鑰密碼體系在比如說基本上是線性時間的量子敵手的面前是安全的。后量子RSA就是其中一個候選者。
傳統(tǒng)的RSA是把兩個質(zhì)數(shù)相乘。該文章提出,通過一系列數(shù)學(xué)技巧(快速的乘法以及隨機生成質(zhì)數(shù)的方法等等),可以把加密解密的計算量都控制在正比于n,然后把非常多的質(zhì)數(shù)相乘,使得n非常大,就可以讓破解的計算量顯著地超過加密解密的計算量。簡而言之,就是把加密解密的計算量(n)降低到了破解的計算量(n的平方)之下。該文章把這種改進版RSA稱為后量子RSA。
三、后量子RSA算法
(親愛的斌頭老師,很抱歉我水平有限,寫不出代碼,請海涵……)
1、后量子分解算法
新的量子分解算法GEECM,比Shor算法和所有預(yù)量子分解算法快得多。量子環(huán)算法:GEECM。更高效的方法是采用最好的預(yù)量子算法來尋找小素數(shù),并使用量子技術(shù)來加速這些算法。
在標準猜想下,ECM使用2^((lgy)^(1/2+o(1)))環(huán)操作來找到素數(shù)p≤y。在對o(1)進行更詳細的分析的基礎(chǔ)上得出截斷值在2^30以下。
ECM的最新變體是EECM(使用Edwards曲線的ECM)。EECM選擇愛德華茲曲線(Edwards curve)x^2+y^2=1+d^2y^2超過Q,或者選擇具有已知非扭轉(zhuǎn)點P的扭曲Edwards曲線;EECM也選擇一個較大的整數(shù)s,并使用Edwards加法定律來計算曲線上P的倍數(shù),特別是用整數(shù)的一小部分表示的x坐標x(sP)。環(huán)算法的輸出是這個分數(shù)的分子??偟膩碚f,計算需要(7+o(1))lgs乘法(其中一半以上是平方)和相當數(shù)量的加法和減法。
如果s被選為lcm{1,2,...,z},那么lgs≈1.4z,所以這個曲線計算使用大約10z的乘法。如果z∈L^(c+o(1))為y→∞,其中L=exp(logyloglogy)且c是一個常數(shù),那么標準猜想意味著每個素數(shù)p≤y是由概率1/L^(1/2c+o(1))得出。標準猜想也意味著曲線幾乎是獨立的,所以嘗試L^(1/2c+o(1))曲線。嘗試所有這些曲線的總成本是L^(c+1/2c+o(1))環(huán)操作。對于c=1/√2,表達式c+1/2c取最小值1;那么總成本就是L^(√2+o(1))環(huán)操作。
使用量子計算機的GEECM(Grover plus EECM),以加速相同的EECM計算。Grover的方法是加速搜索函數(shù)的根:如果函數(shù)f的輸入是概率為1/R的f的根,則經(jīng)典搜索執(zhí)行R的R評估,而Grover的方法是執(zhí)行關(guān)于√R量子評估f??紤]函數(shù)f,其輸入是EECM曲線的選擇結(jié)果,并且當該曲線選擇的EECM結(jié)果具有與n相同的非平凡因子時,其輸出恰好為0。EECM通過經(jīng)典搜索找到f的根;GEECM通過Grover的方法找到了f的根。如果選擇s和z,那么f的輸入就是f的概率為1/L^(1/2c+o(1))的根,所以GEECM只使用L^(1/4c+o(1))量子估計的f,總的L^(c+1/4c+o(1))量子環(huán)運算。對于c=1/2,表達式c+1/4c取其最小值1;那么總的成本就是L^(1+o(1))環(huán)操作。
總而言之,GEECM將環(huán)操作從L^(√2+o(1))減少到L^(1+o(1)),其中L=exp(logyloglogy)。對于相同數(shù)量的操作,GEECM將logy增加了2+o(1),幾乎是可以找到的素數(shù)的兩倍。
2、RSA可擴展性
后量子RSA公鑰n需要相當大才能抵抗上述后量子分解算法中描述的攻擊。RSA可擴展性分析了可用于RSA密鑰生成、加密、解密、簽名生成和簽名驗證的最佳算法的可擴展性。
(1)選用小指數(shù)?;镜腞SA公鑰運算是計算一個n次方的模。這個模冪運算使用大約lge平方模n,并且由于標準的窗口技術(shù),o(eg)需要額外的乘法模n。為簡單起見,該文章取e=3。計算n次模n,然后取n個模n和一個常數(shù)乘nn。每個步驟都使用標準的快速乘法技術(shù)來進行(lgn)^(1+o(1))位操作。
(2)多素數(shù)?;镜腞SA密鑰操作是計算eth根模n。對于e=3,選擇n作為與2模3一致的不同素數(shù)的乘積;那么x→x^3modn的倒數(shù)是x→x^d mod n,其中d=(1+2Πp|n(p-1))/3。但是d不是一個小指數(shù),它大約有l(wèi)gn個位,所以需要以下情況做加速。
計算x^d mod n的一個經(jīng)典加速是計算x^d mod p和x^d mod q,其中p和q是n的主要因數(shù),組合為x^d mod n中國剩余定理的適當?shù)娘@式形式。費馬的同一性x^p mod p=x mod p進一步意味著x d d mod p=x^(d mod(p-1))mod p(因為d mod(p-1)≥1)并且類似地有x^d mod q=x^(d mod(q-1))mod q。指數(shù)d mod(p-1)和d mod(q-1)只有n的一半;指數(shù)x^d mod n因此被具有半尺寸指數(shù)和半尺寸模數(shù)的兩個指數(shù)代替。
如果n是多素數(shù)的乘積,例如k≥3個素數(shù),則使用(1/k)大小的指數(shù)和(1/k)大小的模數(shù)的k次取冪。由于素數(shù)較小,計算也變得容易得多。如果素數(shù)太小,那么攻擊者就可以使用上述討論的環(huán)算法,特別是量子計算機之前的EECM和量子計算機之后的GEECM。
該文章的重點是多重RSA如何擴展到更大的模數(shù)n。在量子計算機之前,最主要的威脅是EECM和NFS,平衡這些威脅意味著每個素數(shù)p有(lgn)^(2/3+o(1))位,即k∈(lgn)^(1/3+O(1))。在量子計算機誕生之后,最主要的威脅是GEECM和Shor算法,平衡這些威脅意味著每個素數(shù)p只有(lglgn)^(2+o(1))個比特,即k∈(lgn)/lglgn)^(2+o(1))。RSA密鑰生成、解密和簽名生成,采?。╨gn)^(1+o(1))位操作。
(3)密鑰生成。k-prime指數(shù)-3RSA公鑰n是k個與2模3相同的不同的素數(shù)p的乘積。特別地,后量子RSA公鑰n是k個不同的素數(shù)p與2相等的乘積模3,其中每個素數(shù)p具有(lglgn)^(2+o(1))位。標準的素數(shù)生成技術(shù)使用(lgp)^(3+o(1))位操作。
一個標準的加速是檢查p是否可以被任何通過某個極限的冪整除,比如y。這個可分性測試中存在一個隨機整數(shù)的概率大約為1/logy,如果試算組不是原始的隨機數(shù),則將原始的隨機數(shù)池減少到(logp)/logy隨機數(shù)。傳統(tǒng)的觀點認為,控制審判的成本需要y被選為lgp中的一個多項式,只保存一個因子(lglgp),因此仍然需要(1gp)^(3+o(1))位操作。
一個非標準的加速是通過分批試驗或分批光滑檢測來代替試驗分割(或篩分)。算法是讀取正整數(shù)的有限序列S和素數(shù)的有限集合P,并使用b(lgb)^(2+o(1)得到S中每個整數(shù)的最大P光滑除數(shù),其中b是P和S中的總位數(shù)。特別地,如果P是通過y的整數(shù)集合,并且S是每個具有Θ(y/lgp)的整數(shù)的序列,(lgp)比特,則b是Θ(y),該算法僅使用y(lgy)^(2+o(1))比特運算,即(lgp)(lgy)^(2+o)位操作。較大的序列S可以平分為大小為Θ(y/lgp)的序列,每個元素S產(chǎn)生相同的性能。
為了做得更好,假設(shè)S的原始大小至少為2^(2α),并且y=2^(2^0),y=2^(2^1),y=2^(2^)2,依此類推,直到y(tǒng)=2^(2^α)。每個步驟都將S中剩下的一半元素作為復(fù)合材料除去;下一步的成本大約是每個元素的四倍,但只適用于一半的元素。對于S的每個原始元素,總成本只是(lgp)(2^α)^(1+o(1))位操作。每個原始元素具有約1/2^α的存活概率并產(chǎn)生一個指數(shù)運算,其代價是(lgp)^(2+o(1))位操作。選擇2^α∈(lgp)^(0.5+o(1))為S的每個原始元素(即(lgp))平衡這些代價為(lgp)^(2.5+o(1))為每個生成的素數(shù)。
在后量子RSA的情況下,滿足S的原始大小的假設(shè):必須生成(lgn)^(1+o(1))素數(shù),所以S的原始大小是(lgn)^1+o(1)),對于2^α∈(1+o(1))lglgn,至少為2^(2^α),由于lgp∈(lglg n)^(2+o(1)),所以α的選擇滿足2^α∈(lgp)^(0.5+o(1)素數(shù)也是平衡的,就每個p而言(lgn)/k∈(lgp)^(1+o(1)),所以用這種方式生成k個素數(shù)使用k(lgp)(2.5(1))=(lgn)(lgp)^(1.5+o(1))=(lgn)(lglgn)^(3+o(1))位運算。
(4)加密。Shoup的“RSA-KEM”等最新的機制簡單地使用RSA對隨機數(shù)據(jù)的n位進行加密,對隨機數(shù)據(jù)進行散列,得到一個密鑰,用密鑰對用戶的消息進行加密和認證,并且不需要任何填充。
真正的隨機數(shù)據(jù)可以通過流密碼產(chǎn)生的偽隨機數(shù)據(jù)來模擬一個更小的密鑰。這包含幾個可伸縮密碼,其產(chǎn)生來自Θ(b)位密鑰的Θ(b)位輸出塊,猜測每個輸出比特,使用b^(2+o(1))比特運算,即b^(1+o(1))比特運算。在后量子RSA的情況下,有一個b∈Θ(lglgn),所以產(chǎn)生lgn偽隨機比特成本(lgn)(lglgn)^(1+o(1))比特運算。也可以將相同的密碼轉(zhuǎn)換成散列函數(shù),其效率只有一個常數(shù)因子的損失,所以對這些比特進行散列也會導(dǎo)致比特操作的成本(lgn)(lglgn)^(1+o(1))。
乘法還需要(lgn)(lglgn)^(1+o(1))位操作。平方、減模n、乘法和另一個減法模n一起?。╨gn)(lglgn)^(1+o(1))位操作。因此,RSA加密的總體成本是(lgn)(lglgn)^(1+o(1))比特操作加上在產(chǎn)生的密鑰下加密和認證用戶消息的成本。
(5)解密。首先減少密文模n的所有素因子。采用(lgn)(lglgn)^(2+o(1))位運算使用余數(shù)樹或縮放余數(shù)樹。然后計算每個素數(shù)模的立方根,立方根模p?。╨gp)^(2+o(1))位操作,所有立方體根都一起取(1gn)(2+o)。然后重建立方根n。使用快速插值技術(shù)來執(zhí)行(lgn)(lglgn)^(2+o(1))位操作。最后散列立方根。RSA解密的總體成本是(lgn)(lglgn)^(2+o(1))位操作,加上在得到的密鑰下驗證和解密用戶消息的成本。在后量子RSA的情況下,加密的速度比加速解密要慢得多。
(6)簽名生成和驗證。用于RSA簽名的標準填充方案涉及上面討論的相同操作,例如散列為短字符串并使用流密碼將短字符串擴展為長字符串。生成一個簽名和(lgn)(lglgn)^(1+o(1))以驗證簽名,加上散列用戶消息的代價。
四、未來的研究方向、未解決的難題
首先,大的秘密(big secret)可以防止惡意軟件限制數(shù)量的旁路攻擊和有限數(shù)量的漏洞?;舅枷胧窍拗苽?cè)通道和出口通道的時間和/或帶寬,而且這些限制可以阻止攻擊者提取所需的秘密。 分析后量子RSA中的秘密提供這種保護的程度是很有意思的。 然而,系統(tǒng)的其他部分可能會損害正面的答案,而這些部分并沒有把重心放在擴展數(shù)據(jù)上。
我們的批量生成算法表明,為了幫助降低能耗,RSA的所有用戶(包括傳統(tǒng)的預(yù)量子RSA的用戶)都應(yīng)該將他們的密鑰生成計算委托給NIST或另一個可信的第三方。除了速度可以提高外,還可以使用戶生成新的RSA密鑰的同時并更頻繁地刪除舊的RSA密鑰,從而限制了密鑰被盜用的危害。然而,所有可信的第三方協(xié)議都引發(fā)了安全問題,并且所有已知技術(shù)安全地分配或委托RSA計算的成本都很高。這里面臨的挑戰(zhàn)是證明,與一次一個用戶的RSA密鑰生成相比,如何更有效地執(zhí)行安全的多用戶RSA密鑰生成。
后續(xù)工作的另一個自然方向是將后量子RSA集成到標準互聯(lián)網(wǎng)協(xié)議(如TLS)中。這種集成在概念上很簡單,但需要解決許多系統(tǒng)級的挑戰(zhàn),例如對加密庫允許的RSA密鑰大小的各種限制。如果目的僅僅是為了防止過去的流量完全失竊(“前向保密”),則用戶可以通過預(yù)先生成許多RSA密鑰來獲得加速,并且在第一次使用之后不久就擦除每個密鑰。在生成每個密鑰之后不久就會刪除每個密鑰,有時會被稱為幫助保護未來的流量免受有限類型的泄露。
量子密碼術(shù)的還有一個最明顯的缺點就是慢。由于密鑰是通過單光子的發(fā)射和接收產(chǎn)生的,條件十分苛刻,所以生成密鑰的速度目前都是在每秒多少k的量級。在一次性便箋加密中,明文跟密鑰一樣長,所以傳輸信息的速度就等于生成密鑰的速度。如果用AES、DES之類不等長加密的對稱密碼算法,速度倒是上去了,但又有可能被數(shù)學(xué)破解了。此外,量子密碼術(shù)的成本應(yīng)該也不低。
五、參考文章
【1】《Post-quantum RSA》
【2】《徐令予:炒作量子通信工程,連潘建偉都擔心》http://www.guancha.cn/XuLingyu/2017_10_31_432886_s.shtml
【3】《量子保密通信:了解科學(xué)和工程,認清李鬼與李逵(上)》http://p.baidu.com/daily/view?id=99279
【4】《量子保密通信:了解科學(xué)和工程,認清李鬼與李逵(下)》http://p.baidu.com/daily/view?id=99375