Https安全通信機制

1,http的缺點

  1. 通信使用明文(不加密),內容可能可能會被竊聽
  2. 不驗證通信方的身份,因此可能遭遇僞裝
  3. 無法驗證報文的完整性,所以可能已被篡改

2,http+加密+認真+完整性保護 = https

(1)加密處理和認證

如果在http中使用未經加密的明文,比如在web頁面中輸入了信用卡號,如果這條通信線路找到竊聽,那麼你的信用卡號就暴露了,另外服務端和客戶端都是沒法確認通信方的,所以很有可能不是在與理想中的通信方進行通信,所獲取到的報文可能是被篡改過的
爲了統一解決這些問題,需要在http的基礎上加上加密和認證的機制

(2)https是身披ssl的http

https並非是一種新的協議,它只是在http通信接口處使用了部分ssl或者tls協議罷了,通常都是http和tcp通信,現在變成了先和ssl通信,再由ssl與tcp通信
在這裏插入圖片描述

(3)相互交換祕鑰的公開加密技術

對稱加密:採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱爲對稱加密,也稱爲單密鑰加密。

非對稱加密:公開密鑰(publickey:簡稱公鑰)和私有密鑰(privatekey:簡稱私鑰)。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密

https使用的是混合加密,因爲如果只使用對稱加密,需要在通信中傳輸共享祕鑰,這個過程有可能會被攻擊者劫持和篡改,如果祕鑰落入別人手裏那麼加密就沒有意義了,如果單單是使用非對稱加密,公鑰加密私鑰解密這種新式,目前的技術是做不到憑着密文和公鑰獲取明文的,不過這樣的方式效率實在是太低了,所以https採用了兩週的優點,使用非對稱加密的形式來傳遞對稱加密的共享祕鑰

然而採用第三方機構證書的形式是包裝了,非對稱加密公鑰是真實可信的,公鑰密碼在數字簽名技術裏面扮演舉足輕重的角色,但是如何保證公鑰是合法的呢,如果是遭到中間人攻擊,掉包怎麼辦?這個時候公鑰就應該交給一個第三方權威機構來管理,這個機構就是認證機構(Certification Authority)CA,CA 把用戶的姓名、組織、郵箱地址等個人信息收集起來,還有此人的公鑰,並由 CA 提供數字簽名生成公鑰證書(Public-Key Certificate)PKC,簡稱證書
在這裏插入圖片描述

3,Https安全通信機制過程

HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密後的數據。具體是如何進行加密,解密,驗證的,且看下圖。

在這裏插入圖片描述

  1. 客戶端發起HTTPS請求:這個沒什麼好說的,就是用戶在瀏覽器裏輸入一個https網址,然後連接到server的443端口
  2. 服務端的配置:採用HTTPS協議的服務器必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,纔可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。這套證書其實就是一對公鑰和私鑰。如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因爲只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。
  3. 傳送證書:這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間等等。
  4. 客戶端解析證書:這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成一個隨機值。然後用證書對該隨機值進行加密。就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容
  5. 傳送加密信息:這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。
  6. 服務段解密信息:服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠複雜,數據就夠安全。
  7. 傳輸加密後的信息:這部分信息是服務段用私鑰加密後的信息,可以在客戶端被還原。
  8. 客戶端解密信息客戶端用之前生成的私鑰解密服務段傳過來的信息,於是獲取瞭解密後的內容。整個過程第三方即使監聽到了數據,也束手無策。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章