位元幣與區塊鏈基本原理學習筆記之三 關於數字簽名

2021-08-19 01:55:34 字數 1120 閱讀 4913

"數字簽名"(digital signature)和"數字證書"(digital certificate)到底是什麼?

帳本和電子簽名,一本公共帳本是個很簡單的支付系統 , 協議看起來是這樣的,誰都能在帳本上新添行,每隔一段時間結算,然而這樣的公共帳本有乙個問題:既然誰都能新加一行,怎樣才能信任這些交易呢?這就涉及到了密碼學的第一點內容:電子簽名(而且其他人應當幾乎不可能偽造他的簽名)乍一看,電子簽名似乎是不可能的,在現實世界裡,你的手寫簽名,不管在什麼檔案上看起來都是一樣的,而在虛擬世界裡,不管這簽名用的是什麼資料,電腦都可以讀取並複製,那怎麼才能避免偽造呢。

大致可以猜到,要防止別人通過複製的方式把你的簽名用在其他地方,這需要你每次的簽名不一樣,而這又產生另外乙個問題,別人怎麼知道這是你的簽名,而且怎麼才能知道你籤了名的資訊沒被改過?

乙個精妙的辦法同時解決了這幾個問題:所有人都生成乙個「公鑰-私鑰對」(一串位元),「私鑰」又是也叫「金鑰」寫成sk,而公鑰寫成pk,顧名思義,金鑰是你自己要私藏保密的,公匙是公開的,你用你的私鑰和資訊,生成*數字簽名,生成的數字簽名會根據資訊的改變而改變,只是稍微改變一下資訊對應的簽名也會變得完全不同,生成簽名的函式,它的結果取決於資訊本身以及你的私鑰,私鑰確定只有你能給出那個簽名,而資訊能改變簽名。這就同時解決了防止別人通過複製的方式把你的簽名用在其他地方和防止別人更改你簽過名的資料的問題(不管是哪種情況,資訊都變了,對應的數字簽名也就變了,於是和你確認過的資訊的數字簽名就不一樣了)。

*注:這裡通過私鑰和資訊「生成」數字簽名的過程是通過雜湊函式實現的,在後面會提到。

問題還沒解決完,別人不知道你的私鑰,那又是怎麼知道你給的數字簽名是通過你的私鑰給出來的呢,這裡就用到了公匙,其他人就是同過簽名者給出的公匙來確認簽名者確實有私鑰的。

這個過程比較複雜,暫時就知道能這樣幹就好。

總結一下,數字簽名需要滿足的條件:

1.數字簽名需要證明該資訊經過了其本人確認。

2.要防止別人通過複製的方式把你的簽名用在其他地方。

3.要能知道你籤了名的資訊沒被改過。

滿足的方法是生成配套的私鑰和公匙,把私鑰和資訊作為自變數放入雜湊函式的到數字簽名,其他人通過公匙確認簽名者有私鑰。

區塊鏈 位元幣與區塊鏈學習

什麼是位元幣 位元幣是中本聰2009年提出的乙個點對點的數字加密貨幣系統。但是,這個定義背後的內涵和外延非常豐富。遠不是這一句話能夠概括的。我們可以從多種不同的視角,不同的方面,不同的層次去看它,看到不一樣的東西。打個比方,就像乙個建築物,可以從物理,力學,建築學,文化,社會等等角度去看它,都可以看...

Tensorflow實踐 基本原理學習和框架使用

tensorflow 是google大腦小組的工程師們開發的用於機器學習和深度神經網路方面的研究,它通過乙個資料流圖來進行計算。本文是對tensorflow社群資料進行學習和實踐,其中文社群還是很好的學習資源 一 基本概念 1 資料流程圖 data flow graphs 2 節點 nodes 圖中...

區塊鏈基本原理,Part 1 拜占庭容錯

拜占庭將軍問題引介 區塊鏈本質上是分布式系統,其中包含不同的參與者,基於各自動機和可用資訊行動。每當一筆新交易在網路中廣播出來,節點有權選擇將該交易納入其持有的賬本副本之中,或者將其忽略。當網路中的大部分參與者選定某一狀態之時,就能達成共識。分布式計算和多智慧型體系統的乙個基本問題是如何在一些錯誤流...