非對稱加密 (Asymmetric Encryption)
加密和解密的金鑰 (key) 是不一樣的,會有兩把 key,一把負責加密、一把負責解密。
公開/私密金鑰
=========================================
方法一:
接收者:產生兩把金鑰,一把是公開金鑰(public key),一把是私密金鑰(private key)妥善保管,將 public key 傳送給對方,要對方以這把 public key 將傳送的資料加密。
傳送者:以收到的 public key 將資料加密 Public Key(Data),開始傳送給接收者。就算有人 sniffer 也沒有解密金鑰,拿到 public key 也無法解密。
接收者:收到加密過的資料,用自已的 private key 將資料解密。Data = Private Key ( Public Key (Data))。
資料:Data
公開金鑰:Public Key
私密金鑰:Private Key
=========================================
方法二:
傳送者:產生兩把金鑰,一把是公開金鑰(public key),一把是私密金鑰(private key),將 public key 傳送給對方,然後將資料以 private key 加密後,傳送給對方。Private Key(Data) 。同時給予一個數位簽章,即 md5sum 檔案。
接收者:收到 public key 和加密過的資料,用 md5sum 來確定原始資料沒被竄改,用 public key 將之解密。Data = Public Key ( Private Key (Data))。
=========================================
HTTPS 加密機制
1. 客戶 ----(要求 https 連線)---> WebServer
2. 客戶 <---(給予 Public Key)---- WebServer
3. 客戶產生 https 連線的 Session Key,用 Public Key 加密。
4. 客戶 ----(傳送 Public Key(Session Key))---> WebServer
5. WebServer 解出 Session Key = Private Key ( Public Key (Session Key))
6. 客戶 <---(以 Session Key 加密連線)---> WebServer
在此過程中,客戶要確定 Public Key 沒有被竄改,所以 WebServer 要一併公佈 Public Key 的 fingerprint,但是這個 WebServer 到底是不是客戶真正要去的 WebServer,這時就要有第三方認證機制,也就是 CA 憑證 (Certificate Authority)。