1. 程式人生 > >加密、數字簽名和數字證書

加密、數字簽名和數字證書

對稱加密 非對稱加密 數字簽名 數字證書

加密、數字簽名和數字證書

1 對稱加密

對稱加密算法中,加密和解密使用的是同一個秘鑰,所以秘鑰的保護是非常重要的,對稱加密和解密過程如下圖:

  • 對稱算法加密過程

技術分享

  • 對稱算法解密過程

技術分享

盡管對稱秘鑰能夠滿足對內容的加密了,但是對稱算法還是存在以下兩個問題的。

1、秘鑰泄密風險:務端與客戶端彼此之間必須約定將使用的密鑰,而這個約定的過程本身就可能存在泄密的風險;

2、如果有100甚至更多的客戶端要向服務器發送文件。那麽,服務器可能需要有100多次約定密鑰的過程。

由此可見,無論是安全性還是可用性上,對稱密鑰都是存在問題的。而兩個問題則是必須解決的。

2 非對稱加密

非對稱算法加密和解密使用的是不同的秘鑰,加密算法有一對秘鑰,分別是公鑰和私鑰,公鑰是公開的,私鑰則是自己保管。

  • 非對稱算法加密過程

技術分享

  • 非對稱算法解密過程

技術分享

3 數字簽名和加密

加密是指對某個內容加密,加密後的內容還可以通過解密進行還原。 比如我們把一封郵件進行加密,加密後的內容在網絡上進行傳輸,接收者在收到後,通過解密可以還原郵件的真實內容。

簽名就是在信息的後面再加上一段內容,可以證明信息沒有被修改過。簽名一般是對信息做一個hash計算得到一個

hash值,註意,這個過程是不可逆的,也就是說無法通過hash值得出原來的信息內容。在把信息發送出去時,把這個hash值加密(使用非對稱算法的私鑰進行加密)後做為一個簽名和信息一起發出去。接收方在收到信息後,會重新計算信息的hash值,並和信息所附帶的hash(解密後)進行對比,如果一致,就說明信息的內容沒有被修改過,因為這裏hash計算可以保證不同的內容一定會得到不同的hash值,所以只要內容一被修改,根據信息內容計算的hash值就會變化。當然,不懷好意的人也可以修改信息內容的同時也修改hash值,從而讓它們可以相匹配,為了防止這種情況,hash值一般都會加密後(也就是簽名)再和信息一起發送,以保證這個hash值不被修改。

數字簽名解決了信息安全上面的不可抵賴性和不可篡改性問題。

4 數字證書

基於非對稱密鑰算法,Bob生成了一對公私鑰。Bob將公鑰發布在公開的密鑰庫中。而Alice在向Bob發送加密文件或者驗證Bob簽名的文件時,均要從公鑰庫取到Bob的公鑰。我們已經知道,一般來說公鑰就是一段固定長度的字符串,並沒有特定的含義。

為了讓Alice能夠方便的辨別公鑰,我們可以考慮對給公鑰附加一些信息,例如該公鑰使用的算法,該公鑰的所有者(主題),該公鑰的有效期等一系列屬性。這樣的數據結構我們稱作PKCS10數據包

技術分享

公鑰的主題我們采用唯一標示符(或稱DN-distinguished name),以盡量唯一的標示公鑰所有者。以下是基於抽象語法表示法所定義的PKCS10數據結構:

我們已經有了PKCS10數據包,除了公鑰信息外,還有公鑰的持有者,公鑰的版本號等信息。然而這樣的數據結構其實並沒有任何權威性。例如有一天一個叫做Richard的人想冒充Bob,也生成一對公私鑰,並且使用了相同的公鑰主題封裝為P10數據結構。Alice其實並沒有辦法分辨哪個是真實Bob的公鑰。

為了解決這個問題,就需要一個權威的第三方機構,對P10結構的數據進行認證。就如同對P10文件蓋上一個權威的章,防止仿照。這樣的權威機構,我們稱作CA(Certificate Authority)數字證書認證中心。而CA如何為P10數據蓋章呢?非常簡單,就是我們前文已經提到的數字簽名技術:

技術分享

① 如上圖所示,CA機構其實也持有一張私鑰。一般來說,CA會對這份私鑰進行特別的保護,嚴禁泄漏和盜用。

② Bob將自己的公鑰附加上一系列信息後,形成了P10數據包(請求包),並發送給CA

③ CA機構通過其他一些手段,例如查看Bob的身份信息等方式,認可了Bob的身份。於是使用自己的私鑰對P10請求進行簽名。(也可能會先對數據進行一些簡單修改,如修改有效期或主題等)

④ 這樣的簽名結果,我們就稱作數字證書。

數字證書同樣遵循一個格式標準,我們稱作X509標準,我們一般提到的X509證書就是如此。

5 基於數字證書發送文件過程

基於數字證書,我們可以再來看看Bob如何給Alice發送一份不可否認、不可篡改的文件:

技術分享

第一步:Bob除了對文件進行簽名操作外,同時附加了自己的數字證書。一同發給Alice

技術分享

第二步:Alice首先使用CA的公鑰,對證書進行驗證。如果驗證成功,提取證書中的公鑰,對Bob發來的文件進行驗簽。如果驗證成功,則證明文件的不可否認和不可篡改。


可以看到,基於數字證書後,Alice不在需要一個公鑰庫維護Bob(或其他人)的公鑰證書,只要持有CA的公鑰即可。數字證書在電子商務,電子認證等方面使用非常廣泛,就如同計算機世界的身份證,可以證明企業、個人、網站等實體的身份。同時基於數字證書,加密算法的技術也可以支持一些安全交互協議(如SSL)。


參考:https://yq.aliyun.com/articles/54155

加密、數字簽名和數字證書