秀爾算法:破解RSA加密的“不滅神話”
RSA加密曾被視為最可靠的加密算法,直到秀爾算法出現(xiàn),打破了RSA的不滅神話。
RSA加密 VS 秀爾算法
作為RSA加密技術(shù)的終結(jié)者——“太多運(yùn)算,無(wú)法讀取”的秀爾算法(Shor’s algorithm)不是通過(guò)暴力破解的方式找到最終密碼的,而是利用量子計(jì)算的并行性,可以快速分解出公約數(shù),從而打破了RSA算法的基礎(chǔ)(即假設(shè)我們不能很有效的分解一個(gè)已知的整數(shù))。同時(shí),秀爾算法展示了因數(shù)分解這問(wèn)題在量子計(jì)算機(jī)上可以很有效率的解決,所以一個(gè)足夠大的量子計(jì)算機(jī)可以破解RSA。
RSA加密“曾經(jīng)”之所以強(qiáng)大,是因?yàn)樗鼘?duì)極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性。將兩個(gè)質(zhì)數(shù)相乘是件很容易的事情,但要找到一個(gè)龐大數(shù)字的質(zhì)因子卻非常困難。這便是大量現(xiàn)代科技的依靠之處,RSA加密就是憑借其簡(jiǎn)潔性迅速風(fēng)靡。
然而,有一種技術(shù)可以讓RSA加密無(wú)用武之地。秀爾算法可以破解RSA,但是怎樣才能讓它真正見效呢?
我們這里并非建議你同時(shí)嘗試所有可能的質(zhì)因子。
而是使用(相對(duì))簡(jiǎn)潔的語(yǔ)句:
如果我們快速找到下面這個(gè)周期函數(shù)的周期,
f(x) = m^x (mod N)
我們便可以破解RSA加密。
秀爾五步走
那么,秀爾算法究竟是怎樣工作的呢?在秀爾五步法中,只有一步需要是需要用到量子計(jì)算機(jī)的,其他的步驟則都可以采用傳統(tǒng)方法解決。
***步:
使用傳統(tǒng)***公約數(shù)分解(gcd)算法,也就是輾轉(zhuǎn)相除法。N是你需要嘗試的因子,m則是一個(gè)小于N的隨機(jī)正整數(shù)。
如果gcd(m,N)=1,則繼續(xù)。一旦你使用gcd找到一個(gè)因子,你便能獲得一個(gè)非凡因子,然后結(jié)束。
第二步:
找到周期 P
m mod N, m^2 mod N, m^3 mod N
這是使用量子計(jì)算的一步。
第三步:
如果周期P是奇數(shù),回到***步,選擇另一個(gè)隨機(jī)整數(shù)。如果不是,繼續(xù)下一步。
第四步:
檢驗(yàn)
如果成立,則繼續(xù)第五步;反之,回到***步。
第五步:
解
解得一個(gè)非凡素因數(shù)N的值,然后你便能破解RSA加密了。
第二步是怎樣實(shí)現(xiàn)的?
然而,量子計(jì)算機(jī)是如何找到函數(shù)周期的?這又為什么如此重要?
我們來(lái)看一下周期 P :
m mod N, m^2 mod N, m^3 mod N
(由于這是一個(gè)指數(shù)函數(shù),我們可以將一個(gè)復(fù)雜的質(zhì)數(shù)轉(zhuǎn)換成雙曲正弦、余弦然后得到周期)
這個(gè)發(fā)現(xiàn)周期的過(guò)程需要依賴量子計(jì)算機(jī)同時(shí)計(jì)算許多狀態(tài)的能力,也就是狀態(tài)的“疊加”,因此我們能找到方程的周期。
我們需要這么做:
1、應(yīng)用Hadamard gate來(lái)創(chuàng)建一個(gè)量子疊加態(tài)
2、量子轉(zhuǎn)換使方程生效
3、執(zhí)行量子傅立葉變換
與傳統(tǒng)情況類似,在這些轉(zhuǎn)化之后,一個(gè)測(cè)量值將會(huì)產(chǎn)生一個(gè)近似方程周期的值(你可以獲得“波峰”,就像傅立葉變換中的,而準(zhǔn)確性會(huì)更高一點(diǎn))。使用量子傅立葉變換,我們能夠解決排序和因數(shù)問(wèn)題,這二者相同。量子傅立葉變換可以讓一臺(tái)量子計(jì)算機(jī)進(jìn)行相位估計(jì)(酉算子特征值的近似值)。
當(dāng)你完成量子部分(第二步)的時(shí)候,你可以檢查一下周期的有效性,然后使用另一個(gè)傳統(tǒng)的***公約數(shù)算法得到密鑰的質(zhì)因素。
有趣的是,由于這項(xiàng)技術(shù)并不是在于找到所有潛在質(zhì)因數(shù),而是找到潛在周期,你就不必嘗試很多隨機(jī)數(shù)直到找到一個(gè)成功的質(zhì)因數(shù)N。如果P是奇數(shù),那你不得不回到***步,這里
K是一個(gè)不同于N的質(zhì)因素。因此,即使你加倍密鑰長(zhǎng)度(N),尋找質(zhì)因數(shù)也不會(huì)出現(xiàn)放緩的情況。RSA是不安全的,同樣加倍密鑰長(zhǎng)度也不能幫你抵御量子計(jì)算的洶涌來(lái)襲,而保障安全。
“破解RSA-2048(2048-bit)的密鑰可能需要耗費(fèi)傳統(tǒng)電腦10億年的時(shí)間,而量子計(jì)算機(jī)只需要100秒就可以完成。”
——Dr. Krysta Svore, 微軟研究院
量子傅立葉變換被用于建立量子線路,使得秀爾算法的物理實(shí)現(xiàn)成了量子計(jì)算機(jī)最為輕松的任務(wù)之一。
量子傅立葉變換:青出于藍(lán)
秀爾算法的核心是發(fā)現(xiàn)順序,這樣便可以減少阿貝爾的隱子群?jiǎn)栴},使用量子傅立葉變換便可以解決。——NIST 量子世界
量子傅立葉變換是許多量子算法的關(guān)鍵所在。它并不加速尋找傳統(tǒng)傅立葉轉(zhuǎn)變,但是能夠在一個(gè)量子振幅內(nèi)執(zhí)行一個(gè)傅立葉變換。在一臺(tái)量子計(jì)算機(jī)上可以指數(shù)增長(zhǎng)般快速處理量子傅立葉變換。雖然超過(guò)了直接映射經(jīng)典傅立葉變換的范疇,量子計(jì)算機(jī)也可以做其他的事。例如,解決隱子群?jiǎn)栴}(也就是解決離散對(duì)數(shù)問(wèn)題),或是計(jì)數(shù)問(wèn)題(解決了這個(gè)問(wèn)題就可以解決現(xiàn)代密碼學(xué)中很多其他形式的密碼)。更重要的是,量子傅立葉變換可以應(yīng)用到機(jī)器學(xué)習(xí)、化學(xué)、材料科學(xué)或者模擬量子系統(tǒng)。
秀爾算法中只有一個(gè)步驟是需要在量子計(jì)算機(jī)上完成的,其他的都可以在普通的超級(jí)計(jì)算機(jī)上完成。量子計(jì)算機(jī)運(yùn)行完子程序后就會(huì)將結(jié)果返回給超級(jí)計(jì)算機(jī)讓它繼續(xù)完成計(jì)算過(guò)程。量子計(jì)算機(jī)可能永遠(yuǎn)不會(huì)是單獨(dú)存在的,而是一直和超級(jí)計(jì)算機(jī)配合執(zhí)行任務(wù),經(jīng)過(guò)這樣的配合它們就可以破解RSA密鑰。
因?yàn)槠邢?,很多?shù)學(xué)細(xì)節(jié)和證明過(guò)程就不再贅述了,如果你對(duì)這些數(shù)學(xué)解釋感興趣,如果你具備線性代數(shù)、群論、高等數(shù)學(xué)的知識(shí),你可以看看這些:
Quantum Computer Science
Quantum Information and Quantum Computation
NIST Quantum Zoo — 一個(gè)所有量子算法的列表