網間數據加密傳輸全流程(SSL加密原理)

0.導言

  昨天寫了一篇關於《祕鑰與公鑰》的文章,寫的比較簡單好理解,有點兒像過家家,如果詳細探究起來會有不少出入,今天就來詳細的說明一下數據加密的原理和過程。這個原理就是大名鼎鼎SSL的加密原理,哦,對了,有人說上個月SSL剛爆出本年度最轟動的漏洞“心臟滴血”,可能危及全球好多互聯網企業,那這個東西靠譜嗎?其實,爆出漏洞的是SSL的一款產品openssl,是程序員編碼時候的失誤,是程序上的漏洞,而非SSL原理上出現了問題,所以SSL還是靠譜的,HTTP協議還是需要它來保護,我們不應該因爲一個個人的失誤,而否定一項很犀利的技術。好啦,我們開始吧,先看看下面的圖:

情景假設

發送方:李雷

接收方:韓梅梅

發送內容:一封很長很長的信。

1.準備階段

  首先,李雷想發郵件給韓梅梅先要經過韓梅梅的授權,韓梅梅要事先把含有自己公鑰的數字證書發送給李雷。這就引出了數字證書的概念。

1.1數字證書:

  數字證書簡稱CA,又叫公鑰證書(對公鑰和私鑰概念不清楚的可以參考這篇文章。《公鑰與私鑰》),是由權威機構頒發的一種電子證書,這裏的權威機構一般都是官方認證的機構,裏面包含了使用者的公鑰和一些其他的信息。當然,windows系統裏也自帶證書服務器,也就是說,如果你自己想給別人頒發證書的話也可以,但因爲你並不具有權威,所以不會有人用你頒發的證書,除非你想自己建一個網站(例如電商網站),需要安全數據傳輸,如果別人使用你的網站,需要在你這裏註冊證書,但你的證書還是不會被操作系統信任,一般都要去官方的機構註冊還能有效。

  注意,證書的頒發機構,使用者和擁有者是不同的三個人。

  頒發機構是第三方官方認證機構,保證證書的權威性。

  使用者是頒發給的那個人,是真正的證書持有者,數字證書就相當於該人的身份證,裏面記錄了他的公鑰。

  擁有者可以是很多人,證書的使用者可以把自己的證書發送給他人,用來和他人發生安全的通信。

  數字證書裏面含有身份認證的相關信息:持有者的公鑰、證書指紋、加密所有算法,證書有效期等等。下圖爲我電腦windows系統下的一個微軟頒發的證書。我們在圖中可以看到上述所說的信息,這裏的頒發機構是 Microsoft Windows Hardware Compatibility PCA,使用者是 Microsoft Windows Hardware Compatibility Publisher,擁有者當然是我啦。所以,一個人如果擁有了對方的數字證書,也就擁有了對方的公鑰。

1.2 獲取接收方證書

  所以,在發送方想發送加密信息之前,要先從接收方那裏獲得數字證書。這裏的情景也就是韓梅梅要事先把自己的證書發送給李雷。

2.加密階段

2.1 製作信息摘要

 

  如上圖(可以參考文章最開始大圖),加密的第一步就是將原文的明文信息利用Hash函數製作出一個加密的信息摘要,這個信息要比原文小的多,因爲Hash函數式不可逆的,所以無法從加密的摘要信息反推回原文。這個信息將作爲解密時的校驗信息。

2.2 製作數字簽名

  將上一步得到的信息用發送方李雷的私鑰加密,製作出數字簽名。數字簽名就是最後解密是接收方韓梅梅校驗發送方身份的所利用的信息。

2.3 製作正文密文。

  將信件明文,上一步得到的數字簽名,和發送方李雷自己的數字證書方在一起進行對稱加密。這裏介紹下對稱加密的概念,首先說公鑰和私鑰的加密形式叫做非對稱加密,是兩把不同的祕鑰不想加鎖和開鎖,自己不能開自己。而對稱加密就是隻有一個祕鑰,用它來枷鎖也用它來解鎖。對稱加密存在安全隱含,因爲你必須讓發送方和接收方都知道這個祕鑰,這就必然要把這個祕鑰在網絡上傳輸,這就存在風險。但對稱加密也有優點,就是算法是時間複雜度底,加密過程快,而非對稱加密的時間複雜度很高,如果對一段很長的全文都進行非對稱加密顯然是不現實的。所以聰明的人們相出了用非對稱加密算法加密對稱加密祕鑰的方法,就可以做到兩者兼得,在下一步中,就可以看到這個奇蹟發生。

2.4製作數字信封

  用接收方韓梅梅數字證書中的公鑰對這把對稱加密的祕鑰進行加密,形成數字信封,這樣在傳輸過程中,黑客就無法截取到加密正文所用的對稱祕鑰,達到了效率和安全性上的兼顧。

2.5 打包數據,可以上路了!

  將第3步製作的密文和第4步製作的數字信封打包在一起,發送出去。這樣固若金湯的加密過程就結束了!

3.解密階段

  韓梅梅這時候已經收到了李雷發來的信件。解密階段基本是加密階段的反過程。

3.1 解密數字信封

  韓梅梅利用自己的私鑰解開數字信封,數字信封是用韓梅梅的公鑰加密的,得到對稱祕鑰。

3.2 解密正文、數字簽名、發送方數字證書。

  利用上一步解密得到的對稱祕鑰,解開密文。得到明文、數字簽名、含有李雷公鑰的數字證書。

3.3 解密數字簽名

  利用上一步得到的發送方李雷的公鑰解密數字簽名,數字簽名是用李雷的私鑰加密的,得到發送方李雷利用Hash函數製作的信息摘要。

3.4 接收方製作信息摘要

  接收方韓梅梅利用第二步解密得到的信件明文利用Hash函數再次製作信息摘要。

3.5 校驗原文

  將第3步和第4步得到的兩份信息摘要進行對比,如果一樣,說明接收數據正確且完整。至此,一套完整的加密傳輸流程結束了!

 

4.總結

  如果你細細體味,會發現這裏有很多巧妙的地方。

  1、利用非對稱加密確保了數據的絕對安全性。

  2、利用對稱加密加密原文,簡化了時間複雜度,同時有用非對稱加密加密對稱祕鑰,讓對稱祕鑰的傳輸絕對安全。也許你會想,原文最終還是隻用對稱加密算法加的密,我們只需要暴力破解這個對稱密碼就可以了。這裏要說明的是,這個對稱祕鑰是隨機生成的,對用戶透明,一般應該也會很長,要破解這個基本上也是不現實的。

  3、利用Hash函數的不可逆性、結果唯一性對數據進行校驗,有效的保證了數據的完整性。

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