一篇文章帶你了解Https加密
很多人都知道Https是經過加密的通信協議,相對於Http是安全的,今天這篇文章帶大家了解一下Https是怎麼加密的。
首先我們知道的是,Http直接通過明文在瀏覽器和伺服器之間傳遞消息,很容易被別人監聽抓取到通信內容。
這就是Https誕生的原因,Https採用對稱加密和非對稱加密結合的方式來保護瀏覽器和服務端之間的通信安全。
下面我們先來了解一下對稱加密和非對稱加密:
對稱加密:加密和解密都是用同一個密匙
非對稱加密:密匙成對出現,分為公匙和私匙,公匙和私匙之間不能互相推導,公鑰加密需要私鑰解密,私鑰加密需要公鑰解密
下面說一下兩種加密演算法的優缺點
對稱加密速度快,非對稱加密速度慢
對稱加密相對非對稱加密不安全,只要密匙暴露,和明文傳遞沒有區別;非對稱加密可以將公匙暴露,供客戶端加密,服務端使用私匙解密
對稱加密速度快,很適合作為Https的加密演算法,但是伺服器和瀏覽器之間怎麼傳遞這個密匙是一個很大的問題,如果傳遞密匙的過程被別人監聽,那麼就相當於明文傳遞,所以顯然對稱加密不適合作為Https加密的演算法。
那麼再考慮一下非對稱加密,伺服器端只要把公匙暴露出來,讓瀏覽器端使用公匙對消息進行非對稱加密,伺服器端使用私匙對消息進行解密,就可以實現瀏覽器端到服務端的消息傳遞。
但是服務端向瀏覽器端回復消息的時候,只能使用私匙進行加密,讓瀏覽器端使用公匙對消息進行解密,問題就出現了,網站的公匙是所有人都知道的,那麼所有人都可以對服務端回復的消息使用公匙進行解密,這樣消息被別人攔截後就可以跟明文一樣解讀了,所以服務端向瀏覽器傳遞消息的問題就解決不了了。
既然對稱加密和非對稱加密都實現不了,那麼一種對稱加密和非對稱加密相結合的加密方式就應運而生,下面詳細說一下整個加密流程
1.瀏覽器使用Https的URL訪問伺服器,要求建立SSL鏈接
2.伺服器接收到SSL鏈接後,發送非對稱加密的公匙A給瀏覽器
3.瀏覽器生成隨機數,作為對稱加密的密匙B
4.瀏覽器使用伺服器返回的公匙A,對自己生成的對稱加密密匙B進行加密,得到密匙C
5.瀏覽器將第4步生成的密匙C發送給伺服器
6.伺服器使用自己的私匙D對接收到的密匙C進行解密,得到對稱加密密匙B
7.瀏覽器和伺服器之間使用密匙B作為對稱加密密匙進行通信
這樣瀏覽器和伺服器之間就共享了一個對稱加密的密匙B,而且不會被任何人監聽和攔截到。之後瀏覽器和伺服器之間的消息傳遞,使用密匙B來進行對稱加密就好了。
這種加密方式不僅安全,而且非對稱加密只使用了一次,後續所有通信消息都是用對稱加密,效率也會比非對稱加密高。
當然了,Https的加密遠比這一篇文章說的複雜很多,還要涉及到證書以及證書的頒發等等,這裡也只是簡單的做出了Https加密的介紹,希望對大家有所幫助。


TAG:lebron的地方 |