溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析HTTPS與SSL原理

發(fā)布時間:2021-11-12 17:38:47 來源:億速云 閱讀:158 作者:柒染 欄目:云計算

如何解析HTTPS與SSL原理,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

HTTPS是指結合HTTP和SSL來實現(xiàn)網(wǎng)絡瀏覽器和服務器之間的安全通信。HTTPS被融合到當今網(wǎng)絡操作系統(tǒng)和網(wǎng)絡瀏覽器中,他依賴于網(wǎng)絡服務器是否支持HTTPS協(xié)議。本文重點是闡述HTTPS和SSL證書的原理,不涉及具體實現(xiàn)。在開始敘述原理之前,先明確幾個網(wǎng)絡安全方面的基礎概念。

一.基礎概念

1. 對稱加密算法

一個對稱加密算法由五個部分組成:

  • 明文:原始消息或數(shù)據(jù)

  • 加密算法

  • 密鑰

  • 密文:使用密鑰通過加密算法對明文計算后的結果

  • 解密算法:使用密文和相同密鑰通過解密算法產生原文

2. 非對稱加密算法

與對稱加密算法不同的是,非對稱加密算法使用的加密密鑰和解密密鑰是不同的。

3. 公鑰密碼與RSA

公鑰密碼屬于對稱加密算法中的一種,公鑰密碼體系中有一個公鑰和一個密鑰,公鑰是公開給所有人使用的,密鑰只有自己知道,通常公鑰根據(jù)一個密鑰進行加密,根據(jù)另一個密鑰進行解密。

RSA公鑰密碼算法是公鑰密碼算法中的一種,RSA中的加密和解密都可以使用公鑰或者私鑰,但是用公鑰加密的密文只能使用私鑰解密,用私鑰加密的密文智能使用公鑰解密。

二.SSL證書的原理

這里只敘述SSL證書的原理,至于如何申請證書,如何生成證書,如何部署證書可以Google得到。在介紹SSL證書前,需要先知道證書的指紋和指紋算法。

指紋是在證書信息(證書機構,公司名,證書有效期等)后面加上一段內容,保證信息沒有被修改過。具體操作是將將原來的信息通過指紋算法算法(一個hash算法)計算得到指紋與原信息一起發(fā)出去。用戶收到這份數(shù)據(jù)后,首先將原信息用同樣的指紋算法計算結果,將得到的結果與指紋對比,如果一致,則說明信息沒有被修改過。當然這個過程是有危險的,黑客完全可以修改內容并重新通過指紋算法生成指紋。這里需要使用加密算法來解決這個隱患。

假設一個公司B company向證書機構xxx CA申請SSL證書,他會得到一張類似下面這張圖的證書

B company得到這張證書后,會在與用戶通信的過程中將證書發(fā)送給用戶,用戶首先會檢測辦法證書的機構,如果是大家都公認的證書機構,操作系統(tǒng)在出廠時會內置這個機構的機構信息和公鑰,例如xxx CA,如果是一個不受信任的證書機構,應用程序(比如瀏覽器)會發(fā)出警告,如果是受信任的證書機構,應用程序會使用預置的xxx CA的公鑰去解密最后的指紋內容和指紋算法,然后再把前面的證書內容用指紋算法計算后與指紋內容比對,由于指紋內容是由證書機構唯一的私鑰加密的,因此只要比對成功說明證書是沒有人被人修改過的。接下來用戶就可以放心使用該公司的公鑰了。

三.HTTPS的原理

HTTPS的出現(xiàn)是為了解決網(wǎng)絡通信中數(shù)據(jù)傳輸不安全的問題,下面我們以登陸為例,先看一個網(wǎng)絡通信最簡單的過程,再一步步分析這個過程中不安全的因素以及解決辦法。

1.最簡單的通信過程

這個通信過程槽點太多,這樣一個網(wǎng)絡通信過程屬于小學生水準,首先最明顯一個錯誤是作為客戶端如何知道給予回應一定是目標服務器,黑客可以有一百種辦法來偽裝這個服務器,輕輕松松就拿到用戶的用戶名和密碼,所以圖中也只能無奈的使用“某個地址”來標識服務器。為了解決這個問題,首先需要讓瀏覽器確認對方的身份,于是有了下面的通信過程。

2.確認服務器身份

確認服務器身份就需要用到前面說過的RSA算法了,由于RSA算法有下面這幾個特性,所以是可以用來唯一確認服務器身份的:

  • 私鑰的唯一性

  • 私鑰的保密性(只有服務器知道這個私鑰)

  • 只能用公鑰解密用私鑰加密過的密文(對稱加密算法的特點)

其中“()”里的內容是服務器用私鑰加密后的內容,一般服務器會將明文加密,瀏覽器在收到消息后首先會用公鑰解密密文,由前面特性3可以知道,公鑰和解密算法是可以解出明文的,如果解不出來說明對方不是目標服務器,瀏覽器解密后會與明文做比對,如果比對成功,由私鑰的唯一性和保密性就可以確認對方是目標服務器。然而確認服務器身份后,在向服務器發(fā)送數(shù)據(jù)的過程中,如果數(shù)據(jù)被黑客截獲,我們的用戶名和密碼也會落入黑客之手,于是下一步我們需要對發(fā)送的數(shù)據(jù)進行加密。

3.通信內容加密

瀏覽器對用戶名和密碼用公鑰進行加密,由于

  • 只能用私鑰解密用公鑰加密過的密文

于是密文只能由服務器用私鑰解密,黑客即使拿到密文,也是無法解密的。但是在服務器向客戶返回信息的過程中就出現(xiàn)問題了,由于公鑰是公有的,任何人都可以拿到這份數(shù)據(jù)并使用公鑰解密,所以這里還是存在不安全因素。于是客戶和瀏覽器的通信過程多了一個步驟。

4.使用用戶定義的對稱加密算法對信息加密

為了使瀏覽器和服務器發(fā)出的信息都無法被別人解密,這里使用了一個對稱加密算法,而算法和密鑰的加密是在瀏覽器用公鑰來加密的,這樣可以保證只有服務器才能用私鑰來解密這個內容,也就是保證對稱加密算法和密鑰只能被服務器拿到。當服務器拿到對稱加密算法和密鑰后,后面的通信都能使用這個對稱加密算法來完成,由于對稱加密算法和密鑰只有客戶和服務器知道,后面的通信加密過程都是無法被破解的。

到這里,基本就是HTTPS通信的整個過程了,似乎整個過程都很難被黑客破解,但是注意到前面的所有過程都默認了一個前提,那就是客戶手里已經擁有公鑰。公鑰的獲取如果只是在客戶和服務器之間進行的話,是存在很大的安全隱患的,最直接的問題就是用戶怎么確定拿到的公鑰就是目標服務器的公鑰,類似“證明‘能證明你身份’的憑證是你的”這樣的命題,最好的解決辦法是引入一個大家都信任的第三方來“證明這個憑證”是服務器的,于是這里就使用了SSL證書。前面提到,通過發(fā)送SSL證書服務器可以將公鑰安全的交給用戶,而這里的第三方就是證書機構。于是我們得到了一個完整的HTTPS通信過程。

到這里已經基本講完了SSL證書與HTTPS的原理,當然實際通信過程中還有很多細節(jié)沒有說到,但是不妨礙理解原理。實際開發(fā)和生產過程中很多信息敏感的操作都可以參照這種思想來實現(xiàn),文中有不合理的和錯誤的地方歡迎指正。

看完上述內容,你們掌握如何解析HTTPS與SSL原理的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI