區塊鏈鼻祖比特幣之3:驗證訊息真偽的數字簽名
我們前面已經提到,當一筆交易發生以後,會傳播給比特幣網路上的所有節點,交易是否已經發生了。例如清華尹成將5個比特幣支付給小鄭後,資訊就傳播給其他人。就像在朋友圈大聲說我結婚了。
但是和微信的朋友圈不同的是,微信的朋友圈大家都是朋友,所以我相信這是你做的決定。比特幣網路是完全匿名的。所以那麼我怎麼知道是清華尹成將要完成這筆支付呢?這就涉及到對資料進行數字簽名。每一位所有者通過對前一次交易和下一位擁有者的公鑰(Public key) 簽署一個隨機雜湊的數字簽名,並將這個簽名附加在這枚電子貨幣的末尾,電子貨幣就傳送給了下一位所有者。而收款人通過對簽名進行檢驗,就能夠驗證該鏈條的所有者。
數字簽名是一種精巧的設計。對於一個賬戶來說,包含了兩個密碼。一個是私密,一個是公密。私密是隻能只有持有的,也就是說,私密表示了對於這一賬戶的唯一所有權。公密是所有的人都可以有的,用於驗證。
一個比特幣錢包中包含一系列的金鑰對,每個金鑰對包括一個私鑰和一個公鑰。私鑰(k)是一個數字,通常是隨機選出的。有了私鑰,我們就可以使用橢圓曲線乘法這個單向加密函式產生一個公鑰(K)。有了公鑰(K),我們就可以使用一個單向加密雜湊函式生成比特幣地址(A)。在本節中,我們將從生成私鑰開始,講述如何使用橢圓曲線運算將私鑰生成公鑰,並最終由公鑰生成比特幣地址。私鑰、公鑰和比特幣地址之間的關係如下圖所示私鑰就是一個隨機選出的數字而已。
一個比特幣地址中的所有資金的控制取決於相應私鑰的所有權和控制權。在比特幣交易中,私鑰用於生成支付比特幣所必需的簽名以證明資金的所有權。私鑰必須始終保持機密,因為一旦被洩露給第三方,相當於該私鑰保護之下的比特幣也拱手相讓了。私鑰還必須進行備份,以防意外丟失,因為私鑰一旦丟失就難以復原,其所保護的比特幣也將永遠丟失。比特幣私鑰只是一個數字。你可以用硬幣、鉛筆和紙來隨機生成你的私鑰:擲硬幣 256 次,用紙和筆記錄正反面並轉換為 0 和 1,隨機得到的 256 位二進位制數字可作為比特幣錢包的私鑰。該私鑰可進一步生成公鑰。
在上面的交易中,尹成的交易資訊在傳播給網路時,會附帶上尹成的數字簽名。我們知道了尹成的數字簽名幾乎不能夠得出尹成的私密。但是卻能夠通過尹成的公密來很容易的驗證到這是尹成發出的資訊,所以我認為這就是尹成本人無誤。是不是感覺很不可思議呢?一定都玩過數獨也就是9宮格遊戲吧。有時候我們很費勁的去得到數獨遊戲的解,但是我們可以卻很容易的去驗證結果是正確的。考慮一下這是100宮格,1000宮格呢?是不是得到結果很費勁,但是驗證結果卻很容易呢?將任何一串資料輸入到SHA256將得到一個256位的Hash值(雜湊值)。其特點:相同的資料輸入將得到相同的結果。輸入資料只要稍有變化(比如一個1變成了0)則將得到一個千差萬別的結果,且結果無法事先預知。正向計算(由資料計算其對應的Hash值)十分容易。逆向計算(俗稱“破解”,即由Hash值計算出其對應的資料)極其困難,在當前科技條件下被視作不可能。
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
相關文章
- 公鑰加密、數字簽名、訊息認證加密
- 區塊鏈鼻祖比特幣之7:區塊鏈在比特幣中的真正用意區塊鏈比特幣
- 區塊鏈鼻祖比特幣之11:比特幣困難度區塊鏈比特幣
- 區塊鏈應用丨倫敦大學學院利用比特幣區塊鏈驗證文憑真偽 打擊簡歷造假行為...區塊鏈比特幣
- 區塊鏈鼻祖比特幣之1:比特幣的內涵與價值區塊鏈比特幣
- Java 新增、驗證PDF 數字簽名Java
- 區塊鏈鼻祖比特幣之4:獨特交易設計區塊鏈比特幣
- 區塊鏈能解決你的文件和數字簽名難題嗎?區塊鏈
- 區塊鏈鼻祖比特幣之2:可分割與去中心化區塊鏈比特幣中心化
- 區塊鏈鼻祖比特幣之13:比特幣原始碼編譯詳解區塊鏈比特幣原始碼編譯
- 效能:驗證數字簽名導致卡死
- 區塊鏈鼻祖比特幣之9:挖礦、礦池與比特幣的產生區塊鏈比特幣
- win10 禁止驗證數字簽名方法 win10 如何禁用數字簽名Win10
- 區塊鏈鼻祖比特幣之10:merkle tree與spv節點區塊鏈比特幣
- 區塊鏈鼻祖比特幣之12:(SPV) 節點與Bloom 過濾器區塊鏈比特幣OOM過濾器
- 為什麼我對簽名訊息的簽名驗證在PHP程式碼中未工作?PHP
- 證書的數字簽名和認證 (轉)
- 區塊鏈鼻祖比特幣之5:獨特交易模式的優勢與困境解決區塊鏈比特幣模式
- 對稱加密、非對稱加密、RSA、訊息摘要、數字簽名、數字證書與HTTPS簡介加密HTTP
- .NET Core加解密實戰系列之——訊息摘要與數字簽名演算法解密演算法
- 區塊鏈鼻祖比特幣之6:詳解比特幣的密碼攻擊與分散式雙花攻擊區塊鏈比特幣密碼分散式
- 區塊鏈技術的領先的區塊鏈數字資產區塊鏈
- Android 安全加密:數字簽名和數字證書Android加密
- Android安全加密:數字簽名和數字證書Android加密
- 數字簽名
- 區塊鏈數字版權,區塊鏈數字藏品交易系統開發區塊鏈
- 網際網路安全之數字簽名、數字證書與PKI系統
- 比特幣和區塊鏈(2):比特幣中區塊鏈的實現比特幣區塊鏈
- 深入理解加密、解密、數字簽名和數字證書加密解密
- 英國政府試點區塊鏈保護數字證據區塊鏈
- 區塊鏈技術開發公司淺析利用區塊鏈溯源鑑別藝術品真偽區塊鏈
- Api介面簽名驗證API
- 使用Java在PowerPoint中新增、驗證或刪除數字簽名Java
- 數字簽名原理
- 區塊鏈鼻祖比特幣之8:分叉帶來的雙花支付、51%攻擊與解決辦法區塊鏈比特幣
- Java 獲取PDF數字簽名證照資訊Java
- 3月7號區塊鏈數字貨幣羊毛整理區塊鏈
- C# 獲取PDF中的數字簽名證書C#