那些關於SSL/TLS的二三事(一) — Why SSL/TLS?

Carl
3 min readMay 1, 2018

--

在開始看SSL/TLS技術層面的內容之前, 先簡單介紹一下SSL certificates帶來的四個好處以及這些好處替我們解決了什麼問題:

Source identity verification
你現在看到的網站, 真的是該網站本身嗎?

當你登入到一些比較重要的網站時, 如銀行的網頁, 你會需要確認你所到達的頁面確實是這個銀行的網頁, 想想你在上面輸入password的時候, 若當下的網頁並不是這個銀行所提供的頁面, 那就很危險了. 換句話說, 你會想要避免任何在相同的domain name下看到相似的網站之可能性. 攻擊者通常會藉由攔截往來於正牌網站之間的流量來達到此目的. SSL可以協助我們驗證你正在存取的網站到底是正牌的還是假冒的. 這背後的機制是在瀏覽器上透過一些密碼學機制來達成的. 瀏覽器會通過驗證SSL憑證裡的簽章來確認其真實性. 一旦你的瀏覽器確定這個簽章是正確的, 你就可以在瀏覽器的address bar的左邊看到綠色的鎖頭:

有CA認證過的憑證

Security against Man-in-the-middle (MITM) attacks
會不會有人看到我在網站上輸入的信用卡卡號呢?

要想建立客人對你的信賴, 保護好線上的敏感資料是很重要的. 個人識別資訊(Personally Identifiable Information, a.k.a. PII)如信用卡卡號, 身分證字號, password, 生日, 醫療紀錄, 電話號碼, 地址等等. 這些都需要在各種的稽核標準/法律之下被安全的儲存/保護著. SSL通訊可以確保透過其傳輸的資料都是由某個secret key加密過的, 且此secret key只有client與server才知道, 並且對於每個唯一的session, 其secret key都是不同的.

Client/Server authentication
瀏覽器會識別與認證server的真實性, 那server也可以識別client嗎?

SSL允許雙向的認證. 瀏覽器可以驗證其正在存取的網站的身份, 網站也可以透過client憑證來驗證client的真實性. 在SSL通訊中, client憑證是一個選擇性的步驟, 其並不是那麼的常見. 不過對於封閉式網站來說, 這些就是必要的了, 畢竟對封閉式網站來說, 其必須確保從外界來存取其內容的client之身份.

Non-Repudiation
某個網站可能在某個時間點之後否定其之前所有的行為嗎?

在SSL連線建立後, 一旦瀏覽器驗證了server的SSL憑證中的簽章後, 這個server就被認為是已認證的了. 在這個時間點開始, 任何跟此server之間發生的通訊與行為都具有不可否定性, 即不管在未來的任何時間點, 該server都不可以否定其之前所做過的事.

最後要補充的一點就是: SSL的另一個目的是作為server的public key的載體. 對於SSL通訊中的”信任鏈驗證(chain of trust validation)”階段與金鑰交換過程來說, server的public key都扮演了非常重要的角色.

References

  • SSL/TLS Operations

--

--

Carl

Stand for something or you will fall for anything.