淺談對稱加密與非對稱加密


作為信息安全領域的基石,數據加密算法你或多或少應該用過。可你知道數據加密分成 對稱加密 ( symmetric encryption ) 和 非對稱加密 ( asymmetric encryption ) 兩種嗎?對稱加密與非對稱加密有什么區別?各自適用於什么場景?

對稱加密

在對稱加密中,我們需要維護一個 密鑰 ( secret key )。數據加密者根據加密算法用 密鑰明文 進行加密,得到不可讀懂的 密文 。數據解密者根據加密算法,用同樣的 密鑰 對密文進行解密,得到原來的明文。

如上圖,在加密和解密的過程中,我們用到了同一個的 密鑰 ,這樣就是 對稱加密算法 中對稱一詞的由來。那么,對稱加密算法都有哪些呢?各自有什么特點呢?

  • AES ,高級加密標准,新一代加密算法標准,速度快,安全級別高;
  • DES ,數據加密標准,速度較快,適用於加密大量數據,但安全性較弱;
  • Blowfish ,使用變長密鑰,運行速度很快,非專利算法,沒有使用限制;
  • etc
安全級別 ( Security Level ) 工作因素 ( Work Factor ) 算法 ( Algorithm )
薄弱 ( Weak ) $ O(2^{40}) $ DES
傳統 ( Legacy ) $ O(2^{64}) $ RC4
基准 ( Baseline ) $ O(2^{80}) $ 3DES
標准 ( Standard ) $ O(2^{128}) $ AES-128
較高 ( High ) $ O(2^{192}) $ AES-192
超高 ( Ultra ) $ O(2^{256}) $ AES-256

根據安全性,對稱加密算法應該優先選擇 AES ,位數盡可能大,例如 AES-256

由於所有參與者共享密鑰,只要一人造成泄露便萬劫不復,這是對稱加密最大的弱點。因此,對稱加密密鑰分發、保管必須嚴格控制,以免泄露。

非對稱加密

為解決對稱加密共享密鑰引發的問題,計算機科學家發明了一種更神奇的加密方式。這種加密方式需要兩個密鑰,一個是 公鑰 ( public key )、一個是 私鑰 ( private key )。私鑰由自己保管,不能泄露;公鑰分發給任何需要與自己通訊的參與者,無須保密。

數據加密者根據加密算法,用公鑰對明文進行加密,得到不可讀懂的密文。數據解密者根據加密算法,用私鑰對密文進行解密,得到原來的明文。

由於加密環節和解密環節所用的密鑰不同,因此這種加密方式也稱為 非對稱加密 ( asymmetric encryption )。由於公鑰可以對外公開,也就不用刻意保護了。

此外,如果數據用私鑰進行加密,那么只有用公鑰才能解密。由於公鑰是公開的,這種機制一般不用於加密數據,而用於對數據進行 簽名

那么,非對稱加密有哪些典型的應用場景呢?接下來,我們以一個虛構故事展開討論:

Alice 是一位幫會大佬,手下有許多小弟, Bob 是其中一位。小弟們在外行動,定期匯報成果,接受指令。為保證通訊安全, Alice 通過非對稱加密算法,打造了一對密鑰:

Alice 小心翼翼地保管着私鑰,並把公鑰分發給 Bob 等小弟們。

數據加密

小弟 Bob 需要向 Alice 匯報工作, Alice 不希望匯報內容被第三方獲悉,包括其他小弟。這時, BobAlice 給的公鑰對匯報數據進行加密,再差人送給 AliceAlice 收到 Bob 送來的數據后,用自己手中的私鑰一解,就知道 Bob 說啥了。

由於用公鑰加密的數據只有私鑰能解,而私鑰只有 Alice 有,因此匯報內容不可能被第三方知曉。換句話講,只要私鑰不泄露,加密數據便不會被其他人獲悉。

數據簽名

AliceBob 下達行動指令,內容雖然可以公開,但 Alice 必須防止不法之徒偽造指令。

為此, Alice 先借助類似 MD5SHA 的哈希算法,為指令文本計算 摘要 。同樣的文本生成的摘要一定相同;不同的文本,哪怕只差一個字母,生成的摘要一定不同。

接着,Alice 用私鑰對摘要進行加密,並將加密結果作為 簽名 與指令一起發給 Bob

Bob 接到指令后,用公鑰對簽名進行解密,得到 Alice 生成的摘要。然后,他用同樣的算法,重新為指令文本計算摘要。如果兩個摘要吻合,便可確定指令是 Alice 下達的。

其他別有用心的第三方,或許已經掌握了摘要計算方法,但苦於缺少私鑰,也就沒有辦法偽裝成 Alice ,向 Bob 下達指令了。

這就是非對稱加密的另一個典型使用場景—— 數據簽名 ,可歸納為兩步:

  1. 用私鑰對數據進行簽名;
  2. 用公鑰對數據進行驗證;

附錄

更多 網絡編程 技術文章請訪問:Linux網絡編程,轉至 原文 可獲得最佳閱讀體驗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM