關于Quantum Algorithms for Computing Short Discrete Logarithms and Factoring RSA Integers閱讀報告
關于《用于計算短離散對數和因式分解RSA整數的量子算法》閱讀報告
一、文章主要思想與工作
? ? ? ?文章主要思想是通過概括量子算法和描述用于計算短離散對數的算法的應用,從而改進了用于計算短離散對數和因式分解RSA整數的量子算法,使算法更為簡單及方便。
? ? ? ?本文作者主要工作是推廣本文中的量子算法來計算短離散對數,進一步將指數的大小減少到略大于m位。此外文章根據對短離散對數的算法,RSA整數的因式分解,以及在邊信息下尋找組的順序,可能會被重建為短離散對數問題產生一個算法來分解RSA整數,比shor算法在量子計算機上要求簡單更多。
二、相關技術
1、計算離散對數問題
? ? ? ?所謂離散對數,就是給定正整數x,y,n,求出正整數k(如果存在的話),使y≡xk(mod n)。就目前而言,人們還沒有找到計算離散對數的快速算法(所謂快速算法,是指其計算復雜性在多項式范圍內的算法,即O(logn)k,其中k為常數)。雖然有快速計算離散對數的量子算法,其計算復雜性為O(logn)2+?著,但現在并沒有量子計算機(實用的量子計算機也許根本就建造不出來)。
? ? ? ?而離散對數的應用是離散對數公鑰加密算法,其安全性要遠遠高于基于大數分解的RSA算法。方法如下:
? ? ? ?公鑰密碼體制的運作過程(假定A和B兩個人要在一個不安全通道如因特網上形成密鑰以備日后加密解密所用)。首先,A、B兩人要共同公開約定一個素數q和有限域Fq中的一個生成元g;A選定一個隨機數a∈{1,2,…,q-1}(a可以認為是A之私鑰),并將g a(modq)傳送給B;B選定一個隨機數b∈{1,2,…,q-1}(b可以認為是B之私鑰),并將gb(modq)傳送給A;此時A可以算出(g b)a(modq),B也可以算出(g a)b(modq),由于(gb)a(modq) = (g a)b(modq) = g ab(modq),因此,A和B就形成了一個公共的密鑰g ab(modq),日后便可以此鑰來進行傳統的加密解密計算,從而達到在不安全的通道上進行保密通訊的目的。
? ? ? ?顯然,敵方可以截獲到g,q,g a(modq),g b(modq)。因此,如果敵方有快速的求解離散對數的算法,就能從已截獲的上述信息中迅速求出a或b,從而算出g ab(modq)。遺憾的是,目前世界上根本就沒有快速的求解離散對數的算法,因此當所選的有限域Fq很大時,a或b就很難算出。
? ? ? ?離散對數形式相對比較靈活,每個發送端可以在發送每條消息是指定自己的公鑰,但接收端回復的消息也只有發送端才能解密;也可通信握手階段協商密鑰,接下來根據協商的密鑰走對稱加密。
? ? ? ?資料來源:https://en.wikipedia.org/wiki/Discrete_logarithm
? ? ? ? ? ? ? ? ? ? ? ??http://blog.csdn.net/chen77716/article/details/7106485
2、因式分解RSA整數
? ? ? ?所謂因式分解,即給出兩個大約數,很容易就能將它們兩個相乘。但是,給出它們的乘積,找出它們的因子就顯得不是那么容易了。這就是許多現代密碼系統的關鍵所在。如果能夠找到解決整數分解問題的快速方法,幾個重要的密碼系統將會被攻破,包括RSA公鑰算法和Blum Blum Shub隨機數發生器。
? ? ? ?盡管快速分解是攻破這些系統的方法之一,仍然會有其它的不涉及到分解的其它方法。所以情形完全可能變成這樣:整數分解問題仍然是非常困難,這些密碼系統卻是能夠很快攻破。有的密碼系統則能提供更強的保證:如果這些密碼系統被快速破解(即能夠以多項式時間復雜度破解),則可以利用破解這些系統的算法來快速地(以多項式時間復雜度)分解整數。換句話說,破解這樣的密碼系統不會比整數分解更容易。這樣的密碼系統包括Rabin密碼系統(RSA的一個變體)以及Blum Blum Shub隨機數發生器。
? ? ? ?而RSA的安全性依賴于大數分解,但是否等同于大數分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數分解。假設存在一種無須分解大數的算法,那它肯定可以修改成為大數分解算法。RSA的一些變種算法已被證明等價于大數分解。不管怎樣,分解n是最顯然的攻擊方法。人們已能分解多個十進制位的大素數。因此,模數n必須選大一些,因具體適用情況而定。
? ? ? ?RSA算法是一種非對稱密碼算法,所謂非對稱,就是指該算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。RSA的算法涉及三個參數,n、e1、e2。其中,n是兩個大質數p、q的積,n的二進制表示時所占用的位數,就是所謂的密鑰長度。e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2×e1)≡1(mod(p-1)×(q-1))。n,e1),(n,e2)就是密鑰對。其中(n,e1)為公鑰,(n,e2)為私鑰。RSA加解密的算法完全相同,設A為明文,B為密文,則:A≡B^e2( mod n);B≡A^e1 (mod n);(公鑰加密體制中,一般用公鑰加密,私鑰解密),e1和e2可以互換使用,即:A≡B^e1 (mod n);B≡A^e2( mod n)。
? ? ? ?RSA的公鑰、私鑰均有接收端(比如Server)簽發,非常適合互聯網上的證書服務:服務端簽發證書,客戶端使用該證書,保證客戶端到服務端之間的通信安全。如果雙端都需要非對稱加密,則雙方都必須發布公鑰,并且公鑰不能頻繁變更,做不到每個端點一個公鑰,因此,任何一個接收端都可以查看發送端的消息(公鑰解密)。
? ? ? ?資料來源:https://en.wikipedia.org/wiki/RSA_Factoring_Challenge
? ? ? ? ? ? ? ? ? ? ? ??https://en.wikipedia.org/wiki/RSA_(cryptosystem)
? ? ? ? ? ? ? ? ? ? ? ??https://en.wikipedia.org/wiki/Integer_factorization
3、量子算法及量子計算機
? ? ? ?量子分解算法利用量子計算的并行性,可以快速分解出大數的質因子,將使量子計算機很容易破解目前廣泛使用的密碼如RSA公鑰加密系統,嚴重威脅到銀行、網絡和電子商務等的信息安全以及國家安全。因此,Shor算法的提出迅速引起了世界各國對量子計算研究的高度關注。
? ? ? ?而量子計算機(quantum computer)是一類遵循量子力學規律進行高速數學和邏輯運算、存儲及處理量子信息的物理裝置。當某個裝置處理和計算的是量子信息,運行的是量子算法時,它就是量子計算機。
? ? ? ?量子計算機在密碼破解上有著巨大潛力,當今主流的非對稱(公鑰)加密算法,如RSA加密算法,大多數都是基于于大整數的因式分解或者有限域上的離散指數的計算這兩個數學難題。他們的破解難度也就依賴于解決這些問題的效率。傳統計算機上,要求解這兩個數學難題,花費時間為指數時間(即破解時間隨著公鑰長度的增長以指數級增長),這在實際應用中是無法接受的。而為量子計算機量身定做的秀爾算法可以在多項式時間內(即破解時間隨著公鑰長度的增長以k次方的速度增長,其中k為與公鑰長度無關的常數)進行整數因式分解或者離散對數計算,從而為RSA、離散對數加密算法的破解提供可能。但其它不是基于這兩個數學問題的公鑰加密算法,比如橢圓曲線加密算法,量子計算機還無法進行有效破解 。
? ? ? ?資料來源:https://en.wikipedia.org/wiki/Quantum_computing
三、文章的算法
sage代碼
RSA加密解密過程:
# randomly select some prime numbers
p = random_prime ( 1000 ) ; p 191
q = random_prime ( 1000 ) ; q 601
# compute the modulus
N = p * q
R = IntegerModRing ( N )
Phi_N = ( p-1 ) * ( q-1 )
# we can choose the encrypt key to be anything
# relatively prime to Phi_N
e = 17
gcd ( d , phi_N ) 1
# the decrypt key is the multiplicative inverse
# of d mod phi_N
d = xgcd ( d , phi_N ) [1] % phi_N
d 60353
# now we will encrypt/decrypt some random 7 digit numbers
P = randint ( 1 , 127 ) ; P 97
# encrypt
C = R ( P ) ^ e ; C 46685
# decrypt
R ( C ) ^ d 97
P = randint ( 1 , 127 ) ; P 46
# encrypt
C = R ( P ) ^ e ; C 75843
# decrypt
R ( C ) ^ d 46
P = randint ( 1 , 127 ) ; P 3
# encrypt
C = R ( P ) ^ e ; C 288
# decrypt
R ( C ) ^ d 3
對大整數進行運算:
p = random_prime ( 1000000000 ) ; p 114750751
q = random_prime ( 1000000000 ) ; q 8916569
N = p * q
R = IntegerModRing ( N )
Phi_N = ( p-1 ) * ( q-1 )
e = 2 ^ 16 + 1
d = xgcd ( d , phi_N ) [1] % phi_N
d 237510735093473
P = randint ( 1 , 1000000 ) ; P 955802
C = R ( P ) ^ e
R ( C ) ^ d 955802
四、未來的研究方向、未解決的難題等
? ? ? ?目前的難題是量子算法不夠精良,不夠方便應用。未來的研究方向還要繼續優化量子算法,例如用于分解一般整數的shor算法,把一個隨機群元素取冪到一個長度為l+ m位的指數,其中元素的階數r范圍或限制條件是r <2m和l = m / s,量子算法被執行多次后,以整數j1,j2,...的形式產生部分結果,最后就像
類似。也要在L里面尋求一個非0的整數r,可以使算法更為方便和簡單的運行。
? ? ? ?最重要的方向還是在優化算法后,制造出真正意義上的量子計算機,破解算法,量子數值計算,量子系統的模擬等等好多復雜的問題將會迎刃而解。