EXGO學院|第11課:區塊鏈中的密碼學(上)

我們之前講過,區塊鏈的四大核心技術分別是密碼學、分佈式帳本、共識機制、以及智能合約。而密碼學又是其中最重要的一部分,因為密碼學保護區塊鏈體系的安全,它可以說是區塊鏈的基石,其他技術正是以此為基礎,才搭建出區塊鏈這座高樓大廈。

區塊鏈主要應用的密碼學有兩個部分,一個是哈希演算法,另一個是非對稱加密。而這節課,我們主要講一下,區塊鏈密碼學中的“哈希演算法”是什麼?

簡單來說,哈希演算法就是一種特殊的函數,不論我輸入多長的一串字元,只要通過這個函數,都可以得到一個固定長度的輸出值。就好比我們的身份證號碼一樣,無論你是北京人、還是上海人,每個人的身份證號碼都是18位而且全國唯一。

同理,哈希實際也是一種壓縮映射,它可以把任意長度的輸入變換成固定長度的輸出。永遠都是固定256比特的長度。這個得到的輸出值就叫做哈希值。

哈希演算法有三個特點,分別是單向性、抗篡改和抗碰撞,它們賦予了區塊鏈不可篡改、匿名等特性,並保障了整個區塊鏈體系的安全。

先說第一個特點,單向性。所謂的單向性,就是指在哈希函數中,由輸入可以得到輸出,但通過輸出卻幾乎不可能反推回輸入。比如,我們輸入已知字串 A ,得到哈希值是F(A),但是我們通過這個哈希值F(A),卻沒有辦法反推回來得到我們輸入的數據。

區塊鏈在數據打包成區塊的過程中,數據都會通過哈希演算法進行加工,正是基於哈希演算法的單向性,區塊鏈才有效保護了我們資訊的安全性。

哈希演算法的第二個特點是抗篡改能力。所謂的抗篡改能力就是指,對於任意一個輸入,哪怕是很小的改動,比如一個標點符號,其哈希值的變化也會非常大。

它的這個特性在區塊與區塊的連接中,就起到了關鍵性的作用。

區塊鏈的每一個區塊,都會以上一個區塊的哈希值作為標識,通過哈希演算法再進行加工,這樣後面區塊不僅可以查找到前面的所有區塊,也可以驗證前面區塊數據有沒有被更改,除非有人能破解整條鏈上的所有哈希值,否則,數據一旦記錄在鏈上,就不可能被篡改。

哈希演算法的第三個特點是抗碰撞能力。所謂碰撞,就是輸入兩個不同的數據,最後得到了一個相同的輸出結果,就跟我們逛街時候撞衫一樣。

而抗碰撞,就是對於大部分的輸入,都能得到一個獨一無二的輸出。注意,這裏只能說出現碰撞的概率極低,但不意味著不存在碰撞,因為現存的任何一種哈希演算法在概率學上都是無法證明不會發生碰撞的。

哈希演算法的第三個特點主要應用在區塊鏈的帳戶地址中,在區塊鏈的世界中,任何一筆交易或者帳戶的地址都是完全依託於哈希演算法生成的,這樣做的目的就是保證交易或者帳戶地址在區塊鏈網路中的唯一性,無論我這筆轉賬轉了多少錢或轉給了多少個人,在區塊鏈這個大帳本中都是唯一的存在。

總的來說,哈希演算法在區塊鏈技術中是最基礎的存在,它就像是我們體內的白細胞,不僅區塊鏈的每個部分都離不開它,而且它還賦予了區塊鏈種種特點,保護著整個區塊鏈體系的安全。

Updated on: 27/07/2023