秀爾算法:破解RSA加密的「不滅神話」

RSA加密 VS 秀爾算法html

做爲RSA加密技術的終結者——「太多運算,沒法讀取」的秀爾算法(Shor’s algorithm)不是經過暴力破解的方式找到最終密碼的,而是利用量子計算的並行性,能夠快速分解出公約數,從而打破了RSA算法的基礎(即假設咱們不能頗有效的分解一個已知的整數)。同時,秀爾算法展現了因數分解這問題在量子計算機上能夠頗有效率的解決,因此一個足夠大的量子計算機能夠破解RSA。算法

RSA加密「曾經」之因此強大,是由於它對極大整數作因數分解的難度決定了RSA算法的可靠性。將兩個質數相乘是件很容易的事情,但要找到一個龐大數字的質因子卻很是困難。這即是大量現代科技的依靠之處,RSA加密就是憑藉其簡潔性迅速風靡。

然而,有一種技術可讓RSA加密無用武之地。秀爾算法能夠破解RSA,可是怎樣才能讓它真正見效呢?安全

咱們這裏並不是建議你同時嘗試全部可能的質因子。機器學習

而是使用(相對)簡潔的語句:ide

若是咱們快速找到下面這個周期函數的週期,函數

 f(x) = m^x (mod N)

咱們即可以破解RSA加密。學習

秀爾五步走加密

那麼,秀爾算法到底是怎樣工做的呢?在秀爾五步法中,只有一步須要是須要用到量子計算機的,其餘的步驟則均可以採用傳統方法解決。spa

第一步:.net

使用傳統最大公約數分解(gcd)算法,也就是展轉相除法。N是你須要嘗試的因子,m則是一個小於N的隨機正整數。

若是gcd(m,N)=1,則繼續。一旦你使用gcd找到一個因子,你便能得到一個非凡因子,而後結束。

第二步:

找到週期 P

m mod N, m^2 mod N, m^3 mod N

這是使用量子計算的一步。

第三步:

若是週期P是奇數,回到第一步,選擇另外一個隨機整數。若是不是,繼續下一步。

第四步:

檢驗

若是成立,則繼續第五步;反之,回到第一步。

第五步:

解得一個非凡素因數N的值,而後你便能破解RSA加密了。

第二步是怎樣實現的?

然而,量子計算機是如何找到函數週期的?這又爲何如此重要?

咱們來看一下週期 P :

m mod N, m^2 mod N, m^3 mod N

(因爲這是一個指數函數,咱們能夠將一個複雜的質數轉換成雙曲正弦、餘弦而後獲得週期)

這個發現週期的過程須要依賴量子計算機同時計算許多狀態的能力,也就是狀態的「疊加」,所以咱們能找到方程的週期。

咱們須要這麼作:

一、應用Hadamard gate來建立一個量子疊加態
二、量子轉換使方程生效
三、執行量子傅立葉變換

與傳統狀況相似,在這些轉化以後,一個測量值將會產生一個近似方程週期的值(你能夠得到「波峯」,就像傅立葉變換中的,而準確性會更高一點)。使用量子傅立葉變換,咱們可以解決排序和因數問題,這兩者相同。量子傅立葉變換可讓一臺量子計算機進行相位估計(酉算子特徵值的近似值)。

當你完成量子部分(第二步)的時候,你能夠檢查一下週期的有效性,而後使用另外一個傳統的最大公約數算法獲得密鑰的質因素。

有趣的是,因爲這項技術並非在於找到全部潛在質因數,而是找到潛在週期,你就沒必要嘗試不少隨機數直到找到一個成功的質因數N。若是P是奇數,那你不得不回到第一步,這裏

K是一個不一樣於N的質因素。所以,即便你加倍密鑰長度(N),尋找質因數也不會出現放緩的狀況。RSA是不安全的,一樣加倍密鑰長度也不能幫你抵禦量子計算的洶涌來襲,而保障安全。

「破解RSA-2048(2048-bit)的密鑰可能須要耗費傳統電腦10億年的時間,而量子計算機只須要100秒就能夠完成。」 
                                                          ——Dr. Krysta Svore, 微軟研究院

量子傅立葉變換被用於創建量子線路,使得秀爾算法的物理實現成了量子計算機最爲輕鬆的任務之一。

量子傅立葉變換:青出於藍

秀爾算法的核心是發現順序,這樣即可以減小阿貝爾的隱子羣問題,使用量子傅立葉變換即可以解決。——NIST 量子世界

量子傅立葉變換是許多量子算法的關鍵所在。它並不加速尋找傳統傅立葉轉變,可是可以在一個量子振幅內執行一個傅立葉變換。在一臺量子計算機上能夠指數增加般快速處理量子傅立葉變換。雖然超過了直接映射經典傅立葉變換的範疇,量子計算機也能夠作其餘的事。例如,解決隱子羣問題(也就是解決離散對數問題),或是計數問題(解決了這個問題就能夠解決現代密碼學中不少其餘形式的密碼)。更重要的是,量子傅立葉變換能夠應用到機器學習、化學、材料科學或者模擬量子系統。

秀爾算法中只有一個步驟是須要在量子計算機上完成的,其餘的均可以在普通的超級計算機上完成。量子計算機運行完子程序後就會將結果返回給超級計算機讓它繼續完成計算過程。量子計算機可能永遠不會是單獨存在的,而是一直和超級計算機配合執行任務,通過這樣的配合它們就能夠破解RSA密鑰。

由於篇幅有限,不少數學細節和證實過程就再也不贅述了,若是你對這些數學解釋感興趣,若是你具有線性代數、羣論、高等數學的知識,你能夠看看這些:

Quantum Computer Science

Quantum Information and Quantum Computation

NIST Quantum Zoo — 一個全部量子算法的列表

相關文章
相關標籤/搜索