https協議驗證原理

一、初識HTTPS

在介紹https前先來認識一下HTTP,HTTP(HyperText Transfer Protocol)即超文本傳輸協議,是互聯網應用最爲廣泛的一種網絡協議,所有的WWW文件都遵守這個協議。

但HTTP存在許多不足指出,舉例如下:

1、HTTP協議傳輸的數據是未加密的,即已明文方式傳輸,意味有可能被監聽。

2、不驗證通信方的 身份,容易被僞裝入侵

3、無法證明明文的完整性,存在傳輸過程被篡改可能性

在所有未加密的協議傳輸中都存在這些問題,基於http協議的不足,於是網景公司設計SSL(Secure Sockets Layer)協議用於對Http協議進行加密,從而誕生HTTPS。

PS:互聯網處處存在被竊聽的風險,只需要收集互聯網流動的數據包(幀)就可以了,收集回來的數據包的解析工具可以交給抓包工具(packetCapture)或嗅探器(Sniffer)工具。

二、HTTPS驗證原理

Https 在真正請求數據之前,會先跟服務有幾次握手驗證,以證明身份,圖示如下:


2.1 驗證流程

1、客戶端發起一個https的請求,把自身支持的一系列Cipher Suite(密鑰算法套件,簡稱Cipher)發給服務端

2、服務端接收到客戶端的Cipher後與自身對比,不支持則斷開,支持則會從中選出一種加密算法和HASH算法以證書的形式返回客戶端,證明包含了公鑰、頒證機構、網址、失效日期等

3、客戶端收到服務端響應後會做幾件事

   3.1 驗證證書合法性

         頒發證書的機構是否合法與是否過期,證書包含的網址與正在訪問的網址是否一致;

        證書驗證通過後,在瀏覽器的地址欄會加上一把小鎖(不同瀏覽器不一樣)

     3.2 生成隨機密碼

           如果證書通過,此時瀏覽器會生成一串隨機數,用於證書中的公鑰加密。

   3.3 HASH握手信息

         在最開始約定好的HASH方式,把握手信息取HASH值,然後用隨機數加密“握手信息+握手消息HASH(簽名)”並一起發送給服務端

         在這裏去握手信息的HASH值,主要把握手信息做一個簽名,用於驗證握手信息傳輸過程沒有被篡改過。

4、服務端拿到客戶端傳來的密文,用自己的私鑰來解密握手信息取出隨機數密碼,再用隨機數密碼解密握手消息和HASH值,並與傳過來的HASH值做對比來確認是否一致。

然後用隨機密碼加密一段握手消息(握手消息+握手消息HASH值)給客戶端

5、客戶端用隨機數解密並計算握手消息的HASH,如果與服務端發來的HASH一致,握手過程結束,之後所有的通信數據將由之前瀏覽器生產的隨機密碼並利用對稱加密算法進行加密,因此這段密鑰只有客戶端和服務端知道,所以即便中間請求被攔截也是無法解密數據的,保證通信的安全。


非對稱加密算法:RSA,DSA/DSS     在客戶端與服務端相互驗證的過程中用的是對稱加密 
對稱加密算法:AES,RC4,3DES     客戶端與服務端相互驗證通過後,以隨機數作爲密鑰時,就是對稱加密
HASH算法:MD5,SHA1,SHA256  在確認握手消息沒有被篡改時



       











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章