網上說TLS的文章不少,要學習TLS技術有不少不錯的選擇。本文並非一個權威的教程,只是我我的學習TLS後基於本身理解的一個總結而已。若是有讀者經過閱讀此文後加深了對TLS的理解,不勝榮幸。web
要聊TLS,還得從HTTP提及,HTTP能夠說是做爲目前最流行的一個網絡協議,能夠說是網絡的基石之一。通常來講能夠理解爲從瀏覽器看到的全部東西,都是構建於HTTP之上的。算法
早期HTTP協議被設計成在一個可信網絡環境中運行,其設計理念以簡單爲主——經過一個通用格式的明文請求就可以獲取到各類文檔、樣式、腳本、富媒體內容等。瀏覽器
HTTP協議的簡潔安全
因爲其簡潔性,各類互聯網應用都得以在其之上進行充分的擴展,從最先的一個HTML文檔就是一個網頁,到現在打開一個淘寶首頁就有百八十個HTTP請求。各類類型的HTTP請求相互配合,組成了現在咱們所看到的繽紛多彩的互聯網世界。服務器
然而,現在的互聯網環境紛繁複雜,HTTP的簡單也面臨兩個大的問題網絡
本文主要着眼於安全性方面,第二點後續有機會再議。ssh
致使安全問題的一個重要緣由是經過HTTP的請求及返回都是明文的,下面經過兩個例子說明。工具
其一是網絡運營商劫持問題。主要是指咱們的網絡運營商(電信、聯通、移動等)經過在咱們看的網頁中添加廣告,來謀取廣告費的問題。下面來看看他們是怎麼作的。性能
咱們所謂的『上網』大致分爲兩步,首先給咱們要上的網的服務器發送一個請求,而後接收到服務器返回的內容,瀏覽器將這些內容展現出來就是咱們看到的網頁了。咱們的請求並非直接發送給目標網站的服務器的,中間通過了層層的轉發。學習
服務商劫持
如上圖所示,整個互聯網實際上是一個拓撲結構,咱們的請求往返於服務器之間,實際上是通過了不少個節點的(這裏只是簡單YY了一個三層的結構,實際網絡拓撲要複雜不少)。圖中橙色的節點就是咱們網絡運營商的節點了。按說運營商收了咱們的網費,好好的作好傳送數據的事情就行了。然而一些黑心運營商(幹這事的通常爲三四線城市的小運營商)在收了網費的同時還很差好乾活,在服務器的返回內容中插入他們本身的廣告,以此來多謀得一份廣告收入。
這裏隨便網上找了兩個被插入廣告的例子。
劫持1
劫持2
從第二個圖能夠看到,運營商經過解析HTTP請求返回的HTML內容,在其中插入一個iframe區塊,完成廣告的展示。這個事情自己沒難度(分析網絡請求的具體內容,有個專業術語叫『深度包檢測』),作不作就是運營商的節操問題了。
因爲這種現象仍是比較影響體驗的,所以一些網站踏上了全站HTTPS改造之路,不惜巨大改形成本和性能壓力,旨在避免運營商的流氓行徑,這裏先按下不表。
上述這種問題咱們總結下,屬於『可信(相對)』人員佔着『有利位置』,經過篡改請求來『某點小利』。這裏之因此說這些黑心運營商是『可信』,是由於他們雖然有能力作任何事,但畢竟本職是負責傳輸,除了打打小廣告以外,通常仍是可以保證傳輸內容的安全的。所以當你碰到這種狀況時沒必要過於緊張,打個電話投訴下也就完事了。
爲何強調『可信』這個概念,是相對於下面這個case來講的。『可信』的運營商在『有利位置』,這是沒辦法改變的。但要是咱們不當心把『不可信』的不法分子也放到『有利位置』,那恐怕就不是被打打廣告這個簡單了。所謂的『不可信』就是下圖這種狀況。
公共wifi
以前的圖中紅色節點是咱們家裏本身的wifi,那是能夠保證安全的。但若是你是出門在外,使用的是餐廳、咖啡館、酒店、機場的wifi,那還能保證安全嗎?固然不能!雖然通常公共場所提供wifi也就是個便民服務,沒啥心機。但假設你不幸鏈接到的是不法分子故意開放的wifi,那危害就很大了。
公共wifi問題
這些不法分子能夠窺探你全部的請求以及服務器的返回,那簡直就是想幹啥就幹啥了。如下爲YY場景。
上述兩次例子中,運營商和公共wifi提供者要麼是竊聽了用戶的請求,要麼是往服務器的返回中加點料。無論具體方法是啥,問題的本質在於<u>HTTP請求和返回都是明文的</u>。致使一路上這麼多節點,每一個節點均可以拿點它須要的信息,或者往裏再加點料~
除此以外,HTTP的另外一個問題是<u>無法校驗返回給你內容的服務器是不是目標服務器</u>。這說的有些拗口,也無法找到真實的應用層實例,那咱們來看下相似的一個例子吧。
TCP RST
如圖所示是防火牆設備阻止用戶訪問特定網站的一種技術,有些公司會禁止員工訪問遊戲、股票等網絡服務,就會用到這種技術(國家有時候也能夠看作一個公司😂)。HTTP基於TCP/IP協議之上,藉助DNS協議的配合,幫助用戶只須要記住一個好記的單詞(域名或叫網址),就能訪問到特定的網絡服務。這個路由的原理不在本文範圍以內,但TCP/IP + DNS + HTTP這套機制可以work的緣由一樣基於一個假設——網絡環境是可信的,網絡中的每一個節點都會按照協議要求有序運做。上圖中的橙色節點在用戶訪問百度時正常工做,但在訪問youtube時則沒有把請求往上傳遞,而是直接回複用戶不能響應請求。(TCP RST爲斷開TCP鏈接)還有一種狀況下請求仍是往上傳遞到目標服務器了,但中間節點卻提早回覆了一個TCP RST。用戶端瀏覽器收到一個TCP RST後並不知道真相,覺得是要訪問的服務拒絕了咱們的請求,所以就關閉了請求。而實際上服務器是無辜的,有節點假裝了它。
上述例子仍是咱們『可信』的運營商或者防火牆提供商進行網絡管理的一種手段,其結果也就是用戶上不了某些網站而已,影響不是太大。和明文問題同樣,要是碰到的是一個『不可信』的節點,那問題就大得多。
釣魚網站
釣魚網站的問題你們如今都很注意了。不法分子將假網站作的和真網站如出一轍,經過聊天工具或短信騙用戶點擊訪問,企圖利用假網站騙取用戶的用戶名密碼。這種作法可以被大多數人注意的緣由是其網址和真網站不一樣,但若是把釣魚網站這個方式往上面的例子套,那就徹底能以假亂真了。這種問題對於HTTP請求來講幾乎沒有分辨的辦法。
釣魚網站流程
上述兩個例子都是用戶沒有訪問到真正的目標服務器,而是由某個惡意節點<u>假裝成目標服務器</u>給用戶返回了內容。這種方式在通常的上網過程當中是幾乎沒法分辨的,只有技術人員刻意進行分析時,才能發現這種假裝HTTP服務器的狀況。
至此本文一共聊了四個例子,說明了HTTP存在的兩個安全問題
爲了解決這兩個問題,咱們引入TLS(傳輸層安全)協議。運行在TLS協議之上的HTTP協議稱做HTTPS,簡而言之你們平常上網時儘可能使用HTTPS網址來代替HTTP網址,就能夠大大提到安全性了~
上篇結束,下篇會介紹下TLS的大體原理,解釋其爲啥可以保證安全。
做者:jimsshom 連接:https://www.jianshu.com/p/398c9ab538b7 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。