iT邦幫忙

2021 iThome 鐵人賽

DAY 23
1

「我們的連結夠安全嗎。」


HTTP(HyperText Transfer Protocol)

超文本傳輸協定,是傳輸雙方都必須遵守的一組「約定」,
他可以用來發布和接收 html 檔、圖片、文字 等超文本。

而這些約定並沒有加密這個動作。
也就是說,所有的資料都是未加密的,如果有駭客可以中途攔截你的訊息,
那他就可以直接看到所有資料。

HTTPS(HyperText Transfer Protocol Secure)

多了一個Secure,代表他比較安全。
其實就是運用了TLS/SSL 的HTTP。
如果你還不知道我在講什麼的話,請看到這個網頁的左上角,
不管你用的是Chrome 還是 Edge ,網址旁邊都應該要有一個圖形。
如果他是一個鎖上的鎖,那就代表這個網頁使用 HTTPS 。

TLS(傳輸層安全性協定)/SSL(安全通訊協定)

SSL 和 TLS 不是兩個東西,他其實就是同一個東西,
只是 TLS 是 SSL 的更新版。
(以下通稱TLS)

SSL 總共有三個版本,SSL1.0, SSL2.0, SSL3.0,
而SSL1.0因為漏洞太多所以沒有公開。
在2014年時SSL3.0被發現缺陷,因此在2015年時被棄用了,
之後皆使用SSL的下一版,TLS。

TLS總共有四個版本,
TLS1.0、TLS1.1、TLS1.2、TLS1.3,

從中文名稱上可以看到,TLS是傳輸層安全性協定,
也就是雙方在進行通訊時(或是造訪網站等廣義的通訊)所共同遵守的規範,更精確來說步驟。

我們前面學過那麼多的加密方式,
這個協定就是來決定我們要使用哪些加密方式,
以及怎麼使用。

TLS1.2 HANDSHAKE

當客戶造訪一個網站,需要和該網站的伺服器進行「握手」的動作。

首先客戶端會先傳送一個訊息,稱為ClientHello。
內容包含該客戶可使用的最高TLS版本,以及一清單的密碼套件(cipher suites),和一個亂數。

單個密碼套件形如這樣 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,

須包含密鑰交換演算法(如DHKE、ECDH)、對稱式加密演算法、MAC演算法(如SHA-256)
客戶要提供一個密碼套件清單表示他所能提供的加密方式。

接著伺服器會根據客戶的訊息回傳 ServerHello,
內容包括這次通訊要使用的加密方式。

OK,
雙方都協議好要使用哪種加密方式了。
接著是加密的準備。

伺服器會傳來他的證書(我們在昨天講過由CA頒發的那個)讓客戶端確認身分。
接著會傳來 DHKE 的公開參數,
以及以上所有資料的數位簽章(當然經過雜湊)。
最後,補上一句ServerHelloDone,代表他傳完了。
接著就靠你(的瀏覽器)了,

有了他的證書,你可以確認他就是你要連的網站,
有他的數位簽章,你確認訊息是由他傳送過來的。
有了DHKE的公開參數,你可以和他進行秘密訊息傳遞。

但還沒完,
你有了共用的密鑰,但是伺服器端還沒有,
你必須將你的公鑰傳給他,才算完成一次DHKE。

另外,你還要傳一個"Change cipher spec",
告知伺服器,你接下來都會傳送經過加密後的訊息。
接著將以上所有的通訊結果摘要加密後傳送給伺服器,
這個步驟可以用來防範MITM。
最後伺服器端回傳一個Change cipher spec。

以上這些步驟都在1秒之內完成,
也就是你一點開網站的那瞬間就完成了。
而TLS1.3花的時間又更少了,他只需要一次來回就完成所有事情。


今天的內容可以算是囊括了過去所有的東西,
我自己也查了蠻多的資料想要用簡單的方式解釋 TLS 協定。
不過還是得要說聲抱歉,用了許許多多的簡寫,

對於不熟悉英文簡寫的人來看這篇應該會蠻痛苦的,
而且如果不熟悉每個演算法的作用的話可能看不太懂。
如果你是這樣的話,記得回去複習哦!

參考資料:
https://www.digicert.com/faq/ssl-cryptography.htm
https://www.digicert.com/what-is-an-ssl-certificate
https://www.websecurity.digicert.com/zh/hk/security-topics/what-is-ssl-tls-https
https://www.youtube.com/watch?v=0TLDTodL7Lc
https://www.youtube.com/watch?v=86cQJ0MMses

圖片來源:
https://www.meme-arsenal.com/en/create/meme/1424433
https://www.researchgate.net/figure/A-SSL-TLS-handshake_fig2_300402166
https://me.me/i/tls-handshake-timeout-11488620


上一篇
DAY 22-憑證頒發機構CA
下一篇
DAY 24- 憑證實察 Certificate
系列文
學密碼學也猜不到你的手機密碼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言