【老樑談落地】資料交易在區塊鏈落地的加密機制
前面兩篇介紹了CarBlock資料交易落地PoC的業務流程以及其中的一些和使用者體驗相關的問題,看起來好像挺複雜的。那麼為什麼會這麼複雜呢?因為裡面有好多和加密相關的地方。那麼為什麼要加密呢?今天我就介紹一下業務落地PoC里加密相關的一些事情。為此我特地和我們的工程副總裁顏卿再次學習和討論了相關內容,非常感謝他給我準備了很多相關資料,下面我盡我最大的能力轉述、整理說明清楚相關內容。
先說說為什麼要加密?
第一,保證資料的完整性和安全性
我們做的是資料交易,車輛行駛駕駛相關資料的交易。對於資料賣家,他們的需求就是在我不出售的時候,別人不能看到我的資料。不然,能夠看到的資料,我怎麼確保你沒有把我的資料挪作他用。對於資料買家,他們的需求就是要獲得真實的資料,這個資料給我的時候不能被篡改。舉個簡單的例子,比如在UBI(Usage Based Insurance)保險業務裡,保險公司看中的是車輛的真實資料,通過裝置上傳的行車資料(例如:行駛里程、時間、急轉彎、急加速、急剎車),進而根據資料模型來推算出這個使用者這輛車的保額。如果使用者能夠篡改這些資料,就能惡意騙保,保險公司會有很大損失,這樣他們肯定不能接受。所以,他們也需要有一種底層邏輯來保證資料的完整性,保證資料產生後是不可能被篡改的。這也是這些業務的基礎。
第二,做到真正的重新確權
在以往的中心化模型中,做的比較嚴謹的服務商/廠商也會加密資料,但是這些加密都是由服務商/廠商來做的。他們這種加密主要是確保:1、資料通道是安全的;2、資料本身是安全。但由於是中心化的,資料實際的所有權其實是“歸屬“於這些服務商/廠商。他們使用PKI的方式做加密和驗證,所有祕鑰都是中心化管理,無論是公鑰還是私鑰,他們其實都是有許可權獲得的。那麼自然可以解開資料來為自己所用,甚至是拿這些資料去變現。雖然有各種法規來規定不能這麼做,但是他們會通過你不會仔細閱讀但會同意的使用者協議來保證和保護他們在最大程度上利用你的資料。實際情況是,你對你的資料沒有什麼所有權,你甚至不知道自己的資料在哪裡,也許你僅僅是有刪除權,且你刪除後,服務商/廠商後臺到底刪除沒有你也不知道。而通過合理的加密,能夠因為儲存時由你加密,也就只能由你解開,所以你的資料就是你的。CarBlock採用後者加密模型,我們在資料產生的那刻,便用使用者的公鑰進行了加密,那麼這個資料就只能使用者自己用自己的私鑰去解開了,從而通過技術的手段去把資料重新做了確權。
第三,保護使用者隱私
在上面兩條的講述中,已經提到了第三方可以在未得到你授權的情況下看到你的資料,而且他們怎麼使用你的資料你也不知道,這就是涉及到使用者隱私問題,這也是最近一兩年大家開始真正關注的問題。現在隨著歐洲GDPR法案的釋出,各國對於資料隱私保護也從關注落到實實在在的法案上,並相繼推出自己國家的隱私法案,中國的隱私保護法案也在醞釀中,將在不久的將來推出。而通過更好的加密機制才能從根本上保護使用者的隱私。
為了能夠做到上面三點,合理的加密機制是比不可少的。那麼這些加密機制到底是如何工作的呢?下面詳細說說加密的工作原理。
再說說加密工作原理
第一,資料在產生時就非對稱加密
這裡採用的是非對稱加密技術,這種加密技術是目前加密領域中應用比較廣泛且安全性較高的一種加密方式。在CarBlock的生態中,使用者一旦同意挖礦(貢獻資料),那麼他的資料就會用使用者自己的公鑰進行加密後上傳,這就從資料來源頭開始保證,確保資料在出來的那刻就已經被安全的處理,防止洩露或者被篡改。因為只有使用者自己的私鑰才能解開加密資料,所以從根本上保證了資料完整性和安全性。
第二,資料在交易中被代理重加密
交易中採用的是代理重加密技術。代理重加密並不是新的技術,但是卻是非常符合資料交易的模型,這裡有兩點:
1、代理重加密可輕鬆解決1對N的模型。
下面用加密領域常見的幾個人Alice、Bob、Cathy來詳細舉例講講。在以往的安全通訊模型中,如果Alice要把自己的資料安全的給到Bob的話,就需要拿到Bob的公鑰,加密後傳給Bob,Bob就可以用自己的私鑰解開獲得原始資料。但是,如果Alice還希望把資料給Cathy的話,那就得要同樣拿到Cathy的公鑰,做相同的事情。可以看到這種模式是1對1的。這樣無疑增加了Alice的負擔,因為她在加密之前還不得不把之前加密的資料進行解密。
而代理重加密就很好的解決了這個問題,CarBlock作為中間的代理,儲存的是使用者用自己的公鑰加密後的資料。我們還是以Alice的這個例子來看,如果Bob作為買方,需要Alice的資料的話,那麼Alice唯一要做的只是生成一個代理重加密的祕鑰,對資料進行重加密後,給到Bob,Bob就能用自己的私鑰解開。同樣如果Cathy需要Alice的資料,那麼對Alice的資料進行一次代理重加密即可。Alice無需解開原來已加密的資料,每次交易只是生成一份新的代理重加密資料。在這裡,CarBlock充分利用了代理重加密1對N的特性來解決資料交易中的1對N的場景。
2.CarBlock在整個資料交易過程中是不會接觸到原始資料的。
作為資料交易服務的提供方,無論從原則上還是從技術上都應該做到無法接觸到使用者原始的資料,這樣就真正從底層實現了使用者隱私保護,這個在資料交易中非常重要,因為如果不做到這點,那使用者就會懷疑資料交易服務的提供商有沒有自己留一份原始資料出售或挪作他用,使用者的資料隱私也得不到徹底的保護。而使用代理重加密機制的話,資料在流轉的過程中始終不會有機會被第三方解密,資料只有賣方或者買方通過自己的私鑰才能解開,這樣既保證了資料的完整性,又保證了資料的隱私性。
以上就是CarBlock資料交易在落地時的一些加密機制,這些加密機制更加詳細的介紹在網上都能找到,我這裡就不再說的那麼細了。同時,網上也有很多開源的實現方式,大家也可以參考。
如果你對資料交易業務的資料加密還有什麼問題,或者不一樣的想法,歡迎留言評論。