最近一直在深入研究區塊鏈技術,才發現大多數人其實並不真正了解它的運作原理。哈希函數在這裡算是無名英雄——它們無處不在,從你的訊息應用到比特幣挖礦,但大多數人都只是略過它們。



所以事情是這樣的:哈希函數基本上是一種數學工具,能將任何數據轉換成固定長度的字串。神奇的地方在於?它是一條單向街道。你無法反向運算。輸入「讓我們學習區塊鏈」會得到77db72b12a7667ad73fd33544d1f397268dffe18ca3042e0a09af9f993a8f9c1。只要加上一個點,輸出就完全不同:17368fcb5bab73c97aa60aa7ae9e54e6676d292743587b9a35ace927a626520a。即使是微小的變化,也會產生截然不同的結果。這就是安全性所在。

為什麼這對加密貨幣很重要?比特幣挖礦就完全依賴它。礦工基本上是在比賽找出一個低於目標值的哈希值,方法是將區塊資料與隨機數(nonce)結合,並用SHA-256運算。第一個找到的人就贏得獎勵。而它的巧妙之處在於——每個區塊都透過其哈希值連結到前一個區塊,形成一條防篡改的鏈。如果有人試圖更改舊資料,哈希值就會改變,大家都會知道出問題了。

現在,市面上有不同的哈希演算法。MD5曾經很流行——產生128位元的輸出——但它有弱點。攻擊者可以產生「碰撞」,讓不同的輸入產生相同的輸出,所以在嚴肅的安全工作中已經不再使用。

接著是SHA-1,由NSA在1995年設計。它產生160位元的哈希,但後來被破解,並被更強的選項取代。

然後是SHA-2,這是一個演算法家族(SHA-224、SHA-256、SHA-384、SHA-512)。比特幣使用的是SHA-256,至今仍被認為非常安全。較長的輸出長度讓它比SHA-1更能抵抗暴力破解攻擊。

最新的則是SHA-3,於2015年由NIST發布。它基於Keccak演算法,採用所謂的「海綿結構」——基本上吸收輸入,然後擠出哈希。它的一個優點是能抵抗長度擴展攻擊,也就是有人試圖在不知道原始資料的情況下加入資料。以太坊實際上使用的是keccak-256,SHA-3的一個變體。甚至Nervos的CKB區塊鏈也推出了自己的SHA-3靈感算法,叫做Eaglesong。

但這裡有個問題——沒有任何哈希函數是完全防彈的。碰撞攻擊是可能的,也就是你可以產生兩個不同的輸入但得到相同的輸出。長度擴展攻擊讓攻擊者可以在不知原始資料的情況下加入資料。預映像攻擊則是找到一個符合特定哈希的輸入。生日攻擊利用概率找到匹配的哈希。還有側信道攻擊,利用函數實作的漏洞而非數學本身。

話雖如此,像SHA-256和SHA-3這些現代演算法,都是在設計時就考慮到這些攻擊向量。MD5和SHA-1?是的,它們已經很脆弱了。但新一代的演算法,基本上在現有技術下是無法破解的。這也是為什麼它們成為今天區塊鏈安全的基石。
BTC-1.32%
ETH-2.34%
CKB-3.24%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 打賞
  • 回覆
  • 轉發
  • 分享
回覆
請輸入回覆內容
請輸入回覆內容
暫無回覆