公鑰密碼體系又稱為非對稱密碼,即加密和解密演算法使用不同的金鑰:乙個是公鑰pu、乙個是私鑰pr。公鑰密碼學的應用場景有:
rsa依賴數論中的一些知識:
\[a*b=1(\bmod n)
\]\[a^=a(\bmod n)
\]其中計算乘法逆元時的歐幾里得演算法在計算上是容易的,通常將a對n取模的逆元寫成:
\[b=a^(\bmod n)
\]此外,根據尤拉定理,還可進一步得到推論:對於正整數\(a, n, k,\phi(n)\)為n的尤拉函式,有:
\[a^=a(\bmod n)
\]這一推論可用於rsa加密和解密過程。
rsa演算法是基於大素數分解難題,即已知兩個大素數p,q,求其乘積n=p*q是容易的,而已知n求其素因子p,q是困難的。基於此,rsa演算法按如下過程生成私鑰和公鑰:
最終生成公鑰pu=,私鑰pr=。
加密和解密的場景為:對於明文\(m\),bob使用alice的公鑰加密訊息發往alice;alice根據自己的私鑰解密訊息,得到明文。rsa中的過程如下:
由於\(d = e^ (\bmod \phi(n))\),則必有\(d*e=k*\phi(n)+1\),\(k\)為正整數。則根據之前的推論,有:
\[c'=m^(\bmod n)=m^=m(\bmod n)
\]至此密文被解密為原來的明文\(m\)。值得一提的是,實際中的明文通常為字串,在應用rsa演算法時,需要將字串對映為整數。
攻擊者想得到明文,則必須得到私鑰d,這等價於求得\(\phi(n)\),無異於想分解n為兩個大素數這一大素數分解難題。
簽名的場景為傳送方alice使用私鑰做簽名,附帶著訊息原文m傳送。所有的接收者都可以使用alice公開的公鑰對簽名進行驗證。
alice生成簽名的過程如下:
接受者bob收到訊息後的簽名驗證過程如下:
上面的簽名過程,事實上解決了傳送方否認問題和訊息完整性兩個問題:
簽名傳送過程中\(s=h^d(\bmod n)\)和\(h\)是公開的,攻擊者如果想獲取私鑰\(d\),則必須解開離散對數難題,這在數學上是困難的。
rsa簽名仍然不能解決傳送方身份可信問題,因為公鑰的**是沒有保障的,這就需要引入ca證書機制。因為和rsa演算法本身無關,這裡就不再贅述。
公鑰密碼學
相比1976年以前的密碼學思想,公鑰密碼學可以在不直接傳遞金鑰的情況下,完成密文的解密。這個演算法機制啟發了其他科學家,人們認識到,加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關係即可,這樣就避免了直接傳遞金鑰。基於這種公鑰機制的思想,開始出現了一系列非對稱加密演算法。下圖比較說明了...
密碼學之公鑰密碼演算法
公鑰密碼演算法在加密和解密中使用一對不同的金鑰,其中乙個金鑰公開,稱為公鑰,寧乙個金鑰保密,稱為私鑰,且由公鑰求解私鑰計算是不可行的的。顧名思義,公鑰是公開的。是迄今為止理論上最為成熟完善的公鑰密碼體制。也是目前廣泛應用的公鑰密碼體制。rsa的基礎是數論的尤拉定理,他的安全性依賴於大整數因子分解的困...
公鑰與私鑰,公鑰密碼學
數字簽名是什麼?翻譯 阮一峰 原文 1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。2.鮑勃把公鑰送給他的朋友們 帕蒂 道格 蘇珊 每人一把。3.蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達到保密的效果。4.鮑勃收信後,用私鑰解密,就看到了信件內容。這裡要強調的是,只要鮑勃的私鑰不洩...