易混淆對照

Public Key 跟 Private Key 差在哪?公鑰給人,私鑰保命

非對稱加密使用一對金鑰。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
把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

為什麼公鑰公開沒關係?
因為公鑰只能做加密與驗證,做不了解密與簽名。別人拿到公鑰,最多只能加密一份只有你解得開的資料,或者驗證某個簽名確實出自你的私鑰。前提是公鑰必須跟你的私鑰成對。
私鑰不小心外洩了怎麼辦?
立刻撤銷並重新產生金鑰對,然後把所有用到舊公鑰的地方換掉。私鑰一旦外洩,任何人都可冒充你、竊取資料、解密資料,沒有中間地帶。
怎麼確認拿到的公鑰是正確的?
比較指紋。用工具算出公鑰的 SHA256 指紋,跟對方公告的指紋逐字比對,一致才代表沒有被竄改或掉包。