數字簽名的目的:
完整性 確保數據在傳輸過程中沒有被篡改
身份認證 確保你收到的數據是對應的人員發送過來的
不可否認性 發送方不能否認簽名數據
數字簽名要素:
原文
摘要
證書
哈希算法:
md2、md5(128位散列值)、國密sm3(256位)
主要作用 將原來比較大的數據散列成較小的值
Hash,一般翻譯做"散列",也有直接音譯爲"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-p_w_picpath),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。
這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一確定輸入值(不能從散列值推算出原文)。
簽名數據包:
attached 版本、哈希算法、原文、摘要、證書、CRL
detached 版本、哈希算法、摘要、證書 (detached中不包括原文信息,原文信息需要通過其他方式發送給驗籤方)
raw裸籤 摘要 (裸籤中不包括原文和證書信息)
簽名驗簽過程:
1.首先client端利用哈希算法散列原文數據
2.然後利用自己的私鑰將散列值加密
3.client端將證書、原文、散列值發送給server端
4.server利用證書中的公鑰解密加密數據,得到散列值
5.然後利用同樣的哈希算法將原文散列,對比兩個散列值是否相同
數字信封的目的:
機密性 確保原文在加密後無法破解
解決了單獨使用對稱算法或非對稱算法加密的缺點
數字信封流程:
A先用由計算機隨機生成的一組一次使用的對稱密鑰—會話密鑰(Session Key)加密信息原文,形成密文,然後用B的公鑰對會話密鑰進行加密處理,並將加密的會話密鑰附在密文後一起發送給B;B在收到密文和加密的會話密文後,先用自己的私鑰對加密的會話密鑰解密,獲得會話密鑰,然後再用會話密鑰解密密文,最終獲得信息原文。