網路安全

公開金鑰密碼學(public-key cryptography)

想像一個特別的信箱,配有兩把不同的鑰匙。一把鑰匙只能上鎖(你把複本發給任何人——印在名片上),第二把鑰匙只能解鎖(你永遠保密地留著它)。現在世界上任何人都能用那把公開的上鎖鑰匙寄給你一則封好的訊息,但只有握有私下解鎖鑰匙的你才能打開它。這兩把鑰匙在數學上配對,但你無法從公開的那把推算出私下的那把。這就是公開金鑰(非對稱)密碼學背後那個既驚人又強大的想法。

每一方都有一對金鑰:一把公開分享的公鑰,與一把保密的私鑰。這對金鑰有兩種用法。為了機密性:任何人用你的公鑰加密,只有你的私鑰能解密——於是你能在從未先分享過秘密的情況下收到秘密。為了鑑別:你用私鑰加密(簽署),任何人都能用你的公鑰驗證——證明訊息來自你,因為只有你握有私鑰。最關鍵的是,這解決了金鑰分送問題:兩個陌生人能在開放通道上建立起一把共享秘密(像 Diffie-Hellman 這樣的金鑰交換),而竊聽者學不到它。

為什麼重要,附上一個誠實的提醒:公開金鑰密碼學讓素未謀面的陌生人能在網際網路上安全通訊、而不必事先約定金鑰——它支撐著 TLS、數位簽章與憑證。難處在於它很慢——遠比對稱加密慢——所以幾乎從不用來加密大量資料。它反而是短暫地用來協商出一把快速的對稱金鑰,之後就由對稱加密接手。還有一個更深的難處:公鑰只是一個數字,那你怎麼知道某把公鑰真的屬於你的銀行而非冒充者?回答這個問題,正是憑證與憑證授權單位的工作。

一個網站在憑證裡公布它的公鑰。你的瀏覽器用它(透過金鑰交換)協商出一把竊聽者算不出來的新鮮對稱金鑰,接著雙方在這段連線剩下的部分切換到快速的 AES。兩個陌生人、沒有事先共享的秘密——這就是公開金鑰帶來的回報。

兩把配對的金鑰解決了金鑰分送——但很慢。

光有一把公鑰,並無法證明它屬於誰。若沒有把金鑰綁到身分的方法(一張憑證),攻擊者可以一邊把自己的公鑰交給你、一邊宣稱自己是你的銀行——這就是 PKI 存在的原因。

又称
asymmetric cryptographyasymmetric encryption公開金鑰密碼學非對稱加密