HTTPS自誕生以來,我們總是對它充滿着很多的疑問,HTTPS到底是啥?HTTPS多出來的S
指的是什么?HTTPS安全可靠嗎?訪問一個HTTPS的網站的流程等等,帶着這些疑問,我們一起來揭開HTTPS的面紗。
HTTPS到底是啥?多出來的S指的是什么?
要想知道HTTPS
是啥,首先我們得先知道HTTP
是啥,英文全稱:Hyper Text Transfer Protocol,翻譯過來就是超文本傳輸協議
,那HTTPS多出的S
指的其實就是SSL
的簡寫,英文全稱:Secure Socket Layer,翻譯為安全套接字層
,主要是支持網絡傳輸數據的加密工作。SSL
協議工作於傳輸層與應用層之間,為應用提供數據的加密傳輸。所以,HTTPS的英文全稱為 HTTP over SSL,其實就是在之前的HTTP協議傳輸過程中增加了SSL
協議這么一個角色。
HTTPS安全可靠嗎?
想要確認是否HTTPS安全可靠,就要從SSL的加密算法進行分析。那么SSL加密能力具體是體現在哪些方面呢?接下來一一進行解析。
我們可以通過對稱加密算法對我們傳輸的數據進行加解密,例如DES
對稱加密算法,就是相當於每一個網站都與用戶之間采用相同的密鑰對傳輸的數據內容進行加解密
。但是這種密鑰是不能夠保證信息安全的,很容易被黑客給竊取,唯一能夠提升安全性的就是在加密的基礎上再不斷進行加密。
但是換個角度想想,如果我們不能阻止黑客來竊取我們的報文,那能不能夠保證就算黑客他們成功竊取,也無法查看報文里面的數據。既然DES
算法對數據進行對稱加密,還是容易被黑客竊取篡改,那不對稱加密算法
是否達到目的呢?答案是可以的,比如RSA
算法,該算法將加密的報文數據分成公鑰
和密鑰
,由於兩個密鑰並不會一模一樣,所以又稱非對稱加密
。私鑰
是用來對公鑰
加密的數據進行解密
的,這個密鑰
是需要嚴格保密的,防止竊取的。公鑰
是對數據信息進行加密,任何人都可以夠得到它,也包括黑客。
非對稱加密算法
的安全性原理其實就是基於大質數分解
的困難性,比如說在非對稱加密算法
中公鑰和私鑰是一對大質數函數
。計算這兩個大質數的乘積
相對來說是比較簡單的,但是要將這兩個大質數的乘積從而分解成兩個質數(即逆運算)是比較困難的。RSA算法解密的過程就等同如此。所以,在網絡信息傳輸時,首先將自己的公鑰互相發送給對方。這樣,一方在發送信息時,先將對方的公鑰進行加密生成密文。對方收到密文之后,再用私鑰進行解密,這樣一來,信息安全就自然地提高了。
但是呢,非對稱加密並不是沒有缺點的,它有一個很大的痛點就體現在加密和解密耗時過長
,比較適合於對少量數據進行處理
。實際上,HTTPS也正是通過這樣一種非對稱加密方式來建立安全的SSL連接的。下面以A和B為例子,講解下非對稱加密傳輸的過程:
- A 和B約定好網絡數據傳輸采用的加密算法是
RSA
算法。 - 然后A和B分別根據
RSA
生成一對密鑰
(公鑰
和私鑰
),然后再彼此交換了公鑰
。 - A使用B的
密鑰
(公鑰
)加密報文信息
生成了密文
發送給B - B收到了
密文
之后,采用自己的密鑰
(私鑰)進行密文
解密。 - B也一樣,通過同種方式給A發送報文信息,當然解密方式跟B一樣。
看起來是一套十分完美的方案,但是還是會存在一定的風險。萬一在步驟2過程中,黑客截斷了A的信息,既然它無法對密鑰進行解密,但是黑客可以自己定義一個密鑰再發送給B,這樣,B是沒有辦法得知這個密鑰是A還是黑客發送的,這樣信息還是會被黑客給竊取掉了。
那么能不能對發送方的密鑰進行身份校驗或者找一個權威的中介來擔保呢?答案肯定是可以的。CA
(Certificate Authority)數字證書
橫空出世,就是給HTTPS頒發證書的組織機構。作為當前互聯網主流的超文本傳輸協議,在安全地進行HTTPS連接時,就必須需要數字證書
來證明自己的身份。
CA證書的工作原理其實就是在用戶生成的密鑰之中公鑰信息中額外添加了用戶信息
和CA簽名
。這樣,接受數據的一方只要對發送方的公鑰進行簽名校驗,就可以確認發送方的身份了。
那這樣的話,HTTPS安全可靠的問題就得以解決了。
訪問一個HTTPS的網站的流程
那么結合上面描述的,訪問一個HTTPS的網站的大致流程如下:
- 瀏覽器向服務器發送請求,請求中包括瀏覽器支持的協議,並附帶一個隨機數。
- 服務器收到請求后,選擇某種非對稱加密算法(SHA等其他非對稱加密算法),把CA數字證書簽名公鑰、身份信息發送給瀏覽器,同時也附帶一個隨機數。
- 瀏覽器收到后,驗證證書的真實性,用服務器的公鑰發送握手信息給服務器。
- 服務器解密后,使用之前的隨機數計算出一個對稱加密的密鑰,以此作為加密信息並發送。
- 后續所有的信息發送都是以對稱加密方式進行的。