易混淆對照
Public Key 跟 Private Key 差在哪?公鑰給人,私鑰保命
非對稱加密使用一對金鑰。Public Key(公鑰)可以公開分享,用來加密資料、驗證簽名與確認身分。Private Key(私鑰)絕對不能外洩,留在你的伺服器或本機,用來簽名、解密與證明「我是我」。規則只有兩句:用公鑰加密只有私鑰能解開,用私鑰簽名只有公鑰能驗證。
Public Key 跟 Private Key 差在哪?公鑰給人,私鑰保命
設定 Cloudflare Tunnel、串 GitHub、驗 Webhook,都會遇到一對金鑰。新手最常做錯的一件事,是把該保密的那把上傳出去。
這一篇把兩把鑰匙的分工講清楚,記住規則就不會弄反。
你將學到什麼
公鑰
可以到處公開。用來加密、驗證簽名、確認身分。放在 GitHub、Cloudflare 或對方伺服器都沒關係。
私鑰
絕對不能給任何人。留在你的伺服器或本機,用來簽名、解密、證明我是我。
一句話規則
用公鑰加密只有私鑰能解開,用私鑰簽名只有公鑰能驗證。
定義
非對稱加密的核心是一把鑰匙開一把鎖。用公鑰加密,只有私鑰能解開;用私鑰簽名,只有公鑰能驗證。
兩把金鑰必須成對產生。公鑰可以到處公開,私鑰必須留在你自己手上。
公鑰跟私鑰差在哪
| 比較項目 | Private Key 私鑰 | Public Key 公鑰 |
|---|---|---|
| 誰擁有 | 你自己,絕不外洩 | 任何人,可公開分享 |
| 主要用途 | 解密、簽名、證明身分 | 加密、驗證簽名、驗證身分 |
| 安全性 | 必須嚴格保護 | 公開沒關係 |
| 放在哪裡 | 伺服器、本機、金鑰管理服務 | GitHub、Cloudflare、對方服務 |
| 洩漏後果 | 非常嚴重,必須立即處理 | 幾乎無風險 |
| 類比 | 房卡,也就是鑰匙 | 鎖頭 |
非對稱加密怎麼運作
它處理兩件不同的事。第一件是機密性:明文資料用公鑰加密變成密文,只有持有私鑰的人能解回明文。
第二件是完整性與身分驗證:先算出資料摘要,用私鑰簽名,接收方再用對應的公鑰驗證。驗證通過就代表這份資料確實出自私鑰持有者,而且沒有被竄改。
白話比喻
用飯店保險箱來想。私鑰是保險箱的鑰匙,只有你持有,用來打開保險箱,遺失了就完蛋。
公鑰是保險箱的鎖頭。你可以把它貼在大廳告訴大家,別人用這個鎖頭鎖上東西,但只有你的鑰匙打得開。
實際用例
- Cloudflare Tunnel,在伺服器上產生金鑰對,私鑰留在伺服器,公鑰上傳到 Cloudflare。
- GitHub 的 SSH 連線與 Commit 簽名,私鑰留在本機,公鑰上傳到 GitHub 帳號。
- Webhook 驗證,服務端用私鑰簽名訊息,接收端用公鑰驗證,確保來自合法來源。
最佳實踐有四條:私鑰權限設到最小、定期備份私鑰而且離線保存、使用雲端的金鑰管理服務、定期輪替金鑰。分享出去的永遠只有公鑰,而且要確認來源。
常見誤解新手常犯的四個錯:把私鑰上傳到 GitHub 或公開儲存庫;把私鑰貼到 Cloudflare 或任何網站;以為公鑰也需要保密所以不敢分享;只用密碼或權杖,忽略金鑰驗證的安全性。記住那句總結就好,私鑰是你的鑰匙,公鑰是你的鎖頭。想比較其他授權方式,可以看 Bearer Token。
本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook。
常見問答
為什麼公鑰公開沒關係?
因為公鑰只能做加密與驗證,做不了解密與簽名。別人拿到公鑰,最多只能加密一份只有你解得開的資料,或者驗證某個簽名確實出自你的私鑰。前提是公鑰必須跟你的私鑰成對。
私鑰不小心外洩了怎麼辦?
立刻撤銷並重新產生金鑰對,然後把所有用到舊公鑰的地方換掉。私鑰一旦外洩,任何人都可冒充你、竊取資料、解密資料,沒有中間地帶。
怎麼確認拿到的公鑰是正確的?
比較指紋。用工具算出公鑰的 SHA256 指紋,跟對方公告的指紋逐字比對,一致才代表沒有被竄改或掉包。