HTTP 與 HTTPS? 加密?


Posted by hoyi-23 on 2021-10-01

什麼是 HTTP?

HTTP的全名是 超文本傳輸協定(HyperText Transfer Protocol),內容規範了客戶端請求與伺服器回應的標準,藉由 TCP 作為資料的傳輸方式。

HTTP的問題?

經過TCP傳遞資料時,這些資料都是明文,可能會被惡意竊聽者竊取資料。因此需要加密!!

加密

加密就是讓原本的明文變成無法讀取內容的密文,這個密文只能透過特定的解密過程,將其回復成明文。
加密的方式例如:

共用金鑰加密

這個又有人稱為「對稱式加密」,加密與解密是透過同一個金鑰。
原理大致上是將每個字元位移然後透過共用金鑰解密再移回來。
但是這不完全安全,因為在使用共用金鑰加密前,需要傳遞金鑰給對方,在傳遞的過程中,就有機會被竊聽。

公開金鑰加密

這個又有人稱為「非對稱式加密」。
因為上面共用金鑰加密的問題,公開金鑰加密改變成,每個通訊者都有成對的鑰匙,一把是 公鑰、一把是私鑰。共鑰是大家都看的到,但私鑰只有自己看的到。每個資料被任意一把鑰匙加密後,必須要透過另一個配對的鑰匙才能解密。
這樣感覺很安全對吧!但是其實還是沒辦法阻止惡意竊聽。
假設今天A和B準備進行通訊,而C是竊聽者。如果A和B都把C當成通訊對方,這樣的情況下,A會使用C的公鑰加密內容,然後傳給C。C再把東西解密傳給B,反之亦然。
這樣A和B其實也不會知道C的,同時C已經竊取通訊的內容啦!
這種攻擊叫做中間人攻擊,會有這樣的問題是因為我們不知道正在加密的公鑰是屬於誰的。

數位憑證

為了解決上面的問題,就出現了數位憑證!
數位憑證要怎麼運作呢?
簡單來講就是由一個機構來頒發憑證,這個數位憑證內會有數位簽章與通訊內容。通訊會傳送數位憑證過去,因為有數位簽章,所以接收的人就會確定這個公鑰是誰的了!
假設今天A和B要進行通訊,在開始前A必須提供公鑰和Email去機構申請憑證。機構核可後,便會透過數位簽章包裹通訊的內容,並製作成數位憑證。
A再把數位憑證給B,而B透過數位簽章就可以確認是傳來的公鑰是A的,接著就可以加密後,再回傳。

什麼是 HTTPS?

這個s就是Secure。全名為 超文本傳輸安全協定。
HTTPS透過HTTP進行通訊,但通訊的過程使用 SSL/TLS 進行加密,藉由類似上方加密的方式,以確保資料安全傳輸。
由於非對稱加密的運算量較高,傳遞回應較慢;所以,會透過公開金鑰加密傳遞出共用的金鑰,再透過共用金鑰加密進行後續的傳遞,兼顧了安全性及傳遞速度。

SSL 安全通訊協定

Secure Sockets Layer (安全通訊端層)是TLC的前身。

TLC 傳輸層安全性協定

Transport Layer Security(傳輸層安全性)


#HTTP #HTTPS







Related Posts

HTML & CSS 筆記

HTML & CSS 筆記

[css] 網頁字型渲染的優化

[css] 網頁字型渲染的優化

後端與前端的差異

後端與前端的差異


Comments