https 如何作到安全

HTTPS

咱們都知道 HTTPS 傳輸安全,爲何安全呢?密碼學保證?下面介紹一些 HTTPS 用到的技術。算法

SSL/TLS

SSL(Secure Sockets Layer),中文叫安全套接層,是網景公司 90 年代中期設計來解決 HTTP 協議明文傳輸的缺點(嗅探、劫持、篡改)。瀏覽器

到 1999 年,IETF 把 SSL 標準化,標準化以後名稱改成 TLS(Transport Layer Security),中文叫傳輸層安全協議。安全

HTTPS

什麼是 HTTPS?網絡

HTTPS = HTTP + SSL/TLS。網站

即不安全的 HTTP 協議加上 SSL/TLS 等於安全的 HTTPS。加密

加密解密

加密和解密是一對互逆的數學運算:操作系統

加密:明文 + 密鑰 = 密文設計

解密:密文 + 密鑰 = 明文對象

對稱加密

對稱加密的意思就是加密和解密使用相同的密鑰,例如在壓縮文件上設置密碼,解密就須要輸入相同的密碼。數學

非對稱加密

非對稱加密則使用不一樣的密鑰(公鑰和私鑰)進行加密解密。

密鑰交換

網站和瀏覽器之間要實現安全的密鑰交換該如何實現?

方案一:使用對稱加密算法

若是單純使用對象加密算法,瀏覽器和網站之間必需要交換密鑰,密鑰直接用明文傳輸很容易被竊取,沒法保證密鑰的安全性。

方案二:使用非對稱加密算法

  1. 網站基於非對稱加密算法隨機生成一對密鑰對 x,y,目前還很安全,只有網站知道
  2. 網站把 x 留在手裏,把 y 用明文傳輸到瀏覽器(y 有可能被竊取)
  3. 瀏覽器拿到 y 以後,先隨機生成第三個對稱加密的密鑰 z,而後用 y 加密 z 獲得最新的 f(本質上就是用非對稱加密保證對稱加密的安全性),將 f 發送到網站(由於 x,y 是成對的,只有 x 才能解密 y 加密的結果,全部 y 泄露也沒法解密 k)
  4. 網站拿到 f 以後,用 x 解密獲得 z,至此瀏覽器和網站都有對稱加密的密鑰 z,能夠進行通訊加密

思考一下,方案二是否安全和完美?

依舊不安全,方案二能夠在必定程度上防止嗅探,但沒法防範網絡數據篡改(中間人攻擊)。

在網站和瀏覽器交換密鑰的過程當中,中間人接收網站發送的密鑰 y 保存下來,改用本身生成的密鑰對僞形成網站與瀏覽器交互,同時使用密鑰 y 僞形成瀏覽器與網站交互。

方案二不安全的根源是缺少可靠的身份認證,瀏覽器沒法鑑別本身收到的密鑰是否是來自網站。

所以須要引入 CA 證書機制(身份認證),基於 CA 證書進行密鑰交換(具體 CA 機制可查看另外一篇介紹 CA 的文章)。

此時獲得方案三:

  1. 網站首先花錢從權威 CA 機構那裏購買一個數字證書,證書一般包含一個私鑰和一個公鑰證書文件
  2. 瀏覽器訪問網站時將公鑰證書文件發送給瀏覽器
  3. 瀏覽器驗證收到的證書(權威機構擔保真假,主流瀏覽器和操做系統都會內置權威 CA 機構的根證書)
  4. 若是證書可信,就隨機生成一個對稱加密密鑰 k,使用公鑰加密 k,獲得密鑰 c
  5. 將密鑰 c 發送到網站,網站根據私鑰解密出密鑰 k,至此密鑰交換完成

這就是 HTTPS 加密傳輸的過程。

相關文章
相關標籤/搜索