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