COVA 協(xié)議擁有可以信任的 TEE 節(jié)點(diǎn),并將通過設(shè)計(jì)社區(qū)激勵結(jié)構(gòu)、多方秘密共享和計(jì)算方案,以激勵各方誠實(shí)行事。
新的數(shù)據(jù)傳輸協(xié)議
過去的幾年,以下幾個技術(shù)都取得了新的進(jìn)展:運(yùn)用字節(jié)運(yùn)行監(jiān)控(Bytecode Runtime Monitoring)、可驗(yàn)證的秘密共享、可信執(zhí)行環(huán)境(Trusted Execution Environment)以及基于博弈論的市場激勵方案。通過利用上述技術(shù)創(chuàng)新,COVA 創(chuàng)建了一個新的 Web 3.0 分布式數(shù)據(jù)傳輸協(xié)議,從而實(shí)現(xiàn)網(wǎng)絡(luò)的帕累托最優(yōu)狀態(tài)。
COVA協(xié)議由七層實(shí)現(xiàn)。在本文中,我們將為這七個層中的每一層提供簡要說明:
第一層:數(shù)據(jù)所有者:dApp和數(shù)據(jù)存儲
COVA 用戶可以很容易地構(gòu)建自己的 dApp,在測試階段,我們構(gòu)建了一個基于 electronjs 的多平臺分散式應(yīng)用程序(dApp)。這使得數(shù)據(jù)所有者能夠在自己的個人計(jì)算機(jī)中安全地離線處理、編碼和加密數(shù)據(jù),具體如下:
1. 在數(shù)據(jù)處理階段,敏感的數(shù)據(jù)集被用一個矢量 v 進(jìn)行縮放。這樣做的原因是為 TEE 節(jié)點(diǎn)增加安全防護(hù)——雖然TEE節(jié)點(diǎn)本身已經(jīng)非常安全,極不可能被攻破。
2. 然后,數(shù)據(jù)將被編碼為 COVA 的智能數(shù)據(jù)格式,其中包含數(shù)據(jù)所有者指定的數(shù)據(jù)使用權(quán)限條款(例如不能在下周日之前讀取數(shù)據(jù)),再用 nacl 加密庫進(jìn)行加密。
3. 在完成處理、編碼和加密步驟之后,這個 dApp 將加密密鑰 K 和其他敏感信息(例如矢量 v)分割成 N(在我們的設(shè)計(jì)中,N=100)塊:
在這里,我們使用受 Adi Shamir 秘密共享方案啟發(fā)的閾值加密算法來生成這些秘密。然后,dApp將元數(shù)據(jù)記錄到我們的數(shù)據(jù)目錄區(qū)塊鏈(第二層),并通過加密通道將 100 個秘密部分發(fā)送到 100 個路由節(jié)點(diǎn)。數(shù)據(jù)所有者還可以通過此界面與數(shù)據(jù)用戶創(chuàng)建智能合約(或者在稍后階段,數(shù)據(jù)使用者可以從目錄中查找數(shù)據(jù)集并與數(shù)據(jù)所有者創(chuàng)建智能合約)。
在后續(xù)的文章更新中,我們將公布上述方案的各種細(xì)節(jié),包括多方秘密共享方案,如何在保持結(jié)構(gòu)的情況下進(jìn)行矢量 v 縮放等。
此外,對于測試階段的數(shù)據(jù)存儲,我們不限制任何數(shù)據(jù)存儲解決方案,大家可以選擇許多現(xiàn)有的數(shù)據(jù)存儲提供者(ipfs、s3、Dropbox 等)。數(shù)據(jù)所有者可以將加密數(shù)據(jù)上傳到他們選擇的任何存儲解決方案中,并將數(shù)據(jù)集鏈接到我們的 dApp 接口中。這些行為都是安全的,因?yàn)闄z索實(shí)際數(shù)據(jù)集的唯一方法是讓某人同時訪問密鑰 K 和矢量 v,而這兩者都是通過閾值加密方案保護(hù)的。如果沒有大多數(shù)路由節(jié)點(diǎn)的共識,即使對手能夠攻擊大量的路由節(jié)點(diǎn),他們也不能檢索密鑰。
第二層:數(shù)據(jù)目錄區(qū)塊鏈
數(shù)據(jù)目錄區(qū)塊鏈?zhǔn)欠植际降姆诸悗け荆糜诒4鏀?shù)據(jù)集的元數(shù)據(jù)。獲得許可的各方(通常是數(shù)據(jù)所有者或 TEE)可以更新分類賬的元數(shù)據(jù),但不能刪除條目。我們在測試網(wǎng)絡(luò)中使用了 tendermind 和 bigchaindb 來實(shí)現(xiàn)這個分類。
元數(shù)據(jù)字段是完全可定制的。dApp builder 可以讓數(shù)據(jù)所有者設(shè)計(jì)所需的規(guī)范,根據(jù)數(shù)據(jù)用戶平臺的規(guī)范更改元數(shù)據(jù)(或格式),比如根據(jù)醫(yī)療數(shù)據(jù)集的分散式市場要求更改。
第三層:路由節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)池
COVA 的 TEE 節(jié)點(diǎn)分為兩種:
路由節(jié)點(diǎn):主要用于路由、驗(yàn)證和傳輸計(jì)算狀態(tài)。每個池100個節(jié)點(diǎn),高可用性、更高的安全押金和更高的獎勵。
計(jì)算節(jié)點(diǎn):主要用于計(jì)算,對退出中間計(jì)算有一個懲罰。其可以是 TEE 節(jié)點(diǎn),也可以是 TEE 控制的云計(jì)算節(jié)點(diǎn)(CS2)。
為了保證高可用性,我們擁有多個由 100 個路由節(jié)點(diǎn)組成的池。正如我們將在第四層討論的,我們需要多數(shù)人的共識和可用性來檢索加密密鑰,我們希望激勵節(jié)點(diǎn)高度可用,同時將冗余計(jì)算的數(shù)量保持在最低限度。
我們有各種激勵和懲罰,以盡量減少惡意行為和最大限度地利用網(wǎng)絡(luò)。例如,如果某一個路由節(jié)點(diǎn)不滿足我們的可用性標(biāo)準(zhǔn)(比如確保 99% 以上正常運(yùn)行時間),其他路由節(jié)點(diǎn)可以集體投票將此路由節(jié)點(diǎn)降級到計(jì)算節(jié)點(diǎn),其他一些激勵和懲罰措施,我們將在介紹第六層時補(bǔ)充。
最后,路由節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)都具有極高的安全性,它們都是運(yùn)行 Intel SGX 軍事級別隱私保護(hù)技術(shù)的 TEE 節(jié)點(diǎn),唯一的區(qū)別是路由節(jié)點(diǎn)是根據(jù)可用性和較高的押金投入而選擇的社區(qū)。而且,包括多方秘密共享、擴(kuò)展或激勵結(jié)構(gòu)在內(nèi)的機(jī)制都已到位,足以防止節(jié)點(diǎn)主機(jī)在出現(xiàn)某些 zero-day 漏洞攻擊下?lián)p害 TEE 節(jié)點(diǎn)——雖然這種情況出現(xiàn)的可能性極小。
第四層:路由節(jié)點(diǎn)上的閾值加密密鑰存儲
COVA 使用可驗(yàn)證的多方秘密共享方案,而不是完全信任一個 TEE 路由節(jié)點(diǎn)(比如數(shù)據(jù)加密密鑰)。我們使用了 Shamir 秘密共享方案的一個延伸方案。當(dāng)我們擁有大多數(shù)誠實(shí)路由節(jié)點(diǎn)時,它可以生成秘密。此外,它還可以檢測一個路由節(jié)點(diǎn)是否誠實(shí),這樣我們就可以禁止某些不誠實(shí)的路由節(jié)點(diǎn)。這個方案背后的數(shù)學(xué)概念如下:
1. 數(shù)據(jù)所有者生成一個 100m 個隨機(jī)多項(xiàng)式,其中 m 是誠實(shí)路由節(jié)點(diǎn)的最小分?jǐn)?shù),常數(shù)多項(xiàng)式是加密密鑰。
2. 然后,數(shù)據(jù)所有者在 100 個不同的點(diǎn)上計(jì)算該多項(xiàng)式,并將這些秘密共享發(fā)送到路由節(jié)點(diǎn)。路由節(jié)點(diǎn)不能重新創(chuàng)建密鑰,除非至少有 m 個節(jié)點(diǎn)提供了它們的秘密共享。
3. 此外,在至少有 m 個誠實(shí)的情況下,如果其他節(jié)點(diǎn)不誠實(shí),我們可以檢測到惡意用戶。
在我們的設(shè)計(jì)中,秘密共享方案被用于共享加密密鑰和縮放矢量 v。
第五層:智能條款執(zhí)行器
智能條款執(zhí)行器指的是在 TEE 節(jié)點(diǎn)上運(yùn)行的 Centrifuge 語言和 CovaVM 虛擬機(jī)。舉個例子,假定我們需要運(yùn)行一個來自數(shù)據(jù)使用者的不可信代碼,就需要創(chuàng)建一個沙盒,CovaVM,并啟用一個運(yùn)行時監(jiān)視系統(tǒng),以確保代碼遵循數(shù)據(jù)所有者設(shè)置的數(shù)據(jù)使用條款。目前為止,我們已經(jīng)實(shí)現(xiàn)了開放源代碼的安全模型,確保數(shù)據(jù)用戶只能運(yùn)行 python sklearn 或者 Tensorflow 庫中 28 個已批準(zhǔn)的機(jī)器學(xué)習(xí)模型,我們會使用 Centrifuge 來驗(yàn)證。
第六層:社區(qū)經(jīng)濟(jì):支付和激勵
社區(qū)經(jīng)濟(jì)是一個抽象的層次。它幫助我們實(shí)現(xiàn)目標(biāo),即通過 COVA 基金會的最小干預(yù),創(chuàng)建一個自我維持的、分散的網(wǎng)絡(luò)。要做到這一點(diǎn),我們需要精心設(shè)計(jì)支付和獎勵措施。我們需要支付各種步驟,包括計(jì)算獎勵的 TEE 計(jì)算節(jié)點(diǎn)、路由獎勵的 TEE 路由節(jié)點(diǎn)和獎勵數(shù)據(jù)所有者的貢獻(xiàn)。在我們的測試網(wǎng)中,COVA Token由以太坊智能合約提供支持,以最大限度適應(yīng)和易于開發(fā)。
理論上講,TEE 是完全安全的,不過為了防止安全漏洞和攻擊載體(比如 spectre、meltdown 和 foreshadowing)的影響,我們將最敏感信息的檢索移動到路由節(jié)點(diǎn)共識上。我們的基本假設(shè)是,大多數(shù)節(jié)點(diǎn)是誠實(shí)的。此外,如果任何節(jié)點(diǎn)是不誠實(shí)的,我們可以使用多數(shù)共識中找到的信息立即檢測到這類節(jié)點(diǎn)。在這種情況下,該路由節(jié)點(diǎn)將完全喪失其大量押金,并且特定 CPU(由唯一的 CPUID 標(biāo)識)和該路由節(jié)點(diǎn)所有者將被禁止進(jìn)入網(wǎng)絡(luò)。
在計(jì)算節(jié)點(diǎn)這一側(cè),雖然很難在不重新運(yùn)行整個計(jì)算的情況下計(jì)算整個輸出,但我們在路由節(jié)點(diǎn)和數(shù)據(jù)使用者中都有一個驗(yàn)證階段。為了簡單起見,如果我們假設(shè)一個參與者是惡意的(手段:破壞 TEE enclave)的獨(dú)立概率是 ε,那么對于 k 方驗(yàn)證,所有這些都是惡意的概率是 ε?,ε 本身就是一個很小的數(shù),ε? 值就更小了。
雖然用戶冒著押金(或法律行動)風(fēng)險(xiǎn)以獲得一些縮放數(shù)據(jù)集或不正確的計(jì)算以獲得小額計(jì)算獎勵的動機(jī)相當(dāng)小,但我們還是嚴(yán)陣以待,并且使用各種隨機(jī)驗(yàn)證器來確保安全。
第七層:數(shù)據(jù)使用界面
數(shù)據(jù)使用界面是一個簡單的界面,允許數(shù)據(jù)使用者在啟動與數(shù)據(jù)所有者的智能合約時運(yùn)行一些自定義代碼(策略允許)。此部分的實(shí)現(xiàn)細(xì)節(jié)將留給協(xié)議用戶或 dApp builder。目前,數(shù)據(jù)使用者可以編寫 python 代碼,這些代碼將由 Centrifuge 和 CovaVM 驗(yàn)證。
代碼在 TEE 中運(yùn)行完畢后,TEE 將縮放的計(jì)算值返回給數(shù)據(jù)使用者,路由節(jié)點(diǎn)提供最多 100 個由矢量 v 構(gòu)成的秘密位,數(shù)據(jù)使用者可以運(yùn)用 Shamir 的秘密共享方案組合生成矢量 v。為了完成數(shù)據(jù)分析和聚合計(jì)算,數(shù)據(jù)使用者可以通過導(dǎo)出的縮放矢量來找到在未縮放數(shù)據(jù)上訓(xùn)練的等效模型。例如:如果我們使用矢量 v 任何監(jiān)督機(jī)器學(xué)習(xí)模型(Supervised Machine Learning Model)來縮放訓(xùn)練數(shù)據(jù),則相當(dāng)于在使用 Centrifuge 模型之前使用 v 縮放測試數(shù)據(jù)和預(yù)測。
最后
雖然這七層可能看起來令人很復(fù)雜,但與任何協(xié)議(如 HTTP 或 FTP)類似,最終用戶只需要熟悉這個胖協(xié)議的第一層或第七層就可以。在接下來的深度文章中,我們將繼續(xù)為大家解釋各個層以及每層設(shè)置的各種激勵。
評論
查看更多