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