close

區塊鏈作為比特幣的基礎技術,隨著應用開始廣泛,市場已經了解到它是由密碼學與共識機制等技術建立與儲存交易資料的區塊串鏈,當中共識機制部份己有不少文章提及,但密碼學部份則較複雜,較少文章談及。

在落筆暢論區塊鏈的加密演算法之前,先簡短介紹密碼學的歷史。目前已知最早的密碼是在公元前 1900 年,在 20 世紀 70 年代之前密碼學大部分都是國防安全範疇;被譽為電腦科學與人工智能之父的 Alan Turing,這位數學家同時亦是密碼分析家,在二次大戰時協助英國海軍進行密碼分析,期間他設計加速破解德國密碼機 Enigma 的技術,成功破解截獲的編碼訊息,助盟軍在二次大戰中擊敗德軍。而他提出的 Turing machine 就是現代電腦的基礎。

密碼學直至美國國家標準局在 70 年代制定數碼加密標準,同時公開 RSA 加密演算法,學術界才開始作出大量研究,使密碼學在公眾領域廣泛使用。

區塊鏈所採的密碼學,就是現代應用密碼學。區塊鏈廣為人知的應用是比特幣,所採用的加密演算法是 SHA-256,是 SHASecure Hash Algorithm)家族的其中一員,這個演算法是由美國國家安全局設計,並由美國國家標準與技術研究院發佈,是美國的政府標準。這個家族於 1993 年首次發佈,而比特幣所採用的 SHA-256 則在 2001 年發佈。屬於密碼散列函數(cryptographic hash functions)。

掘礦的朋友應該對這個 hash functions 不會陌生,掘礦的原理是將一堆比特幣交易歸為一個區塊,然後反覆執行 Hash 幾十億次,直至有人找到一個目標 Hash 值,令該區塊被開採成為比特幣區塊鏈的一部份。

SHA-256 是將任何訊息轉化為 64 個字母,而這個轉化是單向的。例如將「blockchainsolutions」轉化為 hash 將會是一串 64 個字母,但將同一串字母再作轉化,只會是另一串 64 個字母,而不會取回「blockchainsolutions」。而將「Blockchainsolutions」作轉化,雖然分別只有 B 是大楷,但 Hash 則會完全不同,這亦是這套算法的安全所在。

雖然 SHA 家族相對安全,但也不是沒有被破解過,在 1995 年發佈的 SHA1,在 2005 年被密碼學家發現漏洞,而 Google 蘭數學及電腦研究機構 CWI Amsterdam 在 2017 年宣佈成功破解 SHA1,不過要執行破解運算需要進行 9 quintillion(10 的 18 次方 a.k.a 9,000,000,000,000,000,000)次的 SHA 運算,若是用暴力破解,需要 1200 萬個 GPU (Graphics Processing Unit) 才能完成。

不過,以 SHA-256 計,有人大概計算過約有 115 quattuorvigintillion (10 的 75 次方)個 hash,這是一個十進制中達到 78 位的數字,加上 SHA-2 目前尚沒有出現明顯的漏洞,所以至今尚未有對 SHA-2 的有效破解方法,故被視為最安全的加密演算法之一。

SHA-2 的應用除比特幣之外,Debian 軟件認證及 DomainKeys Identified Mail(DKIM)電子郵件認證機制亦是採用上述演算法,而 SHA-2 亦非唯一加密演算法,例如以太幣所採用的演算法是較 SHA-2 再新一代的 SHA-3,而 Litecoin、Dogecoin 則用 Scrypt 算法。

梁永熹

區塊鏈科研創辦人及行政總裁

Tags :blockchain solutions limited密碼學
Jase Leung

The authorJase Leung

區塊鏈科研創辦人及行政總裁