前段時間,日本第三大鋼鐵巨頭——神戶鋼鐵被曝出篡改鋁制品性能數據;A股上市公司財務報表造假事件近年來也頻頻被曝光……
人們常說,真實而未篡改的數據是誠信的基礎,通常,大多數人會依賴于政府機關的立法和輿論曝光,通過提高對造假的懲罰來杜絕惡意篡改,但好的法律需要好的“警察”,如果不能及時發現篡改行為,就不能完全避免風險和損失。如果有一種技術手段,既能提高數據篡改的難度和代價,又能讓其他人快速而廉價的檢驗是否發生了篡改行為,造假盛行這一狀況就會有很大的改觀。
2017年,比特幣的瘋狂上漲引發關注,除了傳說中的耗時耗電,比特幣究竟為人類做了哪些貢獻呢?很重要的一點就是比特幣構建了一個高度可信的賬本,完全杜絕了賬本的篡改行為。
這是因為比特幣采用了區塊鏈技術作為底層支撐,使得區塊鏈在沒有行政監管的條件下,還能保證貨幣交易數據寫入賬本之后不會被篡改。對此,區塊鏈領域的業內人士將其稱之為“不變性”。
那么,這種不變性究竟該如何理解?它又是怎樣實現的?它和普通民眾究竟有什么關系?本文嘗試對這些問題進行解答。
什么是區塊鏈的不變性?
通常,不變性的具體含義是指某一事物不會隨著時間而改變。
以比特幣為例,交易數據是在不停擴展的,因此在區塊鏈的范疇內,不變性是指一旦交易被寫入到賬本以后,任何人都無法改變它。通過區塊鏈,數據的提供者可以證明其提供的數據沒有被更改過,而數據的接收者可以明確其接收的數據沒有被篡改。
值得注意的是,這種不變性是面向所有人的,區塊鏈維護的賬本和銀行的賬目并不一樣。對于銀行賬目,作為一個普通用戶,你只能讀取你本人的賬本,卻無法對歷史數據進行更改,但是,其他一些更高權限的人,比如銀行內部的系統管理員就具備完全的修改數據能力。而區塊鏈技術則保證了任何人,包括系統管理員,都無法對歷史記錄進行修改。
不過,區塊鏈技術的不變性并非絕對的。
舉一個簡單的例子,你寫了一條信息準備發送,在發送之前,你可以隨意修改它,這是沒有人知道的。如果你已經發送給一位朋友,這條信息對你來說就有一定的不變性,你想改變它,你可以請你的這位朋友刪除原來的短信,然后你重新發送,這樣其他人就不會知道你修改了這條短信。那么,如果你群發給了很多人呢?對你來說這種不變性就很強了,因為你要說服每一位短信接收人去刪除原始短信,理論上,這是可以實現的,但是現實很殘酷,群發的數量越大,數據改變的難度就越大。
區塊鏈也基于同樣的原理。對于數據篡改者來說,篡改數據并不難,困難的地方在于怎么不讓別人發現這種篡改,只要能讓別人快速的驗證數據被篡改過了,那就說明這次篡改行為是失敗的。這就變相地提高了修改某一事物的難度。
綜合起來,區塊鏈的不變性包含了兩個方面的內涵:一是給攻擊者制造難關,二是方便用戶對篡改的檢測,但是,具體過程是怎么實現的呢?
區塊鏈的不變性怎樣實現?
在金融領域,賬本記錄了資產和現金等資源的交易情況,是十分重要的財務記錄。我們每個人在銀行都有相應的流水記錄,而每一條記錄之間的順序通常是按時間進行排序和編號的。這種流水式的賬本對于有權限的人來說,篡改起來是非常容易的,比如,他們把幾條記錄里的內容稍做修改,不仔細查看內容很難看出來。
下圖就展示了一個例子:有人把第4頁的一行內容進行了修改,你可能很難看出前后的區別,因為賬本的變化不夠顯著(參見下圖)。很顯然,這種普通的賬本篡改起來非常簡單,而檢查是否篡改卻十分困難。
根據這一原理,用戶的任何篡改都能反映到頁碼的變化上。為了更便于檢測,我們希望即便只是對內容進行了極小修改,頁碼都能面目全非。這樣做的一個好處是篡改者很難掌握頁碼的變化。那么,如果有一種賬本,他把每一頁的內容和頁碼進行關聯,不管對第4頁的內容進行了何種修改,頁碼都會發生突變,比如篡改后第4頁的頁碼變成了40,這樣的話,篡改行為就能很快被檢測出來。這就是區塊鏈防篡改的第一個主要原理:將頁面內容和順序編號進行關聯。
但這樣也給真實的記賬過程帶來一個問題——由于頁碼的不可控制,記賬時很難生成連續的頁碼,那么,賬本的順序該怎樣維護呢?區塊鏈中,在新加入一頁賬本的時候,就把上一頁賬本的頁碼寫到當前頁的開頭,這樣就能對所有賬本頁進行排序了,典型的一個區塊鏈就可以表示成下圖的形狀:
一個有效賬本的第一個規則是:必須保證前后兩頁的頁碼一致性。一旦出現頁面鏈接不上,說明賬目有假。
有了這樣一個賬本之后,怎么樣才能得到一個有效的篡改賬本呢?
比如,修改第200頁上的某一筆交易,很顯然,第200頁的頁碼也發生了變化,那么,為了保持整個區塊鏈的一致性,你必須修改第201頁頭部記錄的頁碼,由于第201頁也變了,那么必須修改第202頁頭部的頁碼。也就是說,必須把第200頁之后的所有賬本都修改了。乍聽上去,篡改數據只是增加了一些繁瑣度,因此我們需要第二條規則。
一個有效賬本的第二條有效性規則是:每一個頁碼都必須小于一個固定數值。符合第二條規則是極為困難的,這是由于區塊鏈從內容到頁碼的映射過程有很強的不可預測性,篡改者只有不停地進行隨機測試,這個計算量非常大,如果運氣不好,上億次的嘗試才能改好一頁。
如果一個攻擊者的運氣極佳,能生成一個有效的篡改賬本,但區塊鏈還為他準備了第二條預防方法:在許多臺機器上備份統一的賬本。對比不同機器上的賬本也不用那么復雜,只要對比一下最新頁的頁碼就可以了,如果發現你和其他多數人不一樣,就知道你進行了篡改,也就是說,你花費了很大的力氣偽造了一本賬,別人只要花不到一秒鐘,就能知道你做假了。
唯一的一種實現篡改的可能性是:你掌握很大的計算資源,并串通大量攻擊者同時改寫了網絡上的大部分賬本,但這種可能性微不足道,技術本身足以保證區塊鏈賬本數據的不變性。
不變性的應用
利用區塊鏈的不變性,我們可以解決很多實際問題。除了保證數據不被篡改已經在金融支付行業成功應用以外,還有哪些業務場景有可能會借助區塊鏈的不變性特點呢?
首先是在教育認證行業。學歷證書、技能證書等材料直接反映了一個人的能力和教育經歷,而用人單位會對招聘人員的能力具有一定程度的要求。如此,有一些求職者會偽造學歷證書作為踏入職場的敲門磚,而在當前,學歷證書的偽造似乎成了一門產業,偽造的紙質證書足以以假亂真。那么,可否考慮用區塊鏈技術來防止證書被偽造或篡改呢?
近年來,麻省理工學院使用比特幣區塊鏈進行了認證測試,并開發了相應的證書系統用于學術、專業和勞動認證。2015年10月,該系統為參加30周年慶的校友頒發了證書。
此外,墨爾本大學也宣布發起區塊鏈認證和審核計劃,允許通過一種隱私、安全且持久的方式驗證學生的證書。
由于區塊鏈證書的不可偽造性,一方面,可以更有效率的讓用人單位進行學歷審查,也能為優秀的人才創造一個公平的競爭環境。
其次是在醫療行業。近年來,醫療糾紛頻頻發生,其中有不少是由于病歷或處方等報告上出現的錯誤信息和疏漏導致的。那么,如何防范此類事件的發生呢?將病人的所有醫療記錄用區塊鏈進行存儲和保護不失為一種有效途徑。
目前,基于區塊鏈的醫療應用已逐步成形,阿聯酋最大的電信公司之一Du已經與大型私人醫療服務提供商NMC Healthcare建立合作關系,開始使用區塊鏈技術來存儲電子健康記錄。如此,可以確保數據完整性和零錯誤,同時加強醫療服務提供者和患者之間的信任。
另一個重要的問題是假藥的生產。根據世界衛生組織的統計,假藥占據醫藥市場的10%,發展中國家的數據則接近30%,這對患者的健康和安全造成了威脅。目前,包括因特爾、IBM等一些研究機構共同發起了反藥品偽造項目,在這個項目里,每一個廠家生產的藥品都會附帶相應的生產時間記錄,甚至包括藥物的整個供應流程和主要成分,并在區塊鏈上保存起來,這樣就可以隨時檢測藥品的生產時間和地點,從而有效對抗市面上的假藥,對保護患者生命健康具有十分重要的意義。
最后,需要指出的是,在區塊鏈不斷火爆的今天,多數人只把它當做又一場全民概念在炒作。然而,當今天的我們需要隨時給自己的手機充電時,卻忘記了1831年10月28日夜晚被嘲笑的法拉第——電磁學之父;當今天的我們習慣了淘寶購物時,卻忘記了十多年前“網購等于欺詐”的各種言論,更忘記了互聯網發起之初受到的質疑。
電和互聯網在產生之時,人們常說“虛幻”二字,我們有燃油和報紙就夠了。現在的你或許嘲笑當時之人多么的愚昧可悲,殊不知自己也是時代的替代品。區塊鏈誕生至今,“縹緲虛幻”的評價從未間斷,比特幣更是非議重重,但是不管遭受了多少黑客的攻擊,它構建的誠信大廈卻從未被破壞過。或許,未來的一天,“上鏈”也會像“上網”一樣隨處可見,那時的你,會怎么看待今日的你呢?