導航:首頁 > 文檔加密 > 公鑰加密體制中的演算法

公鑰加密體制中的演算法

發布時間:2025-01-17 15:23:45

A. 橢圓加密演算法公鑰密碼系統的加密演算法ECC與RSA的對比

在第六屆國際密碼學會議上,針對公鑰密碼系統的加密演算法,推薦了兩種主要方法:RSA和ECC。RSA演算法基於大整數因子分解問題(IFP),其數學原理相對直觀,易於工程實踐。然而,它的安全性稍遜一籌,特別是面對國際上廣泛應用的NFS攻擊法,破譯復雜度為亞指數級,這意味著需要較長的密鑰才能保證同等安全強度。


相比之下,ECC演算法依賴於橢圓曲線上離散對數計算問題(ECDLP),其理論基礎深奧,實施起來較為復雜。盡管如此,ECC的單位安全強度相對較高。針對ECC的最有效攻擊手段Pollard rho方法,其破解難度達到指數級,這使得ECC在保證安全性的前提下,所需的密鑰長度遠小於RSA(參見表1和圖1)。


正是這種不同,使得ECC在提升安全強度時,無需過多增加密鑰長度,從而有效解決了增加密鑰長度可能帶來的工程實現挑戰。因此,ECC在保持安全性和實際應用性之間找到了一個理想的平衡點。
(1)公鑰加密體制中的演算法擴展閱讀

橢圓加密演算法(ECC)是一種公鑰加密體制,最初由Koblitz和Miller兩人於1985年提出,其數學基礎是利用橢圓曲線上的有理點構成Abel加法群上橢圓離散對數的計算困難性。

B. 公開密鑰密碼體制的典型演算法是什麼

公開密鑰密碼體制是現代密碼學中最受歡迎的密碼機制之一。其核心思想是在公開和私人密鑰的幫助下保護數據的機密性和完整性。 公開密鑰密碼體制的典型演算法就是RSA演算法。
RSA演算法是一種最常見的非對稱密碼演算法,其基於非常復雜的數學問題,因此被認為是一種安全可靠的加密機制。該演算法需要兩個密鑰:公鑰和私鑰。公鑰用於加密數據,私鑰用於解密數據。其加密過程如下:
1. 選擇兩個足夠大的質數p和q,並將它們相乘產生一個大的正整數n。n即為密鑰長度。
2. 根據p和q計算出n的歐拉函數總值,即φ(n) = (p-1) * (q-1)。
3. 在φ(n)內隨機選擇一個較小的整數e,使得e和φ(n)互質。
4. 計算e的模反元素d,使得(e * d) mod φ(n) =1。d即為私鑰。
5. 公鑰為(n,e),私鑰為(d)。
6. 對於任何消息M,計算它的整數表示m。
7. 將m加密為一個整數c,公式為c = m^e mod n。
8. 對於解密過程,使用私鑰d,將加密得到的c對應到明文m。
目前,RSA演算法已被廣泛應用於金融、電子商務、數學學科和科學研究等領域。 另外,隨著計算機性能的提高、量子計算機的發展,RSA演算法在未來的密碼學應用中仍然有很大的潛力和發展前景。

C. RSA的公鑰和私鑰到底哪個才是用來加密和哪個用來解密

我們來回顧一下RSA的加密演算法。我們從公鑰加密演算法和簽名演算法的定義出發,用比較規范的語言來描述這一演算法。
RSA公鑰加密體制包含如下3個演算法:KeyGen(密鑰生成演算法),Encrypt(加密演算法)以及Decrypt(解密演算法)。
(PK, SK)\leftarrow KeyGen(\lambda)。密鑰生成演算法以安全常數\lambda作為輸入,輸出一個公鑰PK,和一個私鑰SK。安全常數用於確定這個加密演算法的安全性有多高,一般以加密演算法使用的質數p的大小有關。\lambda越大,質數p一般越大,保證體制有更高的安全性。在RSA中,密鑰生成演算法如下:演算法首先隨機產生兩個不同大質數p和q,計算N=pq。隨後,演算法計算歐拉函數\varphi(N)=(p-1)(q-1)。接下來,演算法隨機選擇一個小於\varphi(N)的整數e,並計算e關於\varphi(N)的模反元素d。最後,公鑰為PK=(N, e),私鑰為SK=(N, d)。
CT \leftarrow Encrypt(PK,M)。加密演算法以公鑰PK和待加密的消息M作為輸入,輸出密文CT。在RSA中,加密演算法如下:演算法直接輸出密文為CT=M^e \mod \varphi(N)
M \leftarrow Decrypt(SK,CT)。解密演算法以私鑰SK和密文CT作為輸入,輸出消息M。在RSA中,解密演算法如下:演算法直接輸出明文為M=CT^d \mod \varphi(N)。由於e和d在\varphi(N)下互逆,因此我們有:CT^d=M^{ed}=M\mod \varphi(N)
所以,從演算法描述中我們也可以看出:公鑰用於對數據進行加密,私鑰用於對數據進行解密。當然了,這個也可以很直觀的理解:公鑰就是公開的密鑰,其公開了大家才能用它來加密數據。私鑰是私有的密鑰,誰有這個密鑰才能夠解密密文。否則大家都能看到私鑰,就都能解密,那不就亂套了。

=================分割線=================
我們再來回顧一下RSA簽名體制。簽名體制同樣包含3個演算法:KeyGen(密鑰生成演算法),Sign(簽名演算法),Verify(驗證演算法)。
(PK,SK) \leftarrow KeyGen(\lambda)。密鑰生成演算法同樣以安全常數\lambda作為輸入,輸出一個公鑰PK和一個私鑰SK。在RSA簽名中,密鑰生成演算法與加密演算法完全相同。
\sigma \leftarrow Sign(SK,M)。簽名演算法以私鑰SK和待簽名的消息M作為輸入,輸出簽名\sigma。在RSA簽名中,簽名演算法直接輸出簽名為\sigma = M^d \mod \varphi(N)。注意,簽名演算法和RSA加密體制中的解密演算法非常像。
b \leftarrow Verify(PK,\sigma,M)。驗證演算法以公鑰PK,簽名\sigma以及消息M作為輸入,輸出一個比特值b。b=1意味著驗證通過。b=0意味著驗證不通過。在RSA簽名中,驗證演算法首先計算M'=\sigma^e \mod \varphi(N),隨後對比M'與M,如果相等,則輸出b=1,否則輸出b=0。注意:驗證演算法和RSA加密體制中的加密演算法非常像。
所以,在簽名演算法中,私鑰用於對數據進行簽名,公鑰用於對簽名進行驗證。這也可以直觀地進行理解:對一個文件簽名,當然要用私鑰,因為我們希望只有自己才能完成簽字。驗證過程當然希望所有人都能夠執行,大家看到簽名都能通過驗證證明確實是我自己簽的。

=================分割線=================
那麼,為什麼題主問這么一個問題呢?我們可以看到,RSA的加密/驗證,解密/簽字過程太像了。同時,RSA體制本身就是對稱的:如果我們反過來把e看成私鑰,d看成公鑰,這個體制也能很好的執行。我想正是由於這個原因,題主在學習RSA體制的時候才會出現這種混亂。那麼解決方法是什麼呢?建議題主可以學習一下其他的公鑰加密體制以及簽名體制。其他的體制是沒有這種對稱性質的。舉例來說,公鑰加密體制的話可以看一看ElGamal加密,以及更安全的Cramer-Shoup加密。簽名體制的話可以進一步看看ElGamal簽名,甚至是BLS簽名,這些體制可能能夠幫助題主更好的弄清加密和簽名之間的區別和潛在的聯系。
至於題主問的加密和簽名是怎麼結合的。這種體制叫做簽密方案(SignCrypt),RSA中,這種簽密方案看起來特別特別像,很容易引起混亂。在此我不太想詳細介紹RSA中的加密與簽字結合的方案。我想提醒題主的是,加密與簽字結合時,兩套公私鑰是不同的。

閱讀全文

與公鑰加密體制中的演算法相關的資料

熱點內容
isp演算法處理 瀏覽:52
app帳戶在哪裡找 瀏覽:420
哪裡可以下載黃頁app 瀏覽:235
app加密視頻怎麼導出 瀏覽:593
智慧鎖app驗證碼怎麼來的 瀏覽:176
pdf文檔怎麼簽名 瀏覽:929
騰訊雲伺服器存在違規行為 瀏覽:655
魅族手機解壓縮 瀏覽:66
方舟編譯設置後台優化 瀏覽:272
浦發銀行app有什麼優點 瀏覽:968
緩解壓力放鬆心情的辦法是吵架 瀏覽:780
pythonmap使用方法 瀏覽:784
旅行世界app叫什麼 瀏覽:923
加密篦子怎麼製造視頻 瀏覽:905
電腦主伺服器未運行怎麼解決 瀏覽:330
js超級瑪麗源碼 瀏覽:310
雲鏡下載什麼格式app 瀏覽:767
iosAndroidjava 瀏覽:402
外賣員轉型做程序員 瀏覽:927
看房用什麼app准 瀏覽:157