標籤:訊息轉寄 合法性 內容 串連 security 正是 努力 htm targe
初識HTTPS
HTTPS也被叫做“基於TLS的HTTP,基於SSL的HTTP,HTTP安全“,它是一個在Internet上廣泛使用的電腦網路安全通訊協定。
即HTTPS是HTTP的安全版本,在瞭解HTTPS為何安全之前,那麼我們首先應該要知道HTTP為什麼不安全。
HTTP為什麼不安全
通過 HTTP 協議傳輸的資訊是明文的。網路包從用戶端/瀏覽器到伺服器的這段過程中,需要經過多個網路裝置。我們的登入帳號、密碼等資訊可以輕易被其中任何一個網路裝置擷取。
如果其中的一個網路裝置被駭客控制,除了可以擷取我們發送的資料以外,還可以將我們發送的資料進行偽造後再進行發送。
這就是 HTTP 傳輸所面臨的問題之一:中間人攻擊,指訊息傳遞的過程中,處在傳遞路徑上的攻擊者可以嗅探或者竊聽傳輸資料的內容。
HTTPS加密
HTTPS針對這個問題,採用了“加密”的方式來解決。
使用對稱式加密演算法(AES)
我們最先想到的應該就是對稱式加密演算法了,如果HTTPS使用的是對稱式加密演算法會是怎樣的情況呢?
對稱式加密演算法既指加密和解密需要使用的密鑰key是一樣的。
如果用戶端和服務端都有一個相同的密匙key,那麼用戶端先使用密匙key加密資料之後再發送到服務端,此時中間人擷取到的資料是無法解密的。服務端使用key解密後,執行完畢返回同樣由該key加密的資料到用戶端。
整個過程看起來沒有問題,但是忽略了一個點,即密匙key如果是服務端產生的該如何告訴用戶端呢?實際上,無論採用什麼樣的方式告訴用戶端,都有可能導緻密匙key泄露,一旦密匙泄露,則整個加密的工作都顯得沒有意義了。
所以實際上HTTPS的加密並不是用的對稱式加密演算法這種方式。
使用非對稱式加密演算法(RSA)
HTTPS使用了另一種聰明的密碼編譯演算法,非對稱式加密演算法。
非對稱式加密演算法會產生兩個密鑰(key1 和 key2)。凡是 key1 加密的資料,key1 自身不能解密,需要 key2 才能解密;凡事 key2 加密的資料,key2 自身不能解密,只有 key1 才能解密。
HTTPS實現
下面我們看看HTTPS中是如何使用RSA的:
- 服務端在發送訊息之前先用RSA技術產生了一對密鑰k1和k2。
- 服務端把k1用明文發送給了用戶端,中間人也許會截取,但是沒有用,k1加密的資料需要k2才可以破解,而k2在服務端手中。
- k1傳到了用戶端,用戶端會去產生一個接下來準備用於對稱式加密(AES)的傳輸密鑰key,然後用收到的k1把key加密,傳給你。
- 服務端用手上的k2解出key後,此時只有服務端和用戶端知道這個對稱式加密的key。
- 接下來的訊息使用對稱式加密的方式進行即可,即非對稱式加密解決了之前我們的問題,即如何安全的把密匙key傳遞出去。
這裡也許你會有問題,為什麼不直接用非對稱式加密來加密資訊,而是加密 AES 的 key 呢?
因為非對稱式加密和解密的平均消耗時間比較長,為了節省時間提高效率,我們通常只是用它來交換密鑰,而非直接傳輸資料。
HTTPS認證
我們之前通過加密技術已經解決了訊息安全傳遞的問題了,那麼是不是從此就萬無一失了呢?答案當然不是。
我們設想一下,如果我們服務端(S)和用戶端(C)中間會途經一個駭客伺服器,暫且就稱為H吧,下面我們看看H如何操作可以破解掉我們的加密防範。
- S產生了k1,使用明文發送給C;
- H接收到k1之後,並沒有轉寄給C,而是先自己產生一個key,使用k1加密後發送給S,即對S來說,H偽裝成了C;
- 同時,H產生了新的一個k1,使用明文發送給C,C會把加密後的key告訴H,即對C來說,H偽裝成了S;
- 這樣一來,實際上H就成為了S和C之間的一個訊息轉寄者了,不旦可以知道S和C之間發送的訊息,還可以偽造訊息進行發送;
這麼看來,我們之前的努力貌似又功虧一簣了。
所以此時我們需要引入一個非常權威的第三方,一個專門用來認證網站合法性的組織,可以叫做 CA(Certificate Authority)。各個網站服務商可以向 CA 申請認證,使得他們在建立安全連線時可以帶上 CA 的簽名。而 CA 得安全性是由作業系統或者瀏覽器來認證的。
你的 Windows、Mac、Linux、Chrome、Safari 等會在安裝的時候帶上一個他們認為安全的 CA 憑證列表,只有和你建立安全連線的網站帶有這些CA的簽名,作業系統和瀏覽器才會認為這個連結是安全的,否則就有可能遭到中間人攻擊。
一旦某個 CA 頒發的認證被用於的非法途徑,那麼這個 CA 之前頒發過的所有認證都將被視為不安全的,這讓所有 CA 在頒發認證時都十分小心,所以 CA 憑證在通常情況下是值得信任的。
總結
使 HTTP 後面增加一個S(Security)的技術,正是 對稱式加密 + 非對稱式加密 + CA 認證 這三種技術的混合體。當然這個主要是 HTTPS 的基本原理,真正實際中的 HTTPS 的協議是比以上的描述更為複雜一些的,並且其中任何一步稍有閃失,整個流程都將不再安全。
這也是為什麼 HTTPS 協議從 SSL 1.0升級到 SSL 3.0,再被 TLS 1.0 現在被 TLS 1.3取代,其背後都是一個個細節上的最佳化,以防有任何閃失。
TLS 協議相比 SSL 協議增加了傳輸層的安全保證。
參考連結
“HTTPS”安全在哪裡?
HTTPS 小白知識(一)
初識HTTPS