Symmetric encryption and asymmetric encryption

對稱加密與非對稱加密

對稱加密 vs 非對稱加密

「對稱加密」就是通訊雙方進行加密與解密使用相同的金鑰,但除了雙方都要保守金鑰外,怎麼讓雙方都持有相同的金鑰本身就是個問題,存在被劫持的風險(中間人攻擊)。

「非對稱加密」透過一對金鑰(Key Pair),也就是公鑰與私鑰來解決對稱加密會遇到的問題。

假設 A 要與 B 通訊 > 則 A 只需使用 B 的公鑰對資訊進行加密 > 最終 B 使用私鑰對資訊進行解密。當中奇妙的地方在於:

  • 發送的加密訊息不會被洩漏
  • A 與 B 保管好自己的私鑰無需分享
  • 就算 A 的私鑰被竊取,只有發送給 A 的加密訊息會被洩漏

想像信箱,任何人都可以投遞但只有信箱的主人才能打開,公鑰和私鑰的概念本質上是一個「上鎖與開鎖鑰匙是不同的鎖」的構造。

在數位世界中透過單向函式🔗從隨機生成的私鑰計算公鑰很容易,但從公鑰反推私鑰在計算上幾乎不可能。

結合兩者優勢

  • 非對稱加密負責解決「金鑰分發問題」:如何安全地讓通訊雙方共享金鑰
  • 對稱加密負責解決「效能問題」:如何快速加解密大量資料

巧妙地結合了兩種加密方式的優點,同時迴避了各自的缺點,舉例:

  • TLS🔗 握手階段
    • 瀏覽器向伺服器索取 SSL 憑證,獲得伺服器的公鑰
    • 雙方協商加密演算法
    • 瀏覽器生成隨機的會話金鑰
    • 用伺服器公鑰加密會話金鑰並傳送
    • 伺服器用私鑰解密,雙方確認握手完成
  • 資料傳輸階段
    • 所有網頁內容、圖片、影片都用會話金鑰(AES)快速加密
    • 每次重新連線都會產生新的會話金鑰

延伸閱讀