加密、數字簽名和數字證書
加密、數字簽名和數字證書
1 對稱加密
對稱加密算法中,加密和解密使用的是同一個秘鑰,所以秘鑰的保護是非常重要的,對稱加密和解密過程如下圖:
對稱算法加密過程
對稱算法解密過程
盡管對稱秘鑰能夠滿足對內容的加密了,但是對稱算法還是存在以下兩個問題的。
1、秘鑰泄密風險:務端與客戶端彼此之間必須約定將使用的密鑰,而這個約定的過程本身就可能存在泄密的風險;
2、如果有100甚至更多的客戶端要向服務器發送文件。那麽,服務器可能需要有100多次約定密鑰的過程。
由此可見,無論是安全性還是可用性上,對稱密鑰都是存在問題的。而兩個問題則是必須解決的。
2 非對稱加密
非對稱算法加密和解密使用的是不同的秘鑰,加密算法有一對秘鑰,分別是公鑰和私鑰,公鑰是公開的,私鑰則是自己保管。
非對稱算法加密過程
非對稱算法解密過程
3 數字簽名和加密
加密是指對某個內容加密,加密後的內容還可以通過解密進行還原。 比如我們把一封郵件進行加密,加密後的內容在網絡上進行傳輸,接收者在收到後,通過解密可以還原郵件的真實內容。
簽名就是在信息的後面再加上一段內容,可以證明信息沒有被修改過。簽名一般是對信息做一個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
加密、數字簽名和數字證書