近兩年,Google、Baidu、Facebook 等這樣的互聯網巨頭,不謀而合地開始大力推行 HTTPS, 國內外的大型互聯網公司不少也都已經啓用了全站 HTTPS,這也是將來互聯網發展的趨勢。前端
爲鼓勵全球網站的 HTTPS 實現,一些互聯網公司都提出了本身的要求:算法
1)Google 已調整搜索引擎算法,讓採用 HTTPS 的網站在搜索中排名更靠前;小程序
2)從 2017 年開始,Chrome 瀏覽器已把採用 HTTP 協議的網站標記爲不安全網站;後端
3)蘋果要求 2017 年 App Store 中的全部應用都必須使用 HTTPS 加密鏈接;微信小程序
4)當前國內炒的很火熱的微信小程序也要求必須使用 HTTPS 協議;瀏覽器
5)新一代的 HTTP/2 協議的支持需以 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、RC五、RC6
(英語:public-key cryptography,又譯爲公開密鑰加密),也稱爲非對稱加密(asymmetric cryptography),在這種密碼學方法中,須要一對密鑰,一個是私人密鑰,另外一個則是公開密鑰。
優勢:知道了公鑰,也沒法計算出來密鑰。例如:在開發項目時,通常私鑰是保存在服務端,公鑰保存在前端,只要服務端安全,那麼私鑰就不會被竊取。
缺點:計算量大,須要消耗大量的系統資源,性能低。
經常使用的算法:RSA、Elgamal、揹包算法、Rabin、D-H、ECC(橢圓曲線加密算法)。
數字簽名主要是有兩個做用
身份證實
驗證信息的內容是否被篡改。
而數字簽名由於採用公鑰加密技術實現,又叫公鑰數字簽名。
示例:taker給maker給了本身的公鑰,說之後經過此公鑰能夠驗證本身的身份和信息是否篡改。
有一天,taker在外遇到了點困難須要錢,想要朝maker借點錢,可是又怕沒法證實本身,因此採用數字簽名。
首先他把消息內容,經過hash算法計算出一個摘要,而後在採用本身私鑰對摘要進行加密
而後在把這個加密信息添加到郵件附件中,一同發給maker。
maker收到郵件後,用公鑰對加密信息進行解密獲得了摘要。
而後在用郵件內容進行hash,生成摘要與公鑰解密出來的摘要進行比對,就能夠確保此郵件是taker所發,而且內容未被篡改,而後在給taker打錢。
參見: HTTPS 原理詳解