初探計算機網路之HTTPS請求

追風少年瀟歌發表於2021-10-09

​ 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為例子,講解下非對稱加密傳輸的過程:

  1. A 和B約定好網路資料傳輸採用的加密演算法是RSA演算法。
  2. 然後A和B分別根據RSA生成一對金鑰(公鑰私鑰),然後再彼此交換了公鑰
  3. A使用B的金鑰(公鑰)加密報文資訊生成了密文傳送給B
  4. B收到了密文之後,採用自己的金鑰(私鑰)進行密文解密。
  5. B也一樣,通過同種方式給A傳送報文資訊,當然解密方式跟B一樣。

看起來是一套十分完美的方案,但是還是會存在一定的風險。萬一在步驟2過程中,黑客截斷了A的資訊,既然它無法對金鑰進行解密,但是黑客可以自己定義一個金鑰再傳送給B,這樣,B是沒有辦法得知這個金鑰是A還是黑客傳送的,這樣資訊還是會被黑客給竊取掉了。

​ 那麼能不能對傳送方的金鑰進行身份校驗或者找一個權威的中介來擔保呢?答案肯定是可以的。CA(Certificate Authority)數字證書橫空出世,就是給HTTPS頒發證書的組織機構。作為當前網際網路主流的超文字傳輸協議,在安全地進行HTTPS連線時,就必須需要數字證書來證明自己的身份。

​ CA證書的工作原理其實就是在使用者生成的金鑰之中公鑰資訊中額外新增了使用者資訊CA簽名。這樣,接受資料的一方只要對傳送方的公鑰進行簽名校驗,就可以確認傳送方的身份了。

​ 那這樣的話,HTTPS安全可靠的問題就得以解決了。

訪問一個HTTPS的網站的流程

​ 那麼結合上面描述的,訪問一個HTTPS的網站的大致流程如下:

  1. 瀏覽器向伺服器傳送請求,請求中包括瀏覽器支援的協議,並附帶一個隨機數。
  2. 伺服器收到請求後,選擇某種非對稱加密演算法(SHA等其他非對稱加密演算法),把CA數字證書籤名公鑰、身份資訊傳送給瀏覽器,同時也附帶一個隨機數。
  3. 瀏覽器收到後,驗證證書的真實性,用伺服器的公鑰傳送握手資訊給伺服器。
  4. 伺服器解密後,使用之前的隨機數計算出一個對稱加密的金鑰,以此作為加密資訊併傳送。
  5. 後續所有的資訊傳送都是以對稱加密方式進行的。

相關文章