我現在所知道的 HTTPS


什麼是 HTTP ? 為什麼需要它 ?

在討論 HTTPS 之前,我們先簡單且快速地講一下什麼是 HTTP 。

HTTP 是一種協定,簡單的說是一種大家說好的書寫格式,這樣大家才可以用同樣的方式取得資訊。

想像一下,如果今天寄信沒有固定的格式,比如說直式信封右邊寫收信人、左邊寫寄信人。

那送信的這個機制效率就會很差。

電腦網路也是一樣,在浩瀚無垠的網路中,如果沒有一種共同的溝通方式,那使用起來就不會這麼有效率。

那什麼又是 HTTPS ? 為什麼需要它 ?

那為什麼我們又要多個 HTTPS ?

因為網路上,任何人只要有技術就可以知道輕易地看到上面流通的資訊。

但有時候,我們會利用 HTTP 協定,帶上一些資訊,但這些資訊我們又不想讓其他人知道。

這時候我們就要想其他方法來解決這件事。

HTTPS並不是一個新的協定,它是運用 SSL/TLS 軟體加密所建立起來的安全連線。

那兩個不認識的人怎麼加密解密?

想像一個情況,如果 Andy 要送一個有鎖的寶箱給 Amy 。

但 Amy 要怎麼打開?

這還不簡單,Andy 再送寶箱之前送鑰匙給 Amy 不就好了?

不行!

這樣鑰匙會被偷走,只要再偷走寶箱就 GG 斯咪搭了。

那只好在送鑰匙箱子的時候給它加鎖(誤)

這樣會陷入一個無限迴圈

所以就要談到加密方式,這裡不會談到太多的細節,因為這是一個很深主題。

常見的加解密的方式有下列兩種

對稱式加密

就像一般的鎖跟鑰匙,只有特定鑰匙可以鎖上這個鎖,也只有這個鑰匙可以解開鎖。

這個就是上面的例子,顯然無法解決我們的問題。

非對稱式加密

我們會有兩個鑰匙,一個叫做 public key, 一個叫做 private key 。

public key 可以對一個東西加密,但只有 private key 可以打開;同理,如果有一個東西被 private key 加密,那只有 public key 可以解密。

就如同這兩個 key 的名稱,你要確保的是你要保護好你的 private key

你有沒有發現,這個工具似乎可以解決我們的問題?

比如說,Amy 可先把 public key 透過網路傳送給 Andy ,然後跟 Andy 說你把你要送給我的東西用這個 public key 加密後再送過來。

Amy 收到後再用 private key 解密就好了。哇~非對稱式加密萬歲(跪)

但…現實世界真的有這麼簡單嗎?

說了這麼多,HTTPS 到底是怎麼運作的啊?

我們來講一下現實世界的 HTTPS 簡略的流程(假設你要訪問 youtube)

  1. 前往 Youtube
  2. Youtube 回傳數位憑證
  3. 瀏覽器收到數位憑證並解密,取得 Youtube 的 Public Key
  4. 瀏覽器建立 session key (對稱加密的 key),使用 Youtube’s public key 加密 session key 並回傳。
  5. Youtube 收到後用 private key 解密得到 session key 。使用 session key 加密資料,開始傳送。
  6. 與 Youtube 建立安全的連線(看影片囉)

等等,怎麼搞的這麼麻煩,數位憑證又是什麼?

非對稱加密不是已經能解決我們的問題了嗎?為什麼我們還需要數位憑證?

我們一起來回想 Andy 跟 Amy 的問題

今天有一個人 Lester 知道 Andy 想要送貴重品給 Amy,也知道大家都是用非對稱加密的方式進行溝通。

於是 Lester 在 Amy 之前就先把一個 public key 寄給 Andy,Andy 不疑有他,直接一連串操作,直接寄回給 Lester 。 Lester 直接發大財(誤)

為了解決這個問題,於是我們又引進了 Certificate Authority 來解決這個問題。

再度回到 Andy, Amy, Lester 的例子。

現在 Lester 宇宙裡面又多了一個 CA ,Lester 宇宙內人人都會有 CA 的 public Key。而且大家都相信 CA 。

讓我們來看看,事情會怎麼發展吧。

一如往常,Andy 還是想送東西給 Amy ,這時候 Amy 需要先拿著他的 public key 去 CA 做申請,CA 認證這個 public key 是 Amy 所擁有的。於是用 CA 的 private key 將 Amy’s public key 加密,並將結果給 Amy (這就是數位憑證)

Amy 就把這個數位憑證傳給 Andy ,Andy 因為有 CA 的 public key ,於是他就嘗試解密,發現解密成功。因為在這個宇宙內大家都相信 CA 所以 Andy 就確信,這個是真的 Amy 傳的資料。於是又一連串的操作,寄東西給 Amy 。

大家就過著幸福快樂的日子(?)

小結

也許有人會有疑問,為什麼我們的電腦可以直接去解密數位憑證?

那是因為,現在大部分的裝置在出廠的時候,都會內建許多 CA 大廠的 public key 。

當然現實中在瀏覽器端驗證數位憑證沒有如上方講得這麼簡單。

想看更多資料可以看看這裏

以上就是今天 HTTPS 的工作流程啦。如果有錯誤的地方再煩請提出指教囉。

參考資料

超級文字傳輸安全協定 - 維基百科,自由的百科全書

How does HTTPS work? What’s a CA? What’s a self-signed Certificate? - YouTube

HTTP  HTTPS 

comments powered by Disqus