3. 在完成處理、編碼和加密步驟之後,這個 dApp 將加密金鑰 K 和其他敏感資訊(例如向量 v)分割成 N(在我們的設計中,N=100)塊:
在這裡,我們使用受 Adi Shamir 秘密共享方案啟發的閾值加密演算法來生成這些秘密。然後,dApp將後設資料記錄到我們的資料目錄區塊鏈(第二層),並透過加密通道將 100 個秘密部分傳送到 100 個路由節點。資料所有者還可以透過此介面與資料使用者建立智慧合約(或者在稍後階段,資料使用者可以從目錄中查詢資料集並與資料所有者建立智慧合約)。
在後續的文章更新中,我們將公佈上述方案的各種細節,包括多方秘密共享方案,如何在保持結構的情況下進行向量 v 縮放等。
此外,對於測試階段的資料儲存,我們不限制任何資料儲存解決方案,大家可以選擇許多現有的資料儲存提供者(ipfs、s3、Dropbox 等)。資料所有者可以將加密資料上傳到他們選擇的任何儲存解決方案中,並將資料集連結到我們的 dApp 介面中。這些行為都是安全的,因為檢索實際資料集的唯一方法是讓某人同時訪問金鑰 K 和向量 v,而這兩者都是透過閾值加密方案保護的。如果沒有大多數路由節點的共識,即使對手能夠攻擊大量的路由節點,他們也不能檢索金鑰。
第二層:資料目錄區塊鏈
資料目錄區塊鏈是分散式的分類帳本,用於儲存資料集的後設資料。獲得許可的各方(通常是資料所有者或 TEE)可以更新分類賬的後設資料,但不能刪除條目。我們在測試網路中使用了 tendermind 和 bigchaindb 來實現這個分類。
後設資料欄位是完全可定製的。dApp builder 可以讓資料所有者設計所需的規範,根據資料使用者平臺的規範更改後設資料(或格式),比如根據醫療資料集的分散式市場要求更改。
第三層:路由節點和計算節點池
COVA 的 TEE 節點分為兩種:
路由節點:主要用於路由、驗證和傳輸計算狀態。每個池100個節點,高可用性、更高的安全押金和更高的獎勵。
計算節點:主要用於計算,對退出中間計算有一個懲罰。其可以是 TEE 節點,也可以是 TEE 控制的雲端計算節點(CS2)。
為了保證高可用性,我們擁有多個由 100 個路由節點組成的池。正如我們將在第四層討論的,我們需要多數人的共識和可用性來檢索加密金鑰,我們希望激勵節點高度可用,同時將冗餘計算的數量保持在最低限度。
我們有各種激勵和懲罰,以儘量減少惡意行為和最大限度地利用網路。例如,如果某一個路由節點不滿足我們的可用性標準(比如確保 99% 以上正常執行時間),其他路由節點可以集體投票將此路由節點降級到計算節點,其他一些激勵和懲罰措施,我們將在介紹第六層時補充。
最後,路由節點和計算節點都具有極高的安全性,它們都是執行 Intel SGX 軍事級別隱私保護技術的 TEE 節點,唯一的區別是路由節點是根據可用性和較高的押金投入而選擇的社羣。而且,包括多方秘密共享、擴充套件或激勵結構在內的機制都已到位,足以防止節點主機在出現某些 zero-day 漏洞攻擊下損害 TEE 節點——雖然這種情況出現的可能性極小。
第四層:路由節點上的閾值加密金鑰儲存
COVA 使用可驗證的多方秘密共享方案,而不是完全信任一個 TEE 路由節點(比如資料加密金鑰)。我們使用了 Shamir 秘密共享方案的一個延伸方案。當我們擁有大多數誠實路由節點時,它可以生成秘密。此外,它還可以檢測一個路由節點是否誠實,這樣我們就可以禁止某些不誠實的路由節點。這個方案背後的數學概念如下:
1. 資料所有者生成一個 100m 個隨機多項式,其中 m 是誠實路由節點的最小分數,常數多項式是加密金鑰。
2. 然後,資料所有者在 100 個不同的點上計算該多項式,並將這些秘密共享傳送到路由節點。路由節點不能重新建立金鑰,除非至少有 m 個節點提供了它們的秘密共享。
3. 此外,在至少有 m 個誠實的情況下,如果其他節點不誠實,我們可以檢測到惡意使用者。
在我們的設計中,秘密共享方案被用於共享加密金鑰和縮放向量 v。
第五層:智慧條款執行器
智慧條款執行器指的是在 TEE 節點上執行的 Centrifuge 語言和 CovaVM 虛擬機器。舉個例子,假定我們需要執行一個來自資料使用者的不可信程式碼,就需要建立一個沙盒,CovaVM,並啟用一個執行時監視系統,以確保程式碼遵循資料所有者設定的資料使用條款。目前為止,我們已經實現了開放原始碼的安全模型,確保資料使用者只能執行 python sklearn 或者 Tensorflow 庫中 28 個已批准的機器學習模型,我們會使用 Centrifuge 來驗證。
第六層:社羣經濟:支付和激勵
社羣經濟是一個抽象的層次。它幫助我們實現目標,即透過 COVA 基金會的最小干預,建立一個自我維持的、分散的網路。要做到這一點,我們需要精心設計支付和獎勵措施。我們需要支付各種步驟,包括計算獎勵的 TEE 計算節點、路由獎勵的 TEE 路由節點和獎勵資料所有者的貢獻。在我們的測試網中,COVA Token由以太坊智慧合約提供支援,以最大限度適應和易於開發。
理論上講,TEE 是完全安全的,不過為了防止安全漏洞和攻擊載體(比如 spectre、meltdown 和 foreshadowing)的影響,我們將最敏感資訊的檢索移動到路由節點共識上。我們的基本假設是,大多數節點是誠實的。此外,如果任何節點是不誠實的,我們可以使用多數共識中找到的資訊立即檢測到這類節點。在這種情況下,該路由節點將完全喪失其大量押金,並且特定 CPU(由唯一的 CPUID 標識)和該路由節點所有者將被禁止進入網路。
在計算節點這一側,雖然很難在不重新執行整個計算的情況下計算整個輸出,但我們在路由節點和資料使用者中都有一個驗證階段。為了簡單起見,如果我們假設一個參與者是惡意的(手段:破壞 TEE enclave)的獨立概率是 ε,那麼對於 k 方驗證,所有這些都是惡意的概率是 εᵏ,ε 本身就是一個很小的數,εᵏ 值就更小了。
雖然使用者冒著押金(或法律行動)風險以獲得一些縮放資料集或不正確的計算以獲得小額計算獎勵的動機相當小,但我們還是嚴陣以待,並且使用各種隨機驗證器來確保安全。
第七層:資料使用介面
資料使用介面是一個簡單的介面,允許資料使用者在啟動與資料所有者的智慧合約時執行一些自定義程式碼(策略允許)。此部分的實現細節將留給協議使用者或 dApp builder。目前,資料使用者可以編寫 python 程式碼,這些程式碼將由 Centrifuge 和 CovaVM 驗證。
程式碼在 TEE 中執行完畢後,TEE 將縮放的計算值返回給資料使用者,路由節點提供最多 100 個由向量 v 構成的秘密位,資料使用者可以運用 Shamir 的秘密共享方案組合生成向量 v。為了完成資料分析和聚合計算,資料使用者可以透過匯出的縮放向量來找到在未縮放資料上訓練的等效模型。例如:如果我們使用向量 v 任何監督機器學習模型(Supervised Machine Learning Model)來縮放訓練資料,則相當於在使用 Centrifuge 模型之前使用 v 縮放測試資料和預測。
最後
雖然這七層可能看起來令人很複雜,但與任何協議(如 HTTP 或 FTP)類似,終端使用者只需要熟悉這個胖協議的第一層或第七層就可以。在接下來的深度文章中,我們將繼續為大家解釋各個層以及每層設定的各種激勵。
更多區塊鏈資訊:www.qukuaiwang.com.cn/news