公鑰加密
安全密鑰分發由公鑰密碼系統解決,因為它不需要您和室友之間進行安全的初始密鑰協商。
公鑰密碼系統也稱為非對稱密鑰加密 - 與對稱密鑰相反 - 使用一對密鑰(兩個獨立的密鑰):用於加密的公鑰和用於解密的私鑰(也稱為秘鑰)。由公鑰無法推導出私鑰。
我們可以將非對稱密鑰密碼系統與電子郵件帳戶進行類比。任何人可以訪問您的電子郵件地址(例如,任何人都可以通過[email protected]向您發送電子郵件),但您是唯一擁有登錄密碼的人(這意味著只有您可以閱讀電子郵件的內容)。公鑰是您的電子郵件地址,私鑰是與您的電子郵件地址登錄的密碼。
它是如何運作的:
第1步:創建一對私鑰 - 公鑰(稍後我們將討論生成密鑰對)。
第2步:與朋友分享您的公鑰。
第3步:發件人使用您的公鑰加密明文(原始郵件+加密=密文)。
第4步:發件人向您發送密文。
第5步:使用您的私鑰解密密文(密文+解密=原始消息)。
優點:增加了便利性和安全性。
缺點:加密速度慢。所有公鑰 - 私鑰都容易受到暴力攻擊(這可以通過選擇加大密鑰大小來避免)。您無法驗證合作伙伴的身份(易受冒充)。
用法:由於增長密鑰大小會產生過大的加密消息輸出,因此加密和傳輸消息需要更長的時間。出於實踐目的,公共密鑰優先用於短消息加密,例如發送私鑰或數字證書,而不是加密長消息。不方便的是,較短的密鑰長度提供較低的安全性,但是在加密消息長度或傳輸時間方面,您是贏家。因此,密鑰應經常更換。
RSA
RSA是以Rivest,Shamir和Adleman3人的首字母命名,是使用前一段中描述的Diffie-Hellman(密鑰交換算法)方法,是公鑰密碼系統的下一步。該算法基於大整數難以分解的事實。
我會在我假設你喜歡數學之前逐步解釋RSA算法:)
首先你應該知道mod(模運算)和互質整數。
歐拉定理(Euler’s theorem):
其中phi(z)是歐拉函數( Euler's totient function),z是正整數。
簡而言之,歐拉函數將與z互質的個數記為phi(z)。如果z是素數,那麼phi(z)= z-1(*)。
例子:
讓我們繼續歐拉定理:
使用數學歸納法我們可以證明:
這意味著數字x的指數冪為phi(z)+1時,結果是返回自身。
從(*)方程和歐拉定理,我們得到
到目前為止,我們對RSA一無所知。現在是時候把所有這些方程聯繫起來了。
我們假設兩個素數p,q。用p * q替換z。
從等式(**)與K = 1和等式(***)我們得到:
這意味著只有當我們可以分解p * q數時,我們才能找到(p-1)*(q-1)+1。將x視為消息。我們可以選擇一個隨機素數E(加密密鑰),它必須是(p-1)*(q-1)的互質。然後我們計算D(解密密鑰)為:
其中D是mod的逆。
現在我們可以使用RSA算法,因為我們有公鑰(E)和私鑰(D):
如果結果密文^ E
未完待續
文章首發在微信公眾號:btc201800
知識星球ID:28018093
音頻發佈在喜馬拉雅上“區塊鏈雜談 (第2季)” http://xima.tv/Bjq4se
解讀區塊鏈白皮書 http://xima.tv/RNU1Q8
寧波格密鏈網絡科技有限公司,專注於區塊鏈上的密碼技術研發。
閱讀更多 格密鏈 的文章