互聯網安全套路之加密、簽名和證書


  互聯網在為我們的生活帶來極大便利的情況下,也引入了很多安全隱患。比如信息在網絡傳輸過程中可能會被黑客截取並篡改,這會帶來很嚴重的后果。為了解決信息在網絡傳輸過程中的安全問題,對應就產生了:加密算法、數字簽名和數字證書。

一、加密算法

  加密簡單理解就是將一串需要傳遞的明文信息轉換為密文信息后再進行傳輸。接收方收到密文后,再按照規律進行解密,得到原始的明文信息。在這個信息的傳輸過程中,如果被黑客截獲,但是因為信息內容是密文,所以黑客也無法得知信息的具體內容,從而保障了信息的安全性。
  加密算法可以分為對稱加密和非對稱加密。
  對稱加密算法的特點是:雙方使用同樣的秘鑰(可以理解成一串隨機數,由信息發送方生成)進行加解密,算法計算量小,加解密速度快,因此被廣泛使用在加密內容較多的場景下。常用的對稱加密算法有:AES、DES等。但是加密算法有個缺點,就是發送方該如何將秘鑰交給接收方呢?因為秘鑰本身在網絡傳輸過程中也有可能被黑客截獲。
  非對稱加密算法的特點是:雙方使用不同的秘鑰(一對“公鑰和私鑰”)進行加解密。用公鑰加密的內容只有對應的私鑰才能解開,反之亦然。公鑰是對外公開的,任何人都可以獲取公鑰,但是不能通過公鑰反推出私鑰(非對稱性);並且一個公鑰有且只有一個對應的私鑰(唯一性)。非對稱加密算法因為不需要向對方傳輸私鑰,因此安全性要比對稱加密算法高。但是算法要比對對稱加密復雜,加解密速度慢,不適合需要大量加密的場景。常用的非對稱加密算法有RSA、ESA等。
  綜上我們可以發現,對稱加密算法效率高,適合用於大量加密內容,但是無法保證秘鑰安全的傳輸給對方;而非對稱加密算法不需要傳輸私鑰,安全性好,但是算法復雜度高,加解密效率低,不適合用於大量加密。
  結合它倆的特點,以前的大神們想出了一個解決對稱加密秘鑰傳輸安全性的方法:先用接收方的公鑰將對稱加密秘鑰加密,然后傳輸給對方;接收方收到后,用自己的私鑰解密,就得到了發送方的對稱加密秘鑰,這樣雙方就可以使用對稱加密算法愉快的通信了。這時候,即使對稱加密秘鑰在網絡傳輸過程中被黑客截獲,但是秘鑰被接收方的公鑰加密過了,黑客沒有接收方的私鑰,無法破解。這個方法保證了秘鑰傳輸的安全性,同時后續的通信內容是用對稱加密算法進行的,也兼顧了加密通信的效率。
 
  上面的方法看起來已經萬無一失了,黑客即使截獲了秘鑰,也無法破解。但是,黑客仍有辦法搞事情---篡改信息。比如黑客雖然無法破解秘鑰,但是因為接收方的公鑰是公開的,黑客也能獲取到,所以黑客可以自己偽造一份對稱秘鑰,然后使用接收方的公鑰加密,再傳給接收方。這時候接收方使用私鑰解密后,得到的對稱秘鑰就是黑客傳來的,而接收方完全感知不到這點,后續使用黑客的秘鑰加密傳輸內容,這就出問題了。
  為了解決這個問題,就需要用到數字簽名大法。

二、數字簽名

  1.摘要算法
  介紹數字簽名之前,需要先提一下摘要算法。摘要算法可以簡單理解為:一份源文本,經過摘要算法處理后,得到一串摘要值。(可以理解為哈希)
  摘要算法的特點:同一份源文本,使用同樣的摘要算法,得到的結果相同;而不同的源文本,即使使用相同的摘要算法,結果必然不同。並且,無法從摘要值反推出源文本(這是摘要算法與加密算法的顯著區別,加密算法經過解密后是可以得到初始明文的)。基於以上特性,摘要算法可以用來校驗信息是否被篡改,因為篡改后的信息和摘要值肯定無法匹配。
  常用的摘要算法有:MD5、SHA等。
  2. 數字簽名
  上面提到摘要算法可以用來校驗信息是否被黑客修改。但是萬一黑客改完源文本后,連摘要值也一起篡改了呢?這時候數字簽名就排上用場了。
  數字簽名說白了就是加密后的摘要值。發送方使用摘要算法提取出源文本的摘要值后,使用自己的私鑰對摘要值進行加密,得到源文本的數字簽名,再使用接收方的公鑰對源文本進行加密,這樣源文本和摘要值都是密文了。在消息傳輸過程中,將數字簽名附上一起傳輸。
  即使信息被黑客截獲,黑客通過發送方的公鑰解密出了摘要值,但由於摘要算法的不可逆性,無法反推出源文本的內容。而如果黑客想要篡改信息,重新偽造一份源文本,就算他使用同樣的摘要算法偽造了摘要值,但是因為他沒有發送方的私鑰,這時他是沒法生成數字簽名的。接收方收到篡改后的信息后,如果可以使用發送方公鑰正常解密數字簽名,得到摘要值,再使用自己的私鑰解密源文本,得到文本內容,最后再使用同樣的摘要算法提取文本內容的摘要值和數字簽名解密出來的摘要值做對比,二者一致就可以證明源文本沒有被人篡改過;如果無法使用發送方的公鑰解密數字簽名,或者重新提取的摘要值和數字簽名中的摘要值不匹配,這時候接收方就可以意識到信息可能是被篡改過了。
  到了這里是不是看起來一切都沒問題了?Naive。黑客還是有辦法搞事情的。因為接收方無法確定自己用的公鑰就是發送方的公鑰。黑客完全可以一開始就偽造一個發送方的公鑰傳給接收方。黑客再使用自己的私鑰去偽造數字簽名,附在偽造的源文本上一起傳給接收方。因為接收方可以正常使用發送方的公鑰(此時已是黑客偽造的公鑰)解密數字簽名,並且偽造的數字簽名和偽造的源文本是匹配的。這時候接收方還是無法識別信息被篡改。
  可以發現,這時候問題的關鍵點在於如何確保發送方公鑰的可靠性。為了解決這個問題,就需要用到數字證書大法。

三、數字證書

  數字證書是一份經過證書授權中心(CA)簽發數字簽名的,包含有公鑰所有者信息以及公鑰內容的文件。簡單理解,數字證書里包含有:公鑰、公鑰所有者的信息、CA的數字簽名、CA名稱、證書有效期、序列號等信息。
  數字證書如何保證公鑰的可靠性呢?關鍵在於CA的數字簽名。CA使用摘要算法得到數字證書內容的摘要值,然后用自己的私鑰進行加密,得到數字簽名。這樣證書的使用者在得到數字證書后,只要使用CA的公鑰(任何人都能獲取)解密數字簽名,得到摘要值,再使用同樣的摘要算法提取數字證書內容的摘要值,二者進行對比,就可以知道證書是否被篡改過了。
這里我們可能又會發現,數字證書安全性的關鍵就是確保CA的私鑰和公鑰是可靠的。這一點的話可以由受信任的CA機構來負責保證,因為這是要給錢的,花錢保平安~
  申請商用證書實質上就是把自己生成的公鑰等信息發給受信任的CA機構,由他們簽署數字簽名,這樣一份可靠的數字證書就誕生了。(私鑰不用發給CA,自己保存就好)

Ps:自簽名證書

  顧名思義,自己給自己的證書簽署數字簽名。自簽名證書中是沒有受信任CA機構的信息的,所以使用自簽名證書提供服務的時候,都會在瀏覽器上提示證書不安全之類的問題,這是因為瀏覽器無法在受信任的CA機構列表中找到證書中的CA機構信息,所以認為證書不安全。要想規避的話,只需將證書添加到受信任的CA機構列表中即可。但是要徹底解決的話,還是需要花錢去申請商用證書。
  自簽名證書的優點:不要錢;缺點:證書可能在傳輸途中被篡改。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM