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