HTTPS加密解密過程

https:在http(超文本傳輸協議)基礎上提出的一種安全的http協議,因此可以稱爲安全的超文本傳輸協議。http協議直接放置在TCP協議之上,而https提出在http和TCP中間加上一層加密層。從發送端看,這一層負責把http的內容加密後送到下層的TCP,從接收方看,這一層負責將TCP送來的數據解密還原成http的內容。

SSL(Secure Socket Layer):是Netscape公司設計的主要用於WEB的安全傳輸協議。從名字就可以看出它在https協議棧中負責實現上面提到的加密層。

數字證書:一種文件的名稱,好比一個機構或人的簽名,能夠證明這個機構或人的真實性。其中包含的信息,用於實現上述功能。

加密和認證:加密是指通信雙方爲了防止銘感信息在信道上被第三方竊聽而泄漏,將明文通過加密變成密文,如果第三方無法解密的話,就算他獲得密文也無能爲力;認證是指通信雙方爲了確認對方是值得信任的消息發送或接受方,而不是使用假身份的騙子,採取的確認身份的方式。只有同時進行了加密和認真才能保證通信的安全,因此在SSL通信協議中這兩者都被應。

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

Alice 向 Bob 發送消息時,是通過 Bob 提供的公鑰加密後的數據,而 Alice 獲取的公鑰並不是由 Bob 直接給的,而是由委託一個受信任的第三方機構給的。

HTTPS客戶端和服務端解密加密過程的圖解

  1. 客戶端發起HTTPS請求

這個沒什麼好說的,就是用戶在瀏覽器裏輸入一個https網址,然後連接到server的443端口。

  1. 服務端的配置

採用HTTPS協議的服務器必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,纔可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。這套證書其實就是一對公鑰和私鑰。如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因爲只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。

  1. 傳送證書

這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間等等。

  1. 客戶端解析證書

這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成一個隨機值。然後用證書對該隨機值進行加密。就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。

  1. 傳送加密信息

這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。

  1. 服務段解密信息

服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠複雜,數據就夠安全。

  1. 傳輸加密後的信息

這部分信息是服務段用私鑰加密後的信息,可以在客戶端被還原。

  1. 客戶端解密信息

客戶端用之前生成的私鑰解密服務段傳過來的信息,於是獲取瞭解密後的內容。整個過程第三方即使監聽到了數據,也束手無策。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章