區塊鏈技術與應用 BTC密碼學原理

2022-01-11 10:46:40 字數 2236 閱讀 3883

加密貨幣並不加密,區塊鏈上所有的交易內容都是公開的,包括賬戶位址,轉賬金額等。

cryptographic  hash  function

collision 指的是雜湊碰撞:如果x != y,hash(x) = hash(y),這就是雜湊碰撞,兩個不同的輸入算出的雜湊值是相等的,不可避免。因為無限的輸入對映到有限的輸出(256位的雜湊值只有2^256個輸出,但是輸入是無限的),按照鴿籠原理,必然有兩個輸入對映到同一輸出。

collision resistance並不是說不會出現雜湊碰撞,碰撞是客觀存在的。該性質是說沒有什麼高效的方法人為地去製造雜湊碰撞。除非是通過brute-force方式去遍歷所有輸入的可能性,看哪個雜湊值算出來正好相等。但是實際中這種方式不可行,因為輸入空間大,工作量大。

該性質作用:可以用來對乙個message求digest。比如有乙個message是m,它的雜湊值h(m)是digest.可以用來檢測對message的篡改。比如有人改了m的內容,它的雜湊值就會發生變化.該性質保證你找不到乙個m`,使得雜湊值h(m`) = h(m)。沒有辦法能夠篡改內容,而又不被檢測出來。

目前沒有哪個雜湊函式在數學上能夠證明collision resistance,該性質是證明不出來的,只能通過實踐中的經驗去證明。有一些雜湊函式以前認為是collision resistance,但是後來找到了製造雜湊碰撞的方法,比如md5.

雜湊函式計算過程是單項,不可逆的。

理想狀態下,給定x生成h(x),無法通過h(x)推出x。換句話說就是h(x)沒有洩露有關x的任何資訊。

想要知道輸入的資訊也是有辦法的,就是通過暴力演算法(brute-force),遍歷所有可能取值。

成立條件:1)輸入空間足夠大,使得蠻力求解的方法是不可行的  2)輸入分布均勻,各種取值的可能性都差不多

該性質作用:collision resistance 和 hiding 兩個性質結合實現 digital commitment / digital equivalent of a sealed envelope.

現實生活中,a sealed envelope的作用:假如有人能****,可以**第二天哪些**會漲停。要如何證明他**的是否準確?如果**結果提前公布,可能會影響**,所以**結果不能提前公開。但如果不提前公開,等到第二天**之後再公開,如何知道這個**結果是不是被篡改過?最後公開的結果是不是提前一天做出來的結果?這時候就可以用到 sealed envelope。把**結果寫到一張紙上,放到乙個信封裡,交給第三方公證機構保管,第二天再開啟驗證結果是否準確。

電子世界中,把**結果作為輸入,算出雜湊值並公開。因為hiding性質所以無法通過雜湊值算出**結果是什麼。然後第二天**之後把**結果公開,因為collision resistance性質所以這個結果不能被篡改,改的話雜湊值對不上。

為了保證輸入空間足夠大,分布更均勻,可以對x加鹽,然後對整體取雜湊值,h(x || nonce).

該性質為位元幣要求的性質,該性質說明雜湊值的計算事先是不可**的,很難猜出某個輸入的雜湊值是什麼,所以如果想要算出來的雜湊值在某個範圍之內,只能乙個個輸入去試,看哪個輸入的雜湊值是落在符合要求的範圍之內。事先不知道哪個輸入會算出某種hash值,只能去試。

block header中有nonce,「挖礦」就是不停地去試大量的nonce,使得h(block header) <= target ,沒有捷徑,同時保證了「工作量證明」(proof of work)機制.「挖礦難,但驗證易」.

位元幣中的雜湊函式使用的是sha-256(secure hash algorithm),符合上述三個性質.

中心化系統的賬戶管理方式:帶著證件去銀行開戶。

位元幣是去中心化的,開戶不依靠外界批准,在本地建立乙個公私鑰對(public key,private key),就是乙個賬戶,公鑰類似於銀行賬號 ,私鑰類似於銀行密碼。

公私鑰(public key,private key)對概念**於非對稱加密(asymmetric encryption algorithm),用公鑰加密,私鑰解密(接收方)

公私鑰對在位元幣中,主要是用作簽名。發布交易時,自己通過自己的私鑰對交易進行簽名,其他人通過自己的公鑰去驗籤。

出現兩個人公私鑰對相同的概率極小,可以忽略不計。

選取好的隨機源(a good source of randomness)生成公私鑰,簽名也要選取好的隨機源。

雜湊和簽名兩個性質可以結合使用。位元幣系統中,一般是對乙個message取乙個雜湊值,然後對這個雜湊值進行簽名。

公鑰私鑰關係:

私鑰簽名,公鑰驗證;公鑰加密,私鑰解密

區塊鏈技術 密碼學

1 對稱加密 用相同金鑰對原文進行加密和解密 加密過程 金鑰 原文 密文 解密過程 密文 金鑰 原文 缺點 無法確保金鑰被安全傳遞 2 非對稱加密 公鑰 私鑰,ras演算法 公鑰用於加密,私鑰用於解密。私鑰簽名,公鑰解簽名。公鑰由私鑰生產,私鑰可以推導出公鑰 從公鑰無法推導出私鑰 優點 解決了金鑰傳...

區塊鏈與密碼學

在學完大概了密碼學的知識,其實也只是看完了dan boneh的那本密碼學的書,現在開始密碼學與區塊鏈的結合學習,因為我自己是主要針對密碼學和區塊鏈的,但是去學習密碼學在區塊鏈上面的一些應用,就可以使得對密碼學有更深刻的了解,因為密碼學擁有很龐大的體系,所以我只能這樣去慢慢摸索。因為我有很多學習的內容...

區塊鏈技術與應用 BTC挖礦難度

挖礦就是不斷嘗試nonce,使整個block header中的雜湊值小於等於給定的目標閾值 target。h block header target。target越小,挖礦難度越大。調整挖礦難度,就是調整目標空間在整個輸出空間中所佔的比例。位元幣中的hash演算法是sha 256,整個輸出空間是2 ...