天天看點

HTTP協定(二)HTTPS安全傳輸1 HTTPS簡介2 SSL

目錄

  • 1 HTTPS簡介
  • 2 SSL
    • 2.1 摘要算法
    • 2.2 對稱加密算法
    • 2.3 非對稱加密算法
    • 2.4 TLS

1 HTTPS簡介

HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目标的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。HTTPS 在HTTP 的基礎下加入SSL,HTTPS 的安全基礎是 SSL,是以加密的詳細内容就需要 SSL。 HTTPS 存在不同于 HTTP 的預設端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。

HTTP協定的問題就在于:扔給TCP傳輸部分的資料部分不是加密的,是明文傳輸的,在網際網路傳輸中容易被竊取或者篡改。是以需要對HTTP封包進行加密,加密層位于HTTP層和TCP層之間。

2 SSL

SSL(Secure Sockets Layer 安全套接字協定),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及資料完整性的一種安全協定。TLS與SSL在傳輸層與應用層之間對網絡連接配接進行加密。

2.1 摘要算法

消息摘要算法:主要特征是加密過程不需要密鑰,并且經過加密的資料無法被解密,目前可以被解密逆向的隻有CRC32算法,隻有輸入相同的明文資料經過相同的消息摘要算法才能得到相同的密文。

摘要算法可以把任意長度的資料都加密成固定長度的加密資料,如MD5算法:

MD5(“abc”) = 900150983cd24fb0d6963f7d28e17f72;

MD5(“abcdefg”) = 7ac66c0f148de9519b8bd264312c4d64;

MD5(“123”) = 202cb962ac59075b964b07152d234b70;

可以用哈希的思想去了解,摘要算法是不可逆的,好的摘要算法哈希沖突要盡量沒有,加密不需要密鑰,一個哈希函數即可。

2.2 對稱加密算法

發送方使用這個密鑰對明文進行加密傳輸,接受方在收到密文後使用相同的密鑰進行解密,這就需要雙方在傳輸之前就商量好密鑰規則,比如移位加密:

雙方約定這一次加密密鑰是将明文按照英文字母序向左循環移動5位。加密者向左循環移動5位。解密者向右循環移動5位即可得到明文。

2.3 非對稱加密算法

對稱加密算法的問題在于資訊傳輸雙方需要提前知道密鑰,密鑰本身的保密傳輸就是一個問題。

非對稱加密的特點是存在兩個密鑰:公鑰和私鑰,總是成對出現的。

  • 使用公鑰加密的密文,隻有私鑰才能解開,公鑰不能解開;
  • 使用私鑰加密的密文,隻有公鑰才能解開,私鑰不能解開;

其實就是一對密碼,隻是使用場景下把它定義為公和私,但是在加密數學算法中這是沒有差别的,假設密鑰是A和B,那麼用A加密的隻能用B解密,用B加密的隻能用A解密。

2.4 TLS

TLS(Transport Layer Security)使用以上混合的方式進行加密傳輸。

HTTP協定(二)HTTPS安全傳輸1 HTTPS簡介2 SSL
  1. 首先用戶端和服務端通過三次握手建立TCP連接配接。如果使用

    Socket

    通信,此時就可以直接通信了,直接傳輸HTTP封包了。但是使用TLS的話,就需要進行加密傳輸。
  2. 用戶端傳輸加密套件:用戶端首先要告訴服務端,我支援什麼加密方式,什麼雜湊演算法,什麼對稱加密算法,什麼非對稱加密算法,如果是web傳輸的話,就是浏覽器的事情了,這款浏覽器支援什麼樣的加密算法,保證雙方支援。
  3. 服務端選擇加密套件:用戶端傳過來很多,那麼我們選擇哪一套呢?由服務端定。除此之外,服務端需要在本地生成一對公鑰和私鑰,并且把公鑰傳輸給用戶端,私鑰儲存在服務端本地。公鑰傳輸給用戶端的時候使用的是公鑰數字證書的方式,【CA資訊,公鑰使用者,公鑰,權威機構簽名,有效期】。
  4. 用戶端拿到服務端的公鑰後,在用戶端生成一個對稱加密密鑰,并且使用服務端傳輸過來的公鑰對生産的對稱加密密鑰進行加密傳輸給服務端。
  5. 服務端拿到公鑰加密的密文後,使用本地對應的私鑰進行解密,解密後發現,咦!這是一個對稱加密密鑰,此時,用戶端和服務端都知道了這個對稱加密密鑰,雙方就可以使用對稱加密進行資訊傳輸了。

思想核心:使用非對稱加密确定雙方對稱加密的密鑰,之後通過對稱加密進行資訊傳輸。

問題1:為什麼需要公鑰數字證書呢?

CA認證,即電子認證服務,是指為電子簽名相關各方提供真實性、可靠性驗證的活動。證書頒發機構(CA, Certificate Authority)即頒發數字證書的機構。是負責發放和管理數字證書的權威機構,并作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。

防止公鑰泛濫,公鑰都是認證過的,不會讓黑客随意的去産生公鑰然後讓用戶端去連接配接,用戶端隻會連接配接哪些認證了的權威的公鑰,保證了安全性。值得注意的是,公鑰數字證書也是通過非對稱加密的,已經認證了數字證書的公鑰是公開的,可以儲存在用戶端本地,當服務端傳輸數字證書給用戶端的時候,使用CA發放的私鑰進行加密,傳輸到用戶端之後通過公鑰解密,進行證書驗證,肯定了這是證書的有效性,可以進行接下來的傳輸。