ssl訪問的原理

2022-07-10 04:57:09 字數 3051 閱讀 7372

本文無**對照解釋,但力求通俗易懂。請讀者邊讀邊手繪各個流程,一便於理解。

總體互動流程如下

1. 客戶端發起https請求

這個沒什麼好說的,就是使用者在瀏覽器裡輸入乙個https**,然後連線到server的443埠。

2. 服務端的配置

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

3. 傳送證書

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

4. 客戶端解析證書

這部分工作是有客戶端的tls來完成的。

客戶端(以 ie 瀏覽器為例,單擊「工具」——「internet 選項」——「內容」選項卡——單擊「證書」)的"證書管理器",有"受信任的根證書頒發機構"列表。客戶端會根據這張列表,檢視解開數字證書的公鑰是否在列表之內。

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

5. 傳送加密資訊

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

6. 服務段解密資訊

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

7. 傳輸加密後的資訊

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

8. 客戶端解密資訊

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

幾個關鍵的背景概念

1)數字簽名——為了證明發件人身份,情景再現如下,

alice與bob互換公鑰。

alice用自己的私鑰對txt檔案進行數字簽名。

alice用bob的公鑰對txt檔案進行加密。

alice把經過數字簽名和加密的檔案txt,通過郵件或其他傳輸途徑,如qq、msn等)傳給bob。

bob在收到簽名並加密的郵件後首先用bob自己的私鑰進行檔案加密的解密,然後再用alice的公鑰進行數字簽名解密。

同樣,在這個過程中cinda也可以獲取bob、alice的公鑰和簽名並加密的標書檔案txt。同時因無bob的私鑰而無法開啟郵件。同時由於alice在傳送檔案前已用自己的私鑰進行了數字簽名,所以當bob在收到郵件後完全可以證實自己收到的就是alice發來的郵件,而不可能是其他使用者的。試想如果cinda非法使用者想要改變郵件,冒充alice向bob傳送郵件,因cinda沒有alice的私鑰,所以在用其他使用者的私鑰進行數字簽名時就不可能再以alice的公鑰來解密數字簽名了。

在這裡要注意檔案加密和數字簽名的先後順序,一定是先簽名再加密,這樣加密技術就可以同時保證郵件中的數字簽名了。如果先加密,而後簽名,非法使用者在得到郵件後就可通過獲取的公鑰破解數字簽名了,因為公鑰是可以公開的,很容易被一些別有用心的人得到。數字簽名破解後很可能簽名被替換。當然郵件中的內容在沒有收件人私鑰的情況下還是無法開啟的。

2)證書的起源——這裡也通過乙個情景來展現

鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。

鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把。

蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達到保密的效果。

鮑勃收信後,用私鑰解密,就看到了信件內容。這裡要強調的是,只要鮑勃的私鑰不洩露,這封信就是安全的,即使落在別人手裡,也無法解密。

鮑勃給蘇珊回信,決定採用"數字簽名"。他寫完後先用 hash 函式,生成信件的摘要(digest)。

然後,鮑勃使用私鑰,對這個摘要加密,生成"數字簽名"(signature)。

鮑勃將這個簽名,附在信件下面,一起發給蘇珊。

蘇珊收信後,取下數字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實是鮑勃發出的。

蘇珊再對信件本身使用 hash 函式,將得到的結果,與上一步得到的摘要進行對比。如果兩者一致,就證明這封信未被修改過。

複雜的情況出現了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。此時,蘇珊實際擁有的是道格的公鑰,但是還以為這是鮑勃

的公鑰。因此,道格就可以冒充鮑勃,用自己的私鑰做成"數字簽名",寫信給蘇珊,讓蘇珊用假的鮑勃公鑰進行解密。

後來,蘇珊感覺不對勁,發現自己無法確定公鑰是否真的屬於鮑勃。她想到了乙個辦法,要求鮑勃去找"證書中心"(certificate authority,簡稱 ca),為公

鑰做認證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關資訊一起加密,生成"數字證書"(digital certificate)。

鮑勃拿到數字證書以後,就可以放心了。以後再給蘇珊寫信,只要在簽名的同時,再附上數字證書就行了。

蘇珊收信後,用 ca 的公鑰解開數字證書,就可以拿到鮑勃真實的公鑰了,然後就能證明"數字簽名"是否真的是鮑勃籤的。

附件:乙個較詳細的實現流解析

SSL證書的原理

客戶端向伺服器請求https連線 客戶端向伺服器傳送客戶端ssl協議的版本號,加密演算法的種類,產生的隨機數,以及其他伺服器和客戶端之間通訊所需要的各種資訊。伺服器確認並返回證書 伺服器向客戶端傳送ssl 協議的版本號,加密演算法的種類,隨機數以及其他相關資訊,同時伺服器還將向客戶端傳送自己的證書。...

ssl工作原理

ssl工作原理 ssl 是乙個安全協議,它提供使用 tcp ip 的通訊應用程式間的隱私與完整性。網際網路的 超文字傳輸協議 http 使用 ssl 來實現安全的通訊。在 客戶端與伺服器間傳輸的資料是通過使用對稱演算法 如 des 或 rc4 進行加密的。公用金鑰演算法 通常為 rsa 是用來獲得加...

SSL工作原理

from ssl 是乙個安全協議,它提供使用 tcp ip 的通訊應用程式間的隱私與完整性。網際網路的 超文字傳輸協議 http 使用 ssl 來實現安全的通訊。在客戶端與伺服器間傳輸的資料是通過使用對稱演算法 如 des 或 rc4 進行加密的。公用金鑰演算法 通常為 rsa 是用來獲得加密金鑰交...