數(shù)字簽名(digital signature)又稱公鑰數(shù)字簽名,是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現(xiàn),用于鑒別數(shù)字信息的方法。數(shù)字簽名不是指將簽名掃描成數(shù)字圖像,或者用觸摸板獲取的簽名,更不是落款。
在說明數(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ā)送者才能產生的別人無法偽造的一段數(shù)字串,這段數(shù)字串同時也是對信息的發(fā)送者發(fā)送信息真實性的一個有效證明。數(shù)字簽名的生成和使用過程如下圖所示:
步驟4-5
步驟4:a將要發(fā)送的信息通過哈希運算,得到摘要,并用私鑰進行加密,生成這個信息的數(shù)字簽名。
步驟5:a將所要發(fā)送的信息和數(shù)字簽名同時發(fā)送給b,b利用a的公鑰來對此數(shù)字簽名解密,從而確定該信息的確來自a。另外,b通過對a發(fā)送的信息進行哈希運算得到的摘要與解密得到的摘要進行對比,可以確定該信息是否被篡改過。
一套數(shù)字簽名通常定義兩種互補的運算,一個用于簽名,另一個用于驗證,但法條中的電子簽章與數(shù)字簽名,代表之意義并不相同,電子簽章用以辨識及確認電子文件簽署人身份、資格及電子文件真?zhèn)握摺6鴶?shù)字簽名則是以數(shù)學算法或其他方式運算對其加密,才形成的電子簽章,意即并非所有的電子簽章都是數(shù)字簽名。
數(shù)字簽名了的文件的完整性是很容易驗證的,而且數(shù)字簽名具有不可抵賴性(即不可否認性),不需要筆跡專家來驗證。
數(shù)字簽名實現(xiàn)方法
數(shù)字簽名算法依靠公鑰加密技術來實現(xiàn)的。在公鑰加密技術里,每一個使用者有一對密鑰:一把公鑰和一把私鑰。公鑰可以自由發(fā)布,但私鑰則秘密保存;還有一個要求就是要讓通過公鑰推算出私鑰的做法不可能實現(xiàn)。
普通的數(shù)字簽名算法包括三種算法:
一種密碼生成算法
標記算法
驗證算法
rsa,eigamal,dsa,ecdsa,rabin 等算法可以實現(xiàn)數(shù)字簽名。
做好SEO需要先了解哪些知識微信小程序?能力升級:增加錄音、拍攝、音視頻播放等多媒體功能什么是網站推廣?如何做好網站推廣?模板網站與量身定做網站優(yōu)缺點分析善從營銷角度思考網站建設工作即可事半功倍網站建設的WEB標準怎樣設計才能讓一個音樂APP看起來比較-佛山APP開發(fā)如何讓你的網站更具個性?