iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
自我挑戰組

網路通訊輕鬆聊系列 第 25

理解 HTTP(三):透過 HTTP 上網安全嗎?淺談網路安全、HTTPS、中間人攻擊

聊了 HTTP 的基本概念(網站內容是怎麼被下載到電腦裡的?Method、Status Code)後,我們今天接著聊聊關於網路安全的一些小知識吧。

透過 HTTP 上網安全嗎?

你上的網站是「安全」的嗎?

現在的瀏覽器對於安全性的提醒都蠻完善了,拿 Chrome 來說,當你瀏覽某個網站時,可以看看網址列是否有提醒你此網站是否安全。

鳥哥的 Linux 私房菜
*鳥哥的 Linux 私房菜

例如鳥哥的 Linux 私房菜,目前用瀏覽器查看的話,會提醒你這是個「不安全」的網站(但還是相當推這個學習資源),在此網站輸入較為機密的訊息,如密碼、信用卡號等等可能會有洩漏的風險。

這邊的「安不安全」代表在資料傳輸的過程中安不安全,是否可能被中間人擷取訊息,並不代表這個網站的伺服器安全性是否夠高。

MITM 中間人攻擊

我們在前面聊過路由,知道在網路上傳送訊息到某個 IP 位置中間會經過許許多多節點。

也就是說當某個人 Alice 透過 HTTP 上網時,連到 Bob 的伺服器,如果中間經過的某個節點是個壞人 Eve,他就能把你的封包打開來偷看一下,繼續傳給下一個節點,Alice 和 Bob 卻渾然不知,完全沒有隱私可言。

中間人攻擊
*中間人攻擊

這就是所謂的中間人攻擊(Man-in-the-middle attack,簡寫成 MITM attack)。

那這可怎麼辦?能不能繞過 Eve 改走其它節點呢?答案是沒用的,任何一個節點都能看到你封包裡面的內容,如果要在上網時不讓別人看到你的內容,在傳輸時保證安全性,就得靠 HTTPS 這個協定的。

何謂 HTTPS?為什麼 HTTPS 是安全的?

在 HTTP 之後加一個 S 的協定 HTTPS 是什麼?這個 S 代表的是 Secure 的意思,也就是安全的 HTTP。

和 HTTP 相比,HTTPS 如何做到傳輸時更安全的呢?

加密,我加了密。

HTTPS 透過「傳輸層安全性協定」(TLS, Transport Layer Secure,前身為 SSL, Secure Sockets Layer)來進行封包的加密,在 TCP 送出封包之前先加密,收到時先解密。

google.com
*google.com

透過 HTTPS 協定提供加密傳輸通道的網站,就會是 https:// 開頭。瀏覽器也會給這個網站一個「鎖頭」表示在此網站送出敏感訊息,在傳輸時是安全的。

但要讓網站獲得這個鎖頭,不單單是透過 HTTPS 協定加密解密,還包含「憑證」的相關資訊就是,至於憑證為何,我們待之後聊。

資料是安全的,但網址上和網址上的資料會被偷看到嗎?

我們了解到 HTTPS 所使用的 TLS 這個協定是介於 HTTP 和 TCP 之間的,我們傳輸的或是從網站得到的回應都會經過加密,有一定的保護存在。

那麼網址呢?或是我在網址後面似乎也有看到一些參數像是 https://xxx?name=123 中的 name=123 這類的資訊,是否也會被保護呢?

簡單一點的答案是,會的。

無論是 HTTP 的哪種 Method,都會被加密,用 HTTP GET 的加入的額外資訊稱做 parameters,例如 name=123 就是其中一個 parameter,自然也會被加密。

但是你瀏覽的網站是什麼網站,就不見得是可以隱藏的了。除了你送的目的 IP 位置是以明文的方式顯示,在透過網址轉成 IP 位置所需要用的 DNS 這個服務,也會透露出你上了什麼網站。

因此,就算刪掉你瀏覽器中的瀏覽記錄或使用無痕模式上網,你的 Router,或是 IPS 還是會記錄相關的資訊唷!

參考資料

  1. Wiki - HTTPS
  2. Wiki - 中間人攻擊
  3. Wiki - TLS
  4. StackOverflow - Are HTTPS URLs encrypted?

上一篇
理解 HTTP(二):Method、Status Code
下一篇
初探網路安全(一):密碼大小事,存在伺服器的密碼安全嗎?
系列文
網路通訊輕鬆聊30

尚未有邦友留言

立即登入留言