443埠是瀏覽器與伺服器協商如何進行安全傳輸資料的,真正的資料交換依舊使用的是80埠。
瀏覽器:將自己支援的加密演算法列表通過443埠傳送給服務端
服務端:收到後與自己支援的演算法列表進行比較,選出一種雙方都支援的演算法,將演算法名稱回傳給瀏覽器,協商完成
瀏覽器:使用協商的加密演算法對請求原文進行加密,通過80埠傳送給服務端
服務端:將收到的請求密文使用協商的演算法進行解密,經過處理後,將響應原文使用協商的演算法進行加密,回傳瀏覽器
瀏覽器:瀏覽器收到響應密文後使用協商的演算法進行解密,拿到響應原文,進行渲染
無論是加密還是解密,都需要使用到key,即金鑰(通常所說的「鹽」)。
由於瀏覽器與伺服器之間存在很多網路裝置和中間商,如路由器、貓、isp等,那麼,如何安全地讓瀏覽器和服務端都知道金鑰成為乙個關鍵問題。
對稱加密
加密和解密使用同一金鑰,常用的對稱加密演算法如aes、des。
在網路環境中是無法絕對保證金鑰安全傳輸(不被攔截)的,只要中間商拿到金鑰,即可對資料進行加解密,從而進行偽裝篡改。
非對稱加密
加密和解密使用不同的金鑰,常用的如rsa。
由於加密和解密使用的金鑰不同,因此需要有兩個金鑰。
傳送方將自己的原始金鑰進行加密後得到乙個加密金鑰。原始金鑰稱為私鑰,加密金鑰稱為公鑰。
私鑰自己保管,公鑰可傳送給接收方。
由於服務端安全效能相比瀏覽器來說更高,因此私鑰一般都是由服務端進行生成保管。
公鑰和私鑰總是成對存在的,使用私鑰加密的資料只能用公鑰解密,使用公鑰加密的資料只能用私鑰解密。
簡而言之:私鑰加密公鑰解,公鑰加密私鑰解。
中間商偽裝成服務端與瀏覽器通訊
中間商使用假私鑰生成假公鑰
中間商攔截真密文和真公鑰,使用真公鑰解密,得到真原文
篡改真原文,得到假原文
使用假私鑰加密假原文,得到假密文
將假密文和假公鑰傳送給瀏覽器
瀏覽器使用假公鑰解密假密文,得到假原文
https的核心思想就是公鑰加密私鑰解密。
由於公鑰加密的資料只能私鑰解密,而私鑰儲存在服務端,因此公鑰加密的資料只能被攔截後可檢視加密資料,但是不能解密與篡改。但中間商可以偽裝成瀏覽器與服務端進行通訊。
通過以上過程描述可知,不安全的核心原因在於公鑰在傳輸過程中被攔截。
因此,要徹底解決安全問題的關鍵在於公鑰不傳輸。
第三方ca
可信的第三方ca機構通過與作業系統公司合作將ca公鑰(即證書)內建進瀏覽器,從而達到公鑰不傳輸的方法。過程如下:
第三方將ca私鑰加密得到ca公鑰
通過與os公司合作將ca公鑰(即證書)內建進瀏覽器,從而達到公鑰不傳輸的方法
服務端將伺服器公鑰提交給給ca,用ca私鑰加密伺服器公鑰,得到密文
將密文傳送給瀏覽器
瀏覽器使用內建的ca公鑰解密,得到原文,即伺服器公鑰
瀏覽器用解密出的伺服器公鑰加密資料,與伺服器互動
由於ca公鑰未經網路傳輸,因此中間商無法獲得ca公鑰,也就無法解密出伺服器公鑰,也就無法偽裝成瀏覽器與服務端進行通訊,從而達到安全的目的。
重要說明
ca解決的問題不是資料是否被**,而是讓瀏覽器判斷**的真實性(即防釣魚**)。
ca私鑰加密的資料原文包括伺服器公鑰+伺服器網域名稱+伺服器公鑰摘要等資訊,並明文告知瀏覽器該公鑰是哪個**下發的,即ca將證書與**進行了繫結。
瀏覽器解密後會校驗網域名稱、摘要與明文資訊進行比較,判斷資料的合法性。
補充說明
單向加密
無法根據密文(在有意義的時間內)推導出原文的加密方式,只能通過判斷兩個密文是否相同的方式判斷原文是否正確。
摘要演算法
一種單向加密演算法,常見如md5、crc、sha等,過程如下:
提取原文特徵
使用雜湊演算法將特徵加密,得到摘要
將原文、摘要演算法、摘要資訊一塊傳送出去
接收方收到資料後,使用收到的摘要演算法加密收到的原文,將得到的摘要資訊與收到的摘要資訊對比,一致說明原文內容正確
雜湊演算法
將任意長度的二進位制值串對映為固定長度的二進位制值串的演算法
優秀雜湊演算法標準:
單向性:通過密文不可推導出原文
原始資料敏感:即使原文只修改1位,得到的密文也大不相同
雜湊衝突小:由於原始資料無限多,而密文長度一定,通過鴿巢(抽屜)理論可知,雜湊衝突無法避免,只能盡量降低
演算法效率高
雜湊演算法應用場景
HTTPS 是如何保證安全的?
每當我們討論到資訊保安的時候,我們最長接觸到的資訊加密傳輸的方式莫過於 https 了,當我們瀏覽器位址列閃現出綠色時,就代表著這個 支援 https 的加密資訊傳輸方式,並且你與它的連線確實被加密了。但是 https 並不是乙個單一的東西,它知識我們常見的 http 協議和某個加密協議的乙個混合,...
Https是如何保證安全的
https 全稱 hypertext transfer protocol over secure socket layer 是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl,簡單點也是https http ...
HTTPS 是如何保證安全的?
每當我們討論到資訊保安的時候,我們最長接觸到的資訊加密傳輸的方式莫過於 https 了,當我們瀏覽器位址列閃現出綠色時,就代表著這個 支援 https 的加密資訊傳輸方式,並且你與它的連線確實被加密了。但是 https 並不是乙個單一的東西,它知識我們常見的 http 協議和某個加密協議的乙個混合,...