位元幣被稱為加密貨幣crypto-currency
區塊鏈上內容都是公開的,包括賬戶的地址,轉賬的金額,
位元幣主要用到了密碼學中的兩個功能:1.哈希2.簽名
1.哈希
密碼學中用到的哈希函式被稱為cryptographic hash function,它有兩個重要的性質:
①collision(這里指哈希碰撞) resistance
例如x≠y H(x)=H(y) 兩個不同的輸入,輸出卻是相等的,這就稱哈希碰撞,它是不可避免的,因為輸入空間遠遠大于輸出空間,給出x,很難找到y,除非蠻力求解(brute-force),
該性質的作用:對一個message求digest
比如message取m,m的哈希值是H(m)=digest,如果有人想篡改m值而H(m)不變,則無法做到,
哈希碰撞無法人為制造,無法驗證,是根據實踐經驗得來的,
②hiding 哈希函式的計算程序是單向的,不可逆的,(從H(x)無法推匯出x)
hiding性質前提是輸入空間足夠大,分布比較均勻,如果不是足夠大,一般在x后面拼接一個亂數,如H(x||nonce),
該性質的作用:和collision resistance 結合在一起,用來實作digital commitment(又稱為digital equivalent of a sealed envelope)
把預測結果作為輸入x,算出一個哈希值,講哈希值公布,hiding讓人們知道哈希值而不知道預測值,最后再將x公布,因為有collision resistance的性質,預測結果是不可篡改的,
這里肖老師舉了一個股票的例子,如下
某個人對某個股票進行漲停預測,我們如何保證能夠知曉其預測是否準確?最簡單的是提前公布,等待實際結果出現后驗證,但實際中,當提前發布預測后,可能會由于預測者本身對股市實際結果造成影響,所以,應該將提前將其寫于紙上并密封,交給第三方機構保管,等到實際結果出現后開啟密封與實際對比,這就是digital commitment,而第三方機構需要能夠使人信服,在實際生活中,有很多場景并不存在一個這樣的第三方機構,而區塊鏈技術正為此提供了一個很好的解決方法,
除了密碼學中要求的這兩個性質外,位元幣中用到的哈希函式還有第三個性質:
③puzzle friendly 指哈希值的預算事先是不可預測的,
假如哈希值是00…0XX…X,一樣事先無法知道哪個值更容易算出這個結果,還是要一個一個帶入,
位元幣挖礦的程序中實際就是找一個nonce,nonce跟區塊的塊頭里的其他資訊合一起作為輸入,得出的哈希值要小于等于某個指定的目標預值,H(block header)≤target,block header 指塊頭,塊頭里有很多域,其中一個域是我們可以設定的亂數nonce,挖礦的程序是不停的試亂數,使得block header取哈希后落在指定的范圍之內,
puzzle friendly是指挖礦程序中沒有捷徑,為了使輸出值落在指定范圍,只能一個一個去試,所以這個程序還可以作為作業量證明(proof of work),
挖礦很難,驗證很容易,(difficult to solve ,but easy to verify)
位元幣中用的哈希函式叫作SHA-256(secure hash algorithm )以上三個性質它都是滿足的,
2.簽名
在位元幣系統中開賬戶:
在本地創立一個公私鑰匙對(public key ,private key),這就是一個賬戶,公私鑰匙對是來自于非對稱的加密技術(asymmetric encryption algorithm),
兩人之間資訊的交流可以利用密鑰(encryption key),A將資訊加密后發給B,B收到后用密鑰解密,因為加密和解密用的是同一個密鑰,所以叫對稱加密,前提是有渠道可以安全地把密鑰分發給通訊的雙方,因此對稱加密的缺點就是密鑰的分發不方便,因為在網路上很容易被竊聽,非對稱密鑰是用一對密鑰而不是一個,加密用公鑰,解密用私鑰,加密和解密用的都是接收方的公鑰和私鑰,公鑰是不用保密的,私鑰要保密但是私鑰只要保存在本地就行,不用傳給對方,公鑰相當于銀行賬號,別人轉賬只要知道公鑰就行,私鑰相當于賬戶密碼,知道私鑰可以把賬戶上錢轉走,公鑰和私鑰是用來簽名,
假如A想向B轉10個位元幣,A把交易放在區塊鏈上,別人怎么知道這筆交易是A發起的呢?這就需要A要用自己的私鑰給交易簽名,其他人收到這筆交易后,要用A的公鑰去驗證簽名,簽名用私鑰,驗證用公鑰,用的仍然是同一個人的,創建賬戶產生相同公私鑰的可能性微乎其微,所以大量創建賬戶來竊取其他人賬戶是不可行的,
我們假設產生公私鑰時有一個好的隨機源(a good source of randomness),產生公私鑰是隨機的,如果隨機源不好,就有可能產生相同的公私鑰,位元幣中用的簽名演算法,不僅是生成公私鑰的時候要有好的隨機源,之后每一次簽名時也要有好的隨機源,只要有一次簽名用的隨機源不好的話,就有可能泄露私鑰,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/291381.html
標籤:區塊鏈
下一篇:普通人如何理解DAPP應用開發?
