數字簽名原理及其應用

2021-08-02 23:54:57 字數 2427 閱讀 9672

簽名的作用簡單來說就是證明某個檔案上的內容確實是我寫的/我認同的,別人不能冒充我的簽名(不可偽造),我也不能否認上面的簽名是我的(不可抵賴)。

我們知道,手寫簽名之所以不能偽造,是因為每乙個人的筆跡都是獨一無二的,即使模仿,也可以通過專家鑑定分別出來。而不可抵賴,是因為每個人的筆跡都有固定特徵,這些特徵是很難擺脫的。

正是這兩點特性使得手寫簽名在日常生活中被廣泛承認,比如簽合同、借條等等。

而數字簽名,它的作用跟手寫簽名其實是類似的,用來證明某個訊息或者檔案是本人發出/認同的。我國在2023年就已經施行《電子簽名法》,確立了電子簽名(包括但不限於數字簽名)的法律效力。

那麼數字簽名又是靠什麼保證不可偽造和不可抵賴兩個特性呢?

答案是利用公鑰加密系統。常用的簽名演算法有

其中rsa是上述幾個演算法中最容易實現數字簽名的。

數字簽名的要求是,只有我自己能籤我的名字,其他人能驗證我的簽名,但是不能偽造我的簽名。

我們知道,公鑰加密系統裡面,使用公鑰加密,就可以使用私鑰來解密;使用私鑰加密,也可以使用公鑰來解密。訊息加密利用的是前者,數字簽名利用的是後者。

用私鑰對訊息進行加密,得到密文,其實就是乙個簽名的過程。因為私鑰顧名思義是私密的,而且是唯一的,只有我自己知道,別人無法在不知道我的私鑰的情況下模仿我的簽名(不可偽造)。而公鑰是公開的,其他人可以很容易地使用公鑰去嘗試解密生成的密文,然後就可以知道這個簽名是不是我籤的(不可抵賴)。

當然,在數字簽名的過程中,對原文的保密性沒有要求,所以加密、解密這樣的名詞在這個場景中並不準確,用簽名解籤會更合適。

實際應用中,由於直接對原訊息進行簽名有安全性問題,而且原訊息往往比較長,直接使用rsa演算法進行簽名速度會比較慢,所以我們一般對訊息計算其摘要(比如sha-256等),然後對摘要進行簽名。只要使用的摘要演算法是安全的(md5、sha-1已經不安全了),那麼這種方式的數字簽名就是安全的。

乙個具體的簽名過程如下:

小明對外發布公鑰,並宣告對應的私鑰在自己手上

小明對訊息m計算摘要,得到摘要d

小明使用私鑰對d進行簽名,得到簽名s

將m和s一起傳送出去

驗證過程如下:

接收者首先對m計算摘要,得到d』

使用小明公鑰對s進行解籤,得到d

如果d和d』相同,那麼證明m確實是小明發出的,並且沒有被篡改過

手寫簽名可以用來簽合同,那麼數字簽名可以用來幹什麼呢?

「簽名演算法」一欄可以看到,它使用的是sha256rsa,也就是使用sha-256計算摘要,然後使用rsa對摘要進行簽名。而在「公鑰」一欄則儲存著該證書的「本體」,用於驗證簽名的rsa公鑰。

而除此之外,還有個地方我們經常碰到數字簽名的——**簽名。

如果windows上的可執行程式程式**於正規公司,那麼通常它會有**簽名,用於確保其**可靠且未被篡改。以qq為例,它的數字簽名是這樣的。

如果某個程式沒有數字簽名,那麼它的安全性往往就沒***;如果它有數字簽名,但是顯示「此數字簽名無效」,那麼這個程式要麼被篡改了要麼損壞了,不管哪種都不應該嘗試執行它。

但是數字簽名不是萬能的。事實上不管是瀏覽器的數字簽名還是**的數字簽名,都依賴於系統或者瀏覽器內建的根證書(公鑰),如果電腦本身已經中毒或者被入侵,那麼這些根證書可以被輕易新增或者修改,這時的數字簽名的安全性可以說是蕩然無存了。

即使是簽名有效的軟體,並不能保證簽名的公司不耍流氓,因為申請合法證書的門檻其實並不高,很多流氓軟體都是由一些不知名的小公司搞出來的;或者某些小公司篡改知名軟體,加入自己的**,然後將原來的簽名替換成自己的簽名,這些數字簽名在系統看來也是有效的,但是我相信你不會想執行這些軟體的。如果對安全性要求比較高,可以手動或者借助工具吊銷那些不太安全的根證書,具體方法已經超出本文討論範疇,讀者可以自行尋找。

位元幣是一種匿名的數字貨幣,它的身份認證是基於ecdsa。位元幣的賬戶位址就是對公鑰等資訊計算摘要得到的,向全世界公布。位元幣賬戶位址不包含你的個人資訊(姓名、住址、**號碼之類的),確認你是賬戶擁有者的唯一辦法就是看你有沒有賬戶對應的私鑰。如果賬戶私鑰丟失,那麼你將永遠地失去裡面的錢;一旦私鑰被黑客盜取,賬戶裡面的錢就完全歸黑客所有。

microsoft technet: digital signatures

wikipedia: digital signature algorithm

wikipedia: elliptic curve digital signature algorithm

數字簽名的原理及其應用

出自 shusheng007 我們日常都親自簽過各種名,例如你和你的公司簽訂勞動合同時候會簽上你自己的名字。那這個簽名有什麼用呢?對於公司來說就是將來開除你的時候可以讓你不可抵賴。當然合同條款都是不允許塗改的,不然就得重寫,這個用來保證合同的不可偽造性。數字簽名和這個類似,是用來保證一段資訊不可偽造...

數字簽名原理

數字簽名是一種確保資料完整性和原始性的方法。數字簽名可以提供有力的證據,表明自從資料被簽名以來資料尚未發生更改,並且它可以確認對資料簽名的人或實體的身份。數字簽名實現了 完整性 和 認可性 這兩項重要的安全功能,而這是實施安全電子商務的基本要求。當資料以明文或未加密形式分發時,通常使用數字簽名。在這...

數字簽名原理

數字簽名是一種確保資料完整性和原始性的方法。數字簽名可以提供有力的證據,表明自從資料被簽名以來資料尚未發生更改,並且它可以確認對資料簽名的人或實體的身份。數字簽名實現了 完整性 和 認可性 這兩項重要的安全功能,而這是實施安全電子商務的基本要求。當資料以明文或未加密形式分發時,通常使用數字簽名。在這...