1. 程式人生 > 程式設計 >加密,簽名,證書那些事

加密,簽名,證書那些事

金鑰

金鑰就好比一把鑰匙,用於開啟網路安全的大門。 金鑰主要用於對資訊的加密,在現在網際網路如此發達的社會,越來越多的人在網路上進行交流,檔案傳輸,我們如何保證自己傳輸的資訊不會在中途被人篡改,如何保證我們傳輸的資訊只能被對方看到, 這就是今天討論的主題金鑰的作用。 金鑰又分為對稱金鑰和非對稱金鑰,對稱金鑰是指加密和解密使用的金鑰是同一個,非對稱金鑰是指加密和解密使用不同的金鑰,通常稱為公鑰和私鑰,私鑰自己儲存,公鑰會公佈出去,當別人想傳輸資訊給你時,可以使用你釋出出去的公鑰進行加密,然後當你接收到訊息後可以使用自己儲存的私鑰進行解密。 對於非對稱加密的方式需要注意的是,公鑰和私鑰一定是成對使用的,即使用私鑰加密,只能使用公鑰進行解密,或者使用公鑰進行加密,只能使用私鑰進行解密,不能使用同一個金鑰既進行加密又進行解密。

常用加密演演算法

想要完成加密解密只使用金鑰是不夠的,還有一個更重要的就是加密演演算法,根據前面提到的兩種加密方式:對稱加密和非對稱加密,加密演演算法也可以分為對稱加密演演算法和非對稱加密演演算法,除此之外還有一種是單向加密演演算法,下面讓我們詳細下不同的加密演演算法,以及它們的區別,我們又該如何選取合適的加密演演算法。 由於加密演演算法有很多種,這裡只會挑選一些常用的演演算法進行對比介紹。

單向加密

單向加密是一種不可逆的加密,即不能從加密後的資訊中再得到原文。 常用的單向加密演演算法有:MD5、SHA、HMAC等。

對稱加密演演算法

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

非對稱加密演演算法

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

加密演演算法的選擇

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

  • 加密速度 非對稱加密演演算法的執行速度比對稱加密演演算法的速度慢很多,所以當需要加密大量的資料時,建議採用對稱加密演演算法,來提高加密速度。

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

  • 金鑰的管理 對稱加密演演算法,由於加密解密都是使用相同的金鑰,因此如何保證金鑰的安全性就特別重要,所以如何要加密的資料量很小時,一般就優先考慮使用非對稱加密演演算法。

  • 金鑰位數 一般來說,金鑰越長,執行的速度就越慢,應該根據的我們實際需要的安全級別來選擇,一般來說,RSA建議採用1024位的數字,ECC建議採用160位,AES採用128為即可。

    在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演演算法管理對稱演演算法的金鑰,然後用對稱加密演演算法加密資料,這樣我們就集成了兩類加密演演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理金鑰的優點。

加密解密

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

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

想象一下下面的場景,朋友發微信跟你借錢,你會把錢直接轉過去嗎? 現在騙子那麼多,多少人慘痛的經驗高所我們一定要打電話給你的朋友確認一下是不是他本人。在網路上傳輸資訊也是一樣的,你怎麼知道資訊不會被別人篡改過呢,這時候簽名就應運而生了。 數字簽名,就是傳送者根據待傳送的資訊和用自身私鑰加密的資訊摘要組合成數字簽名,使用者採用自己的私鑰對資訊加以處理,由於金鑰僅為本人所有,這樣就產生了別人無法生成的檔案,也就形成了數字簽名。

資訊摘要

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

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

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

數字證書

在上述使使用簽名的流程中,由於公鑰是公開的,並且可以自行匯入到電腦,如果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…