HTTPS詳解-加密演算法(一)

WeiZhao_111發表於2018-07-01

近兩年,Google、Baidu、Facebook 等這樣的網際網路巨頭,不謀而合地開始大力推行 HTTPS, 國內外的大型網際網路公司很多也都已經啟用了全站 HTTPS,這也是未來網際網路發展的趨勢。

為鼓勵全球網站的 HTTPS 實現,一些網際網路公司都提出了自己的要求:

1)Google 已調整搜尋引擎演算法,讓採用 HTTPS 的網站在搜尋中排名更靠前;

2)從 2017 年開始,Chrome 瀏覽器已把採用 HTTP 協議的網站標記為不安全網站;

3)蘋果要求 2017 年 App Store 中的所有應用都必須使用 HTTPS 加密連線;

4)當前國內炒的很火熱的微信小程式也要求必須使用 HTTPS 協議;

5)新一代的 HTTP/2 協議的支援需以 HTTPS 為基礎。

https概述

超文字傳輸安全協議(英語:Hypertext Transfer Protocol Secure縮寫HTTPS,常稱為HTTP over TLSHTTP over SSLHTTP Secure)是一種通過計算機網路進行安全通訊的傳輸協議。HTTPS經由HTTP進行通訊,但利用SSL/TLS來加密資料包。HTTPS開發的主要目的,是提供對網站伺服器的身份認證,保護交換資料的隱私與完整性。這個協議由網景公司(Netscape)在1994年首次提出,隨後擴充套件到網際網路上。HTTPS是並非應用層的新協議。只是HTTP通訊介面用SSL或TLS協議代替而已。

HTTP直接和TCP通訊。當使用ssl時,則演變為跟ssl通訊,然後再由ssl與tcp進行通訊。簡單的講就是http的plus版。

HTTPS詳解-加密演算法(一)

在採用ssl後,http就擁有了加密、證書、完整性保護這些功能。

在講解ssl時,先講解下幾個關鍵的知識點。

加密方法

對稱金鑰加密

又稱私鑰加密、共享金鑰加密。需要對加密和解密使用相同金鑰加密演算法。由於其速度快,對稱性加密通常在訊息傳送方需要加密大量資料時使用。對稱性加密也稱為金鑰加密

優點:效能高

缺點:金鑰洩露風險高,因為大家共享一個金鑰,假如一方洩露這個密碼,就沒有安全可言。比如:在前後端呼叫的過程中使用此種演算法,如果前端js中存放金鑰,那麼就會被竊取,app端也有可能反編譯獲取。

常用的演算法:DES、3DES、AES、Blowfish、IDEA、RC5、RC6

HTTPS詳解-加密演算法(一)

公開金鑰加密

(英語:public-key cryptography,又譯為公開金鑰加密),也稱為非對稱加密(asymmetric cryptography),在這種密碼學方法中,需要一對金鑰,一個是私人金鑰,另一個則是公開金鑰。

優點:知道了公鑰,也無法計算出來金鑰。例如:在開發專案時,一般私鑰是儲存在服務端,公鑰儲存在前端,只要服務端安全,那麼私鑰就不會被竊取。

缺點:計算量大,需要消耗大量的系統資源,效能低。

常用的演算法:RSAElgamal、揹包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)。

HTTPS詳解-加密演算法(一)

數字簽名

數字簽名主要是有兩個作用

  • 身份證明

  • 驗證資訊的內容是否被篡改。

而數字簽名因為採用公鑰加密技術實現,又叫公鑰數字簽名。

示例:taker給maker給了自己的公鑰,說以後通過此公鑰可以驗證自己的身份和資訊是否篡改。

HTTPS詳解-加密演算法(一)

有一天,taker在外遇到了點困難需要錢,想要朝maker借點錢,但是又怕無法證明自己,所以採用數字簽名。

首先他把訊息內容,通過hash演算法計算出一個摘要,然後在採用自己私鑰對摘要進行加密

HTTPS詳解-加密演算法(一)

然後在把這個加密資訊新增到郵件附件中,一同發給maker。

HTTPS詳解-加密演算法(一)

maker收到郵件後,用公鑰對加密資訊進行解密得到了摘要。

HTTPS詳解-加密演算法(一)

然後在用郵件內容進行hash,生成摘要與公鑰解密出來的摘要進行比對,就可以確保此郵件是taker所發,並且內容未被篡改,然後在給taker打錢。

HTTPS詳解-加密演算法(一)

參見: HTTPS 原理詳解

相關文章