前言 從2015年左右開始,Google、Baidu、Facebook 等互聯網巨頭,不謀而合地開始大力推行 HTTPS, 國內外的大型互聯網公司很多也都已經啟用了全站 HTTPS 為鼓勵全球網站的 HTTPS 實現,一些互聯網公司都提出了自己的要求: 1)Google 已調整搜索引擎演算法,讓採用 ...
前言
從2015年左右開始,Google、Baidu、Facebook 等互聯網巨頭,不謀而合地開始大力推行 HTTPS, 國內外的大型互聯網公司很多也都已經啟用了全站 HTTPS
為鼓勵全球網站的 HTTPS 實現,一些互聯網公司都提出了自己的要求:
1)Google 已調整搜索引擎演算法,讓採用 HTTPS 的網站在搜索中排名更靠前;
2)從 2017 年開始,Chrome 瀏覽器已把採用 HTTP 協議的網站標記為不安全網站;
3)蘋果App Store 中的所有應用都必須使用 HTTPS 加密連接;
4)微信小程式也要求必須使用 HTTPS 協議;
5)HTTP/2和HTTP/3 協議的支持需以 HTTPS 為基礎。
因此學習HTTPS的是一件很必要的事情
https概述
超文本傳輸安全協議(英語:Hypertext Transfer Protocol Secure,縮寫:HTTPS,常稱為HTTP over TLS,HTTP over SSL或HTTP Secure)是一種通過電腦網路進行安全通信的傳輸協議。HTTPS經由HTTP進行通信,但利用SSL/TLS來加密數據包。HTTPS開發的主要目的,是提供對網站伺服器的身份認證,保護交換數據的隱私與完整性。這個協議由網景公司(Netscape)在1994年首次提出,隨後擴展到互聯網上。HTTPS是並非應用層的新協議。只是HTTP通信介面用SSL或TLS協議代替而已。
HTTP直接和TCP通信。當使用ssl時,則演變為跟ssl通信,然後再由ssl與tcp進行通信。簡單的講就是http的plus版。
在採用ssl後,http就擁有了加密、證書、完整性保護這些功能。
在講解ssl時,先講解下幾個關鍵的知識點。
加密方法
對稱密鑰加密
又稱私鑰加密、共用密鑰加密。需要對加密和解密使用相同密鑰的加密演算法。由於其速度快,對稱性加密通常在消息發送方需要加密大量數據時使用。對稱性加密也稱為密鑰加密。
優點:性能高
缺點:密鑰泄露風險高,因為大家共用一個密鑰,假如一方泄露這個密碼,就沒有安全可言。比如:在前後端調用的過程中使用此種演算法,如果前端js中存放密鑰,那麼就會被竊取,app端也有可能反編譯獲取。
常用的演算法:DES、3DES、AES、Blowfish、IDEA、RC5、RC6
公開密鑰加密
(英語:public-key cryptography,又譯為公開密鑰加密),也稱為非對稱加密(asymmetric cryptography),在這種密碼學方法中,需要一對密鑰,一個是私人密鑰,另一個則是公開密鑰。
優點:知道了公鑰,也無法計算出來密鑰。例如:在開發項目時,一般私鑰是保存在服務端,公鑰保存在前端,只要服務端安全,那麼私鑰就不會被竊取。
缺點:計算量大,需要消耗大量的系統資源,性能低。
常用的演算法:RSA、Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)。
數字簽名
數字簽名主要是有兩個作用
-
身份證明
-
驗證信息的內容是否被篡改。
而數字簽名因為採用公鑰加密技術實現,又叫公鑰數字簽名。
示例:taker給maker給了自己的公鑰,說以後通過此公鑰可以驗證自己的身份和信息是否篡改。
有一天,taker在外遇到了點困難需要錢,想要朝maker借點錢,但是又怕無法證明自己,所以採用數字簽名。
首先他把消息內容,通過hash演算法計算出一個摘要,然後在採用自己私鑰對摘要進行加密
然後在把這個加密信息添加到郵件附件中,一同發給maker。
maker收到郵件後,用公鑰對加密信息進行解密得到了摘要。
然後在用郵件內容進行hash,生成摘要與公鑰解密出來的摘要進行比對,就可以確保此郵件是taker所發,並且內容未被篡改,然後在給taker打錢。