加密,簽名,證書那些事

密鑰

密鑰就比如一把鑰匙,用於打開網絡安全的大門。 密鑰主要用於對信息的加密,在如今互聯網如此發達的社會,愈來愈多的人在網絡上進行交流,文件傳輸,咱們如何保證本身傳輸的信息不會在中途被人篡改,如何保證咱們傳輸的信息只能被對方看到, 這就是今天討論的主題密鑰的做用。 密鑰又分爲對稱密鑰和非對稱密鑰,對稱密鑰是指加密和解密使用的密鑰是同一個,非對稱密鑰是指加密和解密使用不一樣的密鑰,一般稱爲公鑰和私鑰,私鑰本身保存,公鑰會公佈出去,當別人想傳輸信息給你時,可使用你發佈出去的公鑰進行加密,而後當你接收到消息後可使用本身保存的私鑰進行解密。 對於非對稱加密的方式須要注意的是,公鑰和私鑰必定是成對使用的,即便用私鑰加密,只能使用公鑰進行解密,或者使用公鑰進行加密,只能使用私鑰進行解密,不能使用同一個密鑰既進行加密又進行解密。算法

經常使用加密算法

想要完成加密解密只使用密鑰是不夠的,還有一個更重要的就是加密算法,根據前面提到的兩種加密方式:對稱加密和非對稱加密,加密算法也能夠分爲對稱加密算法和非對稱加密算法,除此以外還有一種是單向加密算法,下面讓咱們詳細下不一樣的加密算法,以及它們的區別,咱們又該如何選取合適的加密算法。 因爲加密算法有不少種,這裏只會挑選一些經常使用的算法進行對比介紹。安全

單向加密

單向加密是一種不可逆的加密,即不能從加密後的信息中再獲得原文。 經常使用的單向加密算法有:MD五、SHA、HMAC等。微信

對稱加密算法

常見的對稱加密算法:DES、3DES、AES等。網絡

非對稱加密算法

常見的非對稱加密算法:RSA、DSA、ECC等。函數

加密算法的選擇

對於加密算法的選擇主要從一下角度進行考慮:加密

  • 加密速度 非對稱加密算法的運行速度比對稱加密算法的速度慢不少,因此當須要加密大量的數據時,建議採用對稱加密算法,來提升加密速度。.net

  • 使用限制 簽名只能使用非對稱加密算法。3d

  • 密鑰的管理 對稱加密算法,因爲加密解密都是使用相同的密鑰,所以如何保證密鑰的安全性就特別重要,因此如何要加密的數據量很小時,通常就優先考慮使用非對稱加密算法。cdn

  • 密鑰位數 通常來講,密鑰越長,運行的速度就越慢,應該根據的咱們實際須要的安全級別來選擇,通常來講,RSA建議採用1024位的數字,ECC建議採用160位,AES採用128爲便可。blog

    在實際的操做過程當中,咱們一般採用的方式是:採用非對稱加密算法管理對稱算法的密鑰,而後用對稱加密算法加密數據,這樣咱們就集成了兩類加密算法的優勢,既實現了加密速度快的優勢,又實現了安全方便管理密鑰的優勢。

加密解密

以下圖所示,是一個典型的使用非對稱加密算法的流程:

數字簽名(私鑰用於簽名,公鑰用於驗證)

想象一下下面的場景,朋友發微信跟你借錢,你會把錢直接轉過去嗎? 如今騙子那麼多,多少人慘痛的經驗高所咱們必定要打電話給你的朋友確認一下是否是他本人。在網絡上傳輸信息也是同樣的,你怎麼知道信息不會被別人篡改過呢,這時候簽名就應運而生了。 數字簽名,就是發送者根據待發送的信息和用自身私鑰加密的信息摘要組合成數字簽名,用戶採用本身的私鑰對信息加以處理,因爲密鑰僅爲本人全部,這樣就產生了別人沒法生成的文件,也就造成了數字簽名。

信息摘要

在前面介紹數字簽名時提到一個概念叫信息摘要(數字摘要),在生成不使用待發送的消息直接生成數字簽名,而是先生成信息摘要,而後使用信息摘要來生成數字簽名呢?

  • 待發送的信息長度是不定的,信息的長度決定的簽名的速度,而生成信息摘要後長度是固定的,因此能夠很好的解決簽名效率問題。
  • 消息摘要函數是無陷門的單向函數,即只能進行正向的信息摘要,而沒法從摘要中恢復出任何的消息,甚至根本就找不到任何與原信息相關的信息。

以下圖所示,是一個典型的使用簽名的流程:

數字證書

在上述使使用簽名的流程中,因爲公鑰是公開的,而且能夠自行導入到電腦,若是C進入B的電腦,把A的公鑰換成本身的公鑰,C就能夠冒充A給B發送信息。那B如何保證使用的是A的公鑰呢, 這時就須要數字證書來幫忙了。 數字證書主要用於鑑別密鑰,一般將公鑰放到證書裏傳輸。

數字證書不是隨便本身就能生成的,而是須要又專門的認證中(Certificate Authority, 簡稱CA)進行頒發。 認證中心會使用本身的私鑰對A的公鑰和一些相關信息一塊兒加密,生成數字證書。下圖展現了一個數字證書包好的一些內容:

參考文檔

blog.csdn.net/tianlang519…

blog.csdn.net/lovelichao1…

www.jianshu.com/p/4932cb149…

www.jianshu.com/p/8a55423f2…

相關文章
相關標籤/搜索