理解HTTPS

HTTPS概念


超文本傳輸安全協議(Hypertext Transfer Protocol Secure 縮寫爲HTTPS)是一種網絡安全傳輸協議。在計算機網絡上,HTTPS藉由超文本傳輸協議進行通訊。算法

HTTPS還被稱爲HTTP over TLS, HTTP over SSL。顧名思義,是利用SSL/TLS來加密數據包,不和HTTP那樣裸奔在TCP上面。瀏覽器

什麼是SSL/TLS


  • SSL是指安全套接字層,簡而言之,它是一項標準技術,可確保互聯網鏈接安全,保護兩個系統之間發送的任何敏感數據,防止壞蛋讀取和修改任何傳輸信息,包括我的資料。兩個系統多是指服務器和客戶端(例如:瀏覽器和購物網站),或兩個服務器(例如:含有我的信息的應用程序)。
  • 這樣可確保用戶和站點之間,或兩個系統之間傳輸的數據沒法被讀取。它使用加密算法打亂傳輸中的數據,防止數據經過鏈接傳輸時被黑客讀取。這裏所說的數據是指任何敏感或者我的信息,例如信用卡號等。
  • TLS(傳輸層安全)是更爲安全的升級版SSL。因爲SSL這一術語更爲經常使用,所以咱們仍然將咱們的安全證書稱做SSL。
  • 若是某個網站受SSL證書保護,其相應的URL中會顯示HTTPS(茶農文本傳輸安全協議)。單機瀏覽器地址欄的掛鎖圖標,便可查看證書詳細信息,包括頒發機構和網站全部者的公司名稱。

加密方式


  • 對稱加密:加密和解密數據使用同一個密鑰。這種加密方式的優勢是速度很快,常見的對稱加密算法有AES。
  • 非對稱加密:加密和解密仍是用不一樣的密鑰,叫公鑰和私鑰。數據用公鑰加密後必須使用私鑰解密,數據用私鑰加密後必須使用公鑰解密。通常來講私鑰本身保留好,把公鑰公開給別人,讓別人拿到本身的公鑰加密數據後發送給本身,這樣只有本身才能解密。這種加密方式的特色是速度慢,CPU開銷大,常見的非對稱加密算法有:RSA。
  • Hash:hash是把任意長度數據通過處理變成一個長度固定惟一的字符串,但任何人拿到這個字符串沒法反向解密成原始數據(由於長度固定,處理後數據有所丟失,沒法還原),hash經常使用來驗證數據的完整新。常見Hash算法有MD5(不安全)、SHA一、SHA256。

需求


由於在信道中傳輸時,沒法保證安全可靠,因此須要對數據進行加密,若是不對信息進行加密,壞人就能夠輕易拿你的數據作壞事,這是不被容許的。那麼怎麼保證咱們的數據安全性呢?安全

  • 使用對稱加密?客戶端加密後,服務端解密,看似很方便,其實否則。咱們的加密方式怎麼告訴服務端呢?若直接在信道中加上加密方式,這樣壞人就能截獲咱們的加密方式,而後解密咱們的數據包,這和不加密有啥區別?pass!!
  • 使用非對稱加密?客戶端生成私鑰和公鑰,將信息用私鑰加密數據包,讓服務端用公鑰解密,這樣服務端和客戶端也能夠發送信息溝通。但是,客戶端用私鑰加密後,在信道中截獲到公鑰,客戶端發送的數據均可以用公鑰解密,客戶端發送的數據盡收眼底,私密信息就被別人知道了。pass!!!

怎麼辦呢?


因而,就有了這樣一種方式,客戶端和生成本身的私鑰和公鑰,因而客戶端先發送一個簡單的數據包,將客戶端的公鑰包在裏面,服務端收到後,生成一個對稱加密的祕鑰,用公鑰將其加密,再發送給客戶端,而後客戶端就可使用這個對稱加密的密鑰和服務端愉快的數據交流了。服務器

還有問題嗎?


咱們說過信道里面,不可靠,也不安全。若是壞人截取了客戶端的數據包,而且將其中客戶端的公鑰偷偷替換成本身生成的公鑰,並藏在數據包裏面,而後發給服務端,那麼服務端生成的對稱密鑰就會被壞人知道,這樣壞人就能夠隨心所欲了。怎麼辦?網絡

CA證書


而後出現了CA證書這種東西,大型認證機構生成本身的私鑰和公鑰,。那麼客戶端Hash處理數據包(包含客戶端的公鑰)並向認證機構請求了幫助,讓他們用私鑰幫咱們加密這個數據包,而後發送給服務端。若是有壞人截取,也沒法進行修改,由於這是認證機構的私鑰加密,若是修改了,服務端收到後,發現用認證機構的公鑰解密出來是一堆亂碼,就清楚中間有人搗鬼,就會丟棄這個數據包。網站

服務端收到後,先用認證機構的公鑰解(保證了這個公鑰是客戶端的),而後將其中的客戶端公鑰和其餘數據進行Hash與原來的Hash進行比對,若是同樣就到了客戶端的公鑰。而後與上面相同的操做就好啦。加密


HTTPS之因此安全,其中做出了許多的加密,這只是最簡單的一種形式。 那麼,爲何還有人使用HTTP呢?由於CA證書不會免費的發放給你,是須要你花錢的。一些小的我的網站,沒有那麼大的需求,天然不會使用HTTPS。計算機網絡

相關文章
相關標籤/搜索