數字簽名:數字簽名被認為是對手寫簽名的數字化模擬。
手寫簽名的重要特徵為:
1、自己的簽名只有自己可以製作;
2、自己的簽名可以由其他任何人驗證有效性;
3、自己的簽名只對某一特定文件發生聯繫,不能用於支持其他文件;
在說明數字簽名之前,需要了解密碼學的一些基本概念:
明文:消息的初始形式
密文:加密後的形式
密鑰:指某個用來完成 加密、 解密、完整性驗證等密碼學應用的祕密 信息。
如果我們將明文記為P,密文記為C,密鑰記為K,加密算法記為E,解密算法記為D,則C=E(P),P=D(C);則要求密碼系統滿足P=D(E(P))。
對稱加密以及非對稱加密:
對稱加密算法指的是在加密和解密的時候使用的是同一個祕鑰,同一個密鑰可以同時用作信息的加密和解密。
需要密鑰的加密算法記為:C=E(K,P),並且P=D(K,E(K,P))。
其工作過程如圖所示:
而非對稱加密算法則需要不同的兩個密鑰來進行加密和解密,這兩個密鑰一般分別叫做公鑰和私鑰。
加密與解密的密鑰不同,則:P=D(KD,E(KE,P))。公鑰和私鑰成對出現,是通過某一種加密算法得到一個密鑰對,公鑰是密鑰對中公開的部分,私鑰則是非公開的部分。使用這個密鑰對的時候,如果用其中一個密鑰加密一段數據,必須用另一個密鑰解密。比如用公鑰加密數據就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會成功。
其工作過程如圖所示:
步驟1-3
步驟1: A通過隨機算法,生成一對密鑰,有公鑰和私鑰;
步驟2:A將公鑰公開,分別發給B,C,D;
步驟3:B想給A發送一條信息,首先用A的公鑰對這條信息加密,然後將加密後的信息(密文)傳播給A,A在接收到信息之後,用自己的私鑰進行解密,從而得到B給A的信息原文。
那麼數字簽名,就是隻有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。數字簽名的生成和使用過程如下圖所示:
步驟4-5
步驟4:A將要發送的信息通過哈希運算,得到摘要,並用私鑰進行加密,生成這個信息的數字簽名。
步驟5:A將所要發送的信息和數字簽名同時發送給B,B利用A的公鑰來對此數字簽名解密,從而確定該信息的確來自A。另外,B通過對A發送的信息進行哈希運算得到的摘要與解密得到的摘要進行對比,可以確定該信息是否被篡改過。