前言:
HTTPS(也稱爲HTTP over Transport Layer Security(TLS),HTTP over SSL,和HTTP Secure)是一種通過計算機網絡進
行安全通信的通信協議,廣泛應用於互聯網,比喻Google,百度......。簡單的來說HTTPS是HTTP的升級安全版。
作用:
HTTPS提供了與正在通信的網站和相關聯的Web服務器的身份驗證,可以防止中間人攻擊。另外,它提供客戶端和服務器之間
的通信的雙向加密,這樣可以防止竊聽和篡改或僞造通信內容。 實際上,這提供了一個合理的保證,即一個人準確地與想要的通信
網站(而不是冒名頂替者)溝通,以及確保用戶和網站之間的通信內容不能被讀取或僞造任何第三方。
概念:
兩種不同的通信協議區別:
1、HTTP 協議(HyperText Transfer Protocol,超文本傳輸協議):是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協
SSL:
TLS:
HTTP和HTTPS的區別:
HTTPS URL以“https://”開頭,默認使用端口 443,而HTTP URL以“http://”開頭,默認使用端口80。
網絡層[ 編輯]
HTTP操作在TCP / IP模型的最高層,即應用層 ; TLS安全協議(作爲同一層的較低子層進行操作),在傳輸之前對HTTP消息進行加密,並在到達時解密消息。嚴格來說,HTTPS不是單獨的協議,而是指通過加密的 SSL / TLS連接使用普通HTTP。HTTPS消息中的所有內容都被加密,包括頭文件和請求/響應加載。除了下面的限制部分描述的可能的CCA加密攻擊之外,攻擊者只能知道雙方之間發生連接及其域名和IP地址。
加密算法:
1、首先講述一下什麼是“加密”和“解密”:
2、什麼是"對稱加密"?
對稱加密:有流式、分組兩種,加密和解密都是使用的同一個密鑰。
例如:DES、AES-GCM、3DES,TDEA,Blowfish,RC5等等
3、什麼是“非對稱加密”?
4、哈希算法
將任意長度的信息轉換爲較短的固定長度的值,通常其長度要比信息小得多,且算法不可逆。
例如:MD5、SHA-1、SHA-2、SHA-256 等
5、數字簽名
簽名就是在信息的後面再加上一段內容(信息經過hash後的值),可以證明信息沒有被修改過。hash值一般都會加密後(
也就是簽名)再和信息一起發送,以保證這個hash值不被修改。
詳解Http訪問過程:
如上圖所示:當客戶端發送請求很容易被黑客截獲,如果黑客冒充目標服務器,則可返回任意信息給客戶端,不被客戶端所察覺,我們經常會聽到“劫持”一次,所以使用直接使用HTTP傳輸是有風險的。
HTTP 向 HTTPS 演化的過程
對稱加密:
爲了防止上述現象的發生,人們想到一個辦法:對傳輸的信息加密(即使黑客把信息截獲,也無法破解)如上圖,上圖是使用的對稱加密,之前我們在講述加密方法的時候說到過,對稱加密就是客戶端和服務端都是使用的同一個密鑰進行加密和解密。但是密鑰被第三方獲取,第三方也能解密,安全性相對較低。有如下常見的幾個缺點:
1、在互聯網時代,肯定不是單機了,所以存在不同的客戶端和服務端的服務器,如果客戶端和服務端服務器非常龐大,雙方都要維護大量的密鑰,從而大大的增加了維護成本。
2、因服務器的安全級別都有所不一樣,所以密鑰容易被泄露。
非對稱加密:
如上圖:客戶端和服務端之間是通過非對稱加密,客戶端使用公鑰或(私鑰)加密後進行數據傳輸至服務端,服務端使用私鑰或(公鑰)進行解密。非對稱加密也有如下缺點:
1、黑客如果獲取了客戶端的公鑰或(私鑰)也能進行解密,獲取其內容。
以上方法都存有缺陷,那麼有什麼方法可以防止數據被截獲、黑客獲取密鑰進行解密的以上的問題,那麼就是SSL證書。申購地址:阿里雲 又拍雲,還有其它網站也提供此服務。
如上圖所示,在第 ② 步時服務器發送了一個SSL證書給客戶端,SSL 證書中包含的具體內容有:
(1)證書的發佈機構CA
(2)證書的有效期
(3)公鑰
(4)證書所有者
(5)簽名
等等.............
1、客戶端在接受到服務端發來的SSL證書時,會對證書的真僞進行校驗,以瀏覽器爲例說明如下:
(1)首先瀏覽器讀取證書中的證書所有者、有效期等信息進行一一校驗
(2)瀏覽器開始查找操作系統中已內置的受信任的證書發佈機構CA,與服務器發來的證書中的頒發者CA比對,用於校驗證書是否爲合法機構頒發,一般都是通過第三方數字認證機構的數字簽名來頒發服務器的證書。
(3)如果找不到,瀏覽器就會報錯,說明服務器發來的證書是不可信任的。
(4)如果找到,那麼瀏覽器就會從操作系統中取出 頒發者CA的公鑰,然後對服務器發來的證書裏面的簽名進行解密
(5)瀏覽器使用相同的hash算法計算出服務器發來的證書的hash值,將這個計算的hash值與證書中籤名做對比
(6)對比結果一致,則證明服務器發來的證書合法,沒有被冒充
(7)此時瀏覽器就可以讀取證書中的公鑰,用於後續加密了
2、所以通過發送SSL證書的形式,既解決了公鑰獲取問題,又解決了黑客冒充問題,一箭雙鵰,HTTPS加密過程也就此形成
所以相比HTTP,HTTPS 傳輸更加安全
(1) 所有信息都是加密傳播,黑客無法竊聽。
(2) 具有校驗機制,一旦被篡改,通信雙方會立刻發現。
(3) 配備身份證書,防止身份被冒充。
總結:
(1)SSL 證書費用很高,以及其在服務器上的部署、更新維護非常繁瑣
(2)HTTPS 降低用戶訪問速度(多次握手)
(3)網站改用HTTPS 以後,由HTTP 跳轉到 HTTPS 的方式增加了用戶訪問耗時(多數網站採用302跳轉)
(4)HTTPS 涉及到的安全算法會消耗 CPU 資源,需要增加大量機器(https訪問過程需要加解密)
(5)HTTPS比HTTP要慢2--100倍。SSL的慢分兩種。一種是指通信慢。另一種是指由於大量消耗CPU及內存等資源,導致處理速度變慢。和使用 HTTP 相比,網絡負載可能會變慢 2 到 100 倍。除去和TCP 連接、發送 HTTP 請求/響應以外,還必須進行 SSL 通信,因此整體上處理通信量不可避免會增加。另一點是 SSL 必須進行加密處理。在服務器和客戶端都需要進行加密和解密的運算處理。因此從結果上講,比起 HTTP 會更多地消耗服務器和客戶端的硬件資源,導致負載增強。針對速度變慢這一問題,並沒有根本性的解決方案,我們會使用SSL
加速器這種(專用服務器)硬件來改善該問題。該硬件爲SSL 通信專用硬件相對軟件來講能夠提高數倍SSL的計算速度。僅在SSL處理時發揮SSL加速器的功效以分擔負載。
……………