由頭開始
最初,所有加密都是以對稱密碼匙加密(Symmetric Key Encryption) 的形式進行加密。
但是,我們很快便會遇到一個問題:我們怎樣確保所使用的密碼匙是安全的? 這個問題演變成「密碼匙交換問題 Key Exchange Problem」。
要解決這個問題有很多方法,其中一個方法便是改用非對稱密碼匙加密 Asymmetric Key Encryption。要對伺服器進行安全的通訊,我們便使用伺服器的公開密碼匙 Public Key 進行加密,然後伺服器用自己的私人密碼匙 Private Key 進行解密便可以了。
但是,使用了 Asymmetric Key Encryption 之後卻有新的問題:
我們怎樣確保獲得的 Public Key 真的是來自伺服器的?
為甚麼這個問題很嚴重?
試想像你正與一個伺服器進行溝通,以完成一項網上交易。
但是,一名黑客建立了一對密碼匙,把其中一條匙公開,並宣稱是伺服器的 Public Key。你把信用卡的資料使用這條 Public Key 進行加密,並以為是會傳輸給伺服器,其實這項資訊會被黑客偷取。黑客為了不被發現,或會把你的資訊重新以正確的密碼匙加密,並傳輸給伺服器,使交易成功。
這是一個典型「中間人攻擊 Man-in-the-middle Attack」。
如何解決這個問題?
公開密碼匙基礎建設 Public Key Infrastructure (PKI)的主要負任是確保 Public Key 的真確性 Authenticity 及 Public Key 持有人的身份 Identity。
你可以理解 PKI 成 Public Key 的入境處。入境處會根據你的身份,認證你是一名香港居民,向你簽發一張身份證。這張身份證上有防偽特徵,證明它的真確性,而你持有這張身份證則證明你的身份。
同樣,PKI 會對 Public Key 及其持有人進行認證。如果 PKI 接納申請,便會按 Public Key 的內容簽發數碼證書 Digital Certificate。
這樣,在與伺服器溝通之前,我們只要先查看伺服器的 Digital Certificate,便能認證伺服器的身份,大大減低了 Man-in-the-middle Attack 的可能性。
PKI 的應用
由於使 Public Key 更為可靠,這令 Asymmetric Key Encryption 有更廣泛的應用,例如——
- 保安插口層 Secure Socket Layer / 傳輸層安全性協定 Transport Layer Security
- 透過 SSH 協定遙距登入 Remote Login
- Bitcoin / 區塊鏈 Blockchain
- 電郵加密
- 數碼簽署 Data Signautre
鐘意篇文嘅話,麻煩係下面個 IG Post 上面俾個 Like ❤️ 感謝感謝