數字簽名在不暴露私鑰的前提下就可以證明私鑰擁有者對特定信息的認可或授權,它是對加密貨幣所有權的證明。

原文標題:《數字簽名,證明幣是你的》
撰文:黃世亮

數字簽名這個概念在幣圈非常重要,無數的知識點都建立在這個概念之上。我跟很多人解釋過它。今天寫一篇短文,以後一定會用得上。

數字簽名的作用

我們用筆簽名,用蓋章來證明自己認可和授權某份文件,他人用辨認筆跡和印章來確認文件得到了你的認可和授權。

數字簽名是在數字世界裏,證明你(簽名者)認可和授權某些交易或數據,而他人(驗證者)可以驗證你的認可和授權,的過程。

數字簽名的可靠性來源

用筆簽名的可靠性來自筆跡很難被模仿。用蓋章的可靠性來自印章是受法律保護,私自刻章是違法的。簽名和蓋章後一般還會用印上指紋,人的指紋是有唯一性,每個人都不一樣。

數字簽名的可靠性在於加密技術,這是一整套基於數學基礎構建的方法論。要完整理解其數學原理比較難,需要閱讀大量的專業書。非專業人士,能夠簡單理解背後的原理就夠了。

對稱和非對稱加密

對稱性加密是加密和解密都採用同一個密鑰。

一般對稱性加密需要交流者事先在某種安全的前提下約定好密鑰,再做祕密通信。

明文+密鑰 = 密文

密文+密鑰 = 明文

非對稱性加密是加密和解密採用不同的密鑰,加密用的密鑰稱爲公鑰,解密用的密鑰稱爲私鑰。

如果你把一段信息採用非對稱性加密的方式給小明看,那就用小明的公鑰來加密這段信息,形成密文發給小明。小明收到密文後,用小明自己的私鑰解密。

非對稱性加密就不需要祕密通信的雙方事先在保密的前提下交換密鑰,交換公鑰是不需要保密的。

私鑰是可以按數學方式推導出公鑰,但公鑰是無法推導出私鑰。所以公鑰可以公開,但私鑰不能。

明文+公鑰(接收祕密人的公鑰)= 密文

密文+私鑰(接收祕密人的私鑰)= 明文

這裏說的非對稱加密是用來祕密通信。

數字簽名

非對稱性加密也可以用來在不泄露私鑰的前提下,證明私鑰所有權,這就是數字簽名。

現在有一段信息(message),這段信息可以是任意的;你的私鑰(private key)和對應的公鑰(public key)。

還有一個簽名算法 Fsig,這是一個數學函數。對應的還有一個驗證簽名的算法 Gver

數字簽名就是將私鑰(pri)和信息 (mes)帶入到簽名算法,FSig(pri, mes),這就可以得出一個簽名結果 sig,是一串數據。

驗證過程就是驗證者將簽名結果 sig,和你的公鑰(pub),帶入到驗證算法,Gver(sig, pub),驗證算法計算的結果要麼是正確(True),要麼是錯誤(False)。如果結果爲正確,則說明此簽名結果 sig 是由該公鑰(pub)對應的私鑰(pri)簽名出來的。如果是錯誤,則說明不是。

條件:信息(mes),簽名者私鑰(pri),簽名者公鑰(pub)

簽名:FSig(pri, mes)= sig

驗證:Gver(sig,pub) = True or False

這就是數字簽名,在不需要暴露私鑰的前提下就可以證明私鑰擁有者對特定信息的認可或授權。

比特幣交易裏的簽名

通常每一筆比特幣交易都有一個簽名,以證明發送交易的人是有權限動用這筆幣。這個簽名就是使用發送者的私鑰(pri)。

比特幣交易簽名用的信息(mes) 一般會由交易版本,前置哈希,輸出,金額……大約 10 項內容構成。

簽名就是 FSig(pri,mes),得出一個簽名結果 sig,sig 和交易的其他組成部分共同組成一個數據叫交易,廣播到比特幣網絡。

當交易發出去之後,錢包,特別是挖礦節點會對這筆交易進行驗證,其中就要對上述簽名結果進行驗證,要拿發送者的公鑰(pub)和簽名信息 (mes)進行驗證,Gver (sig,pub),通過驗證,則交易合法。否則交易不合法。