有人問:樹哥,區塊鏈可以保障數據的不可篡改,可是如何才能保障上鏈的數據就沒有問題呢?
這是一個好問題,如果上鏈的數據本身是虛假的,那么區塊鏈數據不可篡改也就沒有了意義。
不過,一個方案只能解決一個問題。區塊鏈方案解決的是鏈上數據的不可篡改,鏈下數據的安全可信需要鏈下的手段來解決,也就是通過一些行政手段來解決。例如想對一個鉆石進行溯源,就不要想辦法給鉆石實體上打上唯一的標識,但如果這個標識都被抹除了,那么溯源也沒有意義。就像我們現在的快遞追蹤一樣,如果有人把箱子里面的東西掉包了,只是去記錄箱子外邊的條形碼的流向也是意義有限。
這個不是樹哥今天討論的重點,今天我們討論一下數據上鏈的幾種方式。我們今天主要介紹五種數據上鏈方案:
內容存證
哈希存證
鏈接存證
隱私存證
分享隱私存證
1.內容存證
所謂內容存證,就是指直接把我們要存儲的內容直接放入到區塊鏈之中,不過,大家都知道,區塊鏈上的存儲空間是極其寶貴和有限,所以這些內容一般不會太大。舉個最簡單的例子,我們目前發現,在區塊鏈上執行的應用程序,也就是我們常說的“智能合約”一般功能都不會很強大,而且采用的編程語言一般編譯后的代碼量都很小,就是這個原因。功能不強就代表代碼量比較少,編譯后比較小說明占用的空間比較少,這一些都是為了節省區塊鏈上的鏈上空間。
因為區塊鏈上的公開透明性,所以把內容直接上鏈就代表著這些內容都是公開的,所以可能會適合做一些聲明、版權,而不適合大量內容的文字或者有隱私需求的內容。
2.哈希存證
所謂哈希存證就是把文件內容的哈希值進行保存上鏈。文件內容的哈希值我們也通常稱為文件的“數字指紋”,可以通過對文件內容進行哈希運算得到。因為哈希值的長度都比較有限,例如一部幾萬字的內容的SHA256的哈希值也只是256位的字符,這樣的長度的內容存儲上鏈對區塊鏈來講毫無壓力。
可以通過哈希存證的方式驗證文件內容是否被篡改,例如,把一個原文的哈希值存儲上了區塊鏈,當我們再次拿到這個文件時,對其內容進行哈希運算,如果和鏈上存儲的內容一致,則認為內容可信,沒有被篡改。如果哈希值不同,則認為內容已經被篡改,已經不再可信。這個防止軟件被惡意植入病毒有效,一個公司可以把自己開發的軟件的“數字指紋”放入到區塊鏈之中,用戶在不同渠道下載的軟件都可以驗證一下數字指紋是否有變化,如果有變化則認為軟件中可能被植入了病毒或者木馬,不再安全。
不過,很顯然這套方案只能知道文件是否被篡改,而不能只能真正的原文是什么。
3.鏈接存證
鏈接存證相當于哈希存證基礎上有添加了文件的URI地址,這樣區塊鏈上上就存儲了“文件地址+文件數字指紋”這兩套東西了。這兩套可以互相印證。例如某個銀行的安全插件,需要我們必須到其官網上進行下載安全插件,便可以采用這有的手段。
4.隱私存證
所謂隱私存證就是把數據進行加密之后存儲在區塊鏈之上,這是為了應對區塊鏈上的數據都是公開透明而采取的策略。一般對數據加密都采用的是對稱加密,所謂對稱加密是指加密和解密的秘鑰是一個,這樣的加密方案比較簡單、快速,可以適合大量數據的加密。
如果你的公司有一些股東協議,或者一些重要的東西想長久留存,并且不被篡改,但又不愿意讓外人知道,就可以采用這樣的方式,把數據先行加密,然后再存儲到區塊鏈之上。之后如果需要調閱,可以下載之后再進行解密。
5.分享隱私存證
分享隱私存證相當于隱私存證的更進一步,把文件進行加密之后,同時還要把加密的秘鑰再使用非對稱加密再加密一次。也就是說,第一次對文件內容的加密是采用對稱加密,第二次對秘鑰加密就是非對稱加密。所謂非對稱加密就是有兩把鑰匙:公鑰和私鑰。
還是上面的案例,如果把公司股東之間的協議上了區塊鏈,然后再用自己的私鑰對秘鑰進行加密。這樣其他的股東都可以利用加密股東的公鑰進行解密,拿到對稱秘鑰后再解密對稱秘鑰,用來解密文件。當然也可以使用其他股東的公鑰加密秘鑰,這樣每個股東用自己的私鑰可以解密秘鑰。
總結:數據上鏈的方案有很多,也非常靈活,可以根據不同的應用場景有著不同的變化,樹哥也只是簡單列出了幾種。期待您有不同的方案,可以分享給我們。
責任編輯:胡金鵬