區塊鏈基礎 1 密碼學基礎

2021-10-20 10:46:09 字數 2750 閱讀 4608

雜湊函式

雜湊函式是乙個數學函式,具有以下三個特性:

輸入為任意大小的字串

輸出大小固定,例如sha-256的輸出為固定256bit

對應n位輸入的字串,計算輸出的複雜度位o(n)

加密雜湊函式(cryptographic hash function)

加密雜湊函式是達到密碼安全的雜湊函式,要求具有以下三個附加特性:

碰撞阻力 collision resistance

如果無法找到兩個值 x

xx 和 y

yy ,x≠y

x\neq y

x​=

y,使得 h(x

)=h(

y)h(x) = h(y)

h(x)=h

(y),則稱雜湊函式h

hh 具有碰撞阻力。沒有高效的方法可以人為製造雜湊碰撞。

雜湊碰撞是存在的,因為輸入空間比輸出空間大(輸入的空間是無限的,輸出的空間是有限的),可以確定某乙個輸入會對應多個輸出,但找到碰撞需要通過大量的時間和算力,並不存在有效的方法。

隱秘性 hiding

雜湊函式計算過程單向,若僅僅知道雜湊函式的輸出 y=h

(x)y = h(x)

y=h(x)

, 無法通過 y

yy 倒推出 x

xx 的值。

謎題友好 puzzle friendly

沒有乙個解決策略比只是隨機地嘗試 x

xx 取值來求得給定 y

yy 更好。

安全雜湊演算法(secure hash algorithm 256)

簡稱sha-256,是在區塊鏈中常用的加密雜湊函式。

演算法具體實現可參考: sha-256 algorithm – encryption – bitcoinwiki

非對稱加密演算法是一種金鑰的保密方法,加密和解密過程用的是一對金鑰,這對金鑰分別稱為「公鑰」和「私鑰」。

數字簽名是非對稱加密的一種應用方式。

特性

只有自己可以製作自己的簽名,任何人都可以驗證其有效性

簽名只與被簽名的檔案有關,對其它檔案是無效的

演算法

本地產生公私鑰對,私鑰自己儲存,並用來簽名一段訊息,其它人可用公鑰驗證簽名

私鑰和訊息作為輸入,生成這段訊息的簽名

訊息、簽名和公鑰作為輸入,返回判定結果,驗證簽名真偽

簽名過程通過簡單公式表示,大概流程如下:

hash:    x =

hash

(data)

send:

c(x) and data

----

--- network --

----

-receive:

c(x) and data

verify:d(

c(x)

)= x =

hash

(data)

alice 需要轉 100 元電子貨幣給 bob。bob 需要一種手段,驗證該交易是來自 alice,且 alice 不能抵賴。

alice 寫好交易資訊 data: alice 給 bob 100 元電子貨幣。

alice 使用雜湊演算法生成交易資訊的雜湊值 x = hash(data)。

alice 通過通過隨機數生成器生成一對秘鑰,其中乙個作為公鑰 d,乙個作為私鑰 c。

alice 使用私鑰 c 對交易資訊 x 進行簽名,得到數字簽名 c(x)。

alice 使用網際網路將數字簽名 c(x) 和交易資訊 data 傳遞給 bob。

bob 使用公鑰 d,對數字簽名進行解密 d(c(x)) 得到交易資訊雜湊值 x。

bob 用公鑰 d 解密數字簽名 c(x) 的值得到交易資訊的雜湊值 x。

bob 用雜湊演算法生成交易資訊的雜湊值 hash(data)。

如果 bob 生成的交易資訊的雜湊值 hash(data) 等於 alice 生成的交易資訊的雜湊值 x ,那麼 alice 擁有私鑰,否則 alice 沒有私鑰。

如果 alice 抵賴,任何人都可重複 bob 的校驗步驟,並確認交易 data:alice 給 bob 100 元電子貨幣。

數字簽名以自己的私鑰加密,其它人可使用對應公開的公鑰進行驗證;檔案加密則是以對方的公鑰對檔案進行加密,對方接收到檔案後使用私鑰進行解密。

公鑰即身份,若簽名被公鑰正確驗證,可認為公鑰的所有者發表了這一條訊息,因為其必然擁有相應的私鑰,所以公鑰就是身份。乙個公鑰對應乙個位址,乙個人可以有任意多個賬戶位址,所以具有一定的匿名性。

但是存在如下問題:

同乙個人多個位址賬戶可能通過交易被找到規律並關聯;

位址賬戶與實體世界真實使用**入轉出)產生關聯,導致隱私洩露;

區塊鏈中所有的交易任何人都可以查到,並且所有的交易不可篡改,一旦某乙個交易暴漏了身份,則會造成一連串的資訊洩露。所以匿名性並不代表絕對的私隱性。

參考資料

歡迎打賞σ(っ°д°;)っ

區塊鏈的密碼學基礎

1 雜湊函式的三個重要的性質 a.collision resistance 什麼是collision?當x y但h x h y 這時就稱為乙個collision。什麼是collision resistance?比方說有個x1,他的雜湊值是h x1 但我們很難找出乙個x2來,使他的h x2 h x1 ...

區塊鏈 位元幣的密碼學基礎

位元幣主要用到的密碼學基礎就是cryptographic hash function,程式設計師應該都很熟悉hash函式,這裡還是簡單介紹一下。hash函式是把任意長度的輸入通過雜湊函式或者說是hash函式轉化為固定長度的輸出的一種演算法。這個輸入區間可以無窮大,但輸出區間是固定的。比如輸入可以是 ...

密碼學 密碼學基礎

密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...