所有 SSL 文章 SSL 與憑證

公鑰密碼學:SSL 加密的實際工作原理

公鑰密碼學(也稱非對稱密碼學)是 SSL/TLS 的基礎。它使用一對數學相關的金鑰——一個公鑰、一個私鑰——來加密資料、驗證身份和建立安全連線。每個 HTTPS 連線都依賴於它。

金鑰對概念

公鑰私鑰
誰擁有所有人(包含在證書中)僅伺服器所有者
能加密
能解密僅限私鑰加密的內容僅限公鑰加密的內容
能否共享?是——這正是其目的永遠不能

核心原理:用公鑰加密的資料只能用匹配的私鑰解密。反之亦然。兩個金鑰在數學上相關聯,但無法從公鑰推匯出私鑰。

在 SSL/TLS 中的應用

公鑰密碼學在每個 HTTPS 連線中服務於三個目的:

1. 金鑰交換——建立共享金鑰

TLS 握手過程中,伺服器和瀏覽器需要協商一個用於加密流量的共享會話金鑰。它們不能以明文傳送這個金鑰——可能被截獲。

解決方案:Diffie-Hellman 金鑰交換(現代 TLS 中具體為 ECDHE)。雙方各自貢獻隨機值,數學原理使它們能計算出相同的共享金鑰而無需傳輸。伺服器的私鑰對其貢獻進行簽名,證明伺服器身份。

2. 身份認證——證明身份

伺服器的 SSL 證書包含其公鑰。證書由憑證授權機構簽名。在握手過程中,伺服器證明它持有匹配的私鑰,從而證明伺服器確實是證書所宣告的身份。

沒有這一步,任何人都可以聲稱自己是 google.com

3. 數字簽名——證明資料完整性

私鑰可以建立數字簽名——一個數學證明,表明特定資料由金鑰持有者簽名且未被修改。TLS 握手訊息被簽名以防止篡改。

對稱加密 vs 非對稱加密

非對稱(公鑰)對稱(會話金鑰)
金鑰兩個(公鑰 + 私鑰)一個(共享金鑰)
速度慢(約慢 1000 倍)
用途金鑰交換 + 認證加密實際資料
演算法RSA、ECDSA、ECDHEAES-GCM、ChaCha20
在 TLS 中僅握手階段握手後(所有流量)

HTTPS 同時使用兩者:非對稱加密用於握手(證明身份、交換金鑰),然後對稱加密用於實際資料傳輸(因為快得多)。

SSL 背後的演算法

RSA

仍在使用的最古老的公鑰演算法(1977 年)。基於大素數分解的困難性。可用於簽名和金鑰交換,但不使用 Diffie-Hellman 的 RSA 金鑰交換不提供前向保密,已從 TLS 1.3 中移除。

ECDSA(橢圓曲線數字簽名演算法)

使用橢圓曲線數學的現代簽名演算法。256 位 ECC 金鑰提供等同於 3072 位 RSA 金鑰的安全性——更小的金鑰、更快的簽名。GetHTTPS 預設使用 ECDSA P-256。

ECDHE(臨時橢圓曲線 Diffie-Hellman)

現代 TLS 中使用的金鑰交換機制。“臨時”意味著每個連線都生成新的金鑰對——提供前向保密。在 TLS 1.2 和 1.3 中均使用。

AES-GCM

握手後用於加密實際流量的對稱加密演算法。AES(高階加密標準)配合 GCM(Galois/Counter 模式)同時提供加密和認證。透過 AES-NI 指令在現代 CPU 上硬體加速。

GetHTTPS 如何使用公鑰密碼學

當你使用 GetHTTPS 時:

  1. 你的瀏覽器使用 Web Crypto API 生成一個金鑰對——與 TLS 本身使用的相同密碼學原語
  2. 公鑰放入傳送給 Let’s Encrypt 的 CSR
  3. 私鑰留在你的瀏覽器記憶體中——從不傳輸
  4. Let’s Encrypt 簽名公鑰並返回你的證書
  5. 你下載證書(公開)和私鑰到你的伺服器

私鑰僅存在於瀏覽器記憶體中,這就是為什麼 GetHTTPS 比在遠端伺服器上生成金鑰的工具更具隱私性。

常見問題

量子計算機能破解公鑰密碼學嗎?

當前的量子計算機不能。但足夠強大的量子計算機執行 Shor 演算法可以破解 RSA 和 ECC。行業正在用後量子密碼學做準備——新演算法(ML-KEM、ML-DSA)可抵抗量子攻擊。TLS 將以混合模式(經典 + 後量子)採用這些演算法,不會改變證書的工作方式。

為什麼不直接用非對稱加密處理所有資料?

速度。非對稱操作比對稱慢約 1000 倍。用 RSA 加密整個網頁是不切實際的。因此,TLS 僅在握手時使用非對稱加密(約 1ms),然後切換到對稱加密(AES)處理資料——以硬體速度執行。

256 位 ECC 金鑰真的足夠安全嗎?

256 位 ECC 提供約 128 位安全性——意味著攻擊者需要大約 2^128 次操作才能破解。這比可觀測宇宙中的原子數還多。在可預見的未來(不考慮量子計算機,那需要完全不同的演算法)是安全的。

加密和簽名有什麼區別?

加密: 保護機密性。用接收方的公鑰加密 → 只有其私鑰能解密。 簽名: 證明真實性。用你的私鑰簽名 → 任何擁有你公鑰的人都可以驗證它來自你且未被修改。TLS 證書使用簽名;TLS 資料傳輸使用加密。

相關文章

SSL 與憑證 2026-05-07
SSL/TLS 如何工作:TLS 握手詳解
TLS 握手的視覺化解析——瀏覽器和伺服器如何在毫秒內建立加密連線。涵蓋 TLS 1.2、TLS 1.3、會話恢復和前向保密。
SSL 與憑證 2026-05-07
ECC 與 RSA 證書:該如何選擇?
對比 ECC(ECDSA P-256)和 RSA(2048/4096 位)證書。ECC 金鑰更小、更快。瞭解為什麼 GetHTTPS 預設使用 ECC,以及何時 RSA 仍有意義。
SSL 與憑證 2026-05-08
什麼是 SSL 證書?
SSL 證書是一個數字檔案,用於驗證網站身份並啟用加密 HTTPS 連線。瞭解證書包含什麼、如何工作、如何免費獲取,以及為什麼每個站點都需要。
SSL 與憑證 2026-05-07
什麼是 CSR(證書籤名請求)?
CSR 是傳送給憑證授權機構以申請 SSL 證書的訊息。瞭解 CSR 包含什麼、如何生成,以及為什麼 GetHTTPS 會自動處理它。
在瀏覽器中取得免費 SSL 憑證
無需安裝,無需帳號。私鑰始終留在你的裝置上。
取得憑證