名詞解釋
什麼是公開金鑰密碼學——用公鑰與私鑰這對金鑰進行加密與簽章
公開金鑰密碼學使用一對公鑰與私鑰:公鑰負責加密與驗證簽章,私鑰負責解密與簽章。本文說明它如何支撐 TLS(HTTPS)、數位簽章與 passkey,以及實務上的防禦:別自製密碼、保護好私鑰。
「公鑰」與「私鑰」到處都會出現——TLS(HTTPS)、數位簽章、passkey。這裡不談攻擊手法,只談公開金鑰密碼學的觀念,以及值得掌握的實務防禦要點。
公鑰與私鑰的角色
金鑰成對出現,角色卻剛好相反——這正是整件事的重點。
它被用在哪裡
加密(私密的往來)
- 用對方的公鑰加密
- 只有握有對應私鑰的人能解密
- 在 TLS 中,用來安全地共享一把對稱金鑰
數位簽章(證明真實性)
- 傳送方以自己的私鑰簽章
- 接收方以公鑰驗證——確認身分+完整性
- 用於 TLS 憑證、軟體散布、passkey 認證
真正的 TLS(HTTPS) 是混合式的:先用公開金鑰密碼學安全地共享一把對稱金鑰,之後再由速度快的對稱式密碼保護其餘內容。Passkey 則以裝置內保管的私鑰簽章,並以伺服器的公鑰驗證——這是抗釣魚的認證。
要做對的地方
別自製密碼
即使理論正確,也會敗在實作細節上——亂數品質、填補、時間差。請使用標準協定與久經考驗的函式庫;避免自訂實作。
保護好私鑰
別把私鑰放進程式碼或版本庫。將它隔離在金鑰保管庫/機密管理工具中,並讓運作方式支援在外洩時撤銷並重新簽發(輪替)(→ 別把機密放進公開目錄)。
讓金鑰長度與演算法保持最新
建議會隨時間改變。別讓舊的金鑰長度或已淘汰的演算法留著不管。請用 Let's Encrypt 之類的工具自動續期憑證。
本站觀點:使用者的工作是金鑰管理
公開金鑰密碼學本身很強——通常沒必要特地去破解它。現實中的事故不在於數學,而在於**私鑰放在哪裡、能不能撤銷它、以及留著不管的過時設定。**本站把私鑰隔離在公開面之外,一旦懷疑外洩就以「已被讀取」為前提立即輪替。別自製密碼、順著標準走——這才是最安全的捷徑。
接下來閱讀
- 術語:什麼是 OpenSSL(TLS 的實作) · 什麼是 passkey · 什麼是 Let's Encrypt
- 實務:別把機密放進公開目錄 · 從零開始保護機密
- 歷史:資安的歷史(年表)
FAQ
Q公開金鑰密碼學與對稱式(共用金鑰)密碼學有何不同?
對稱式密碼學用同一把金鑰加密與解密——速度快,但你必須把那把金鑰安全地交給對方。公開金鑰密碼學使用公鑰與私鑰這對金鑰,而公鑰可以交給任何人。實務上 TLS(HTTPS)是混合式的:先用公開金鑰密碼學安全地共享一把對稱金鑰,之後大量的資料再交給速度快的對稱式密碼保護。
Q數位簽章是如何證明某物為真的?
傳送方用自己的私鑰對資料做出簽章,接收方再用傳送方的公鑰驗證它。因為只有持有者握有私鑰,驗證通過就代表「這把公鑰的持有者簽了它,而且內容未遭竄改」。TLS 憑證與軟體散布的真實性,都倚賴這套簽章機制。
Q我可以自己實作密碼演算法嗎?
請避免。即使理論正確,密碼也會敗在實作的細節上——亂數品質不足、填補(padding)、時間差。原則是「別自製;使用久經考驗的函式庫與標準協定」。請設計好金鑰如何產生、保管與撤銷(輪替),並讓金鑰長度與演算法追隨最新建議。