或許你會(huì)覺(jué)得硬件與區(qū)塊鏈風(fēng)馬牛不相及。畢竟,從比特幣到以太坊,區(qū)塊鏈都是軟件為王,基于硬件的解決方案往往有中心化的嫌疑。其實(shí),在隱私保護(hù)領(lǐng)域,引入硬件是常規(guī)操作。硬件是實(shí)現(xiàn)實(shí)用化的基礎(chǔ),軟硬結(jié)合的方案可以實(shí)現(xiàn)一加一大于二的效果。通過(guò)巧妙組合,Phala 可以在讓其去信任化的同時(shí),讓解決方案在可拓展性和保密性之間達(dá)到絕佳的平衡。
#1 基于TEE的區(qū)塊鏈保密
Phala Network運(yùn)用了保密智能合約來(lái)實(shí)現(xiàn)區(qū)塊鏈保密。與傳統(tǒng)合約不同的是,它運(yùn)行在 CPU 內(nèi)一個(gè)特殊的硬件區(qū)域(可信執(zhí)行環(huán)境)內(nèi)。這個(gè)區(qū)域與其他部件高度隔離;未經(jīng)授權(quán),包括惡意攻擊在內(nèi)的任何嘗試都無(wú)法讀取TEE中的數(shù)據(jù),也無(wú)法干預(yù)其中程序的執(zhí)行。
Phala將運(yùn)行在 TEE 中的程序稱為pRuntime。 pRuntime 在 TEE 內(nèi)維持礦工和 Gatekeeper 節(jié)點(diǎn)運(yùn)行,并負(fù)責(zé)處理 TEE 遠(yuǎn)程證明、鏈上注冊(cè)、密鑰管理和保密合同執(zhí)行。
然而,如何讓用戶相信智能合約運(yùn)行在 pRuntime 里,而不只是一個(gè)偽造的 TEE環(huán)境?這個(gè)時(shí)候,我們需要了解什么是“遠(yuǎn)程認(rèn)證”(Remote Attestation)。
“An application that hosts an enclave can also ask the enclave to produce a report and then pass this report to a platform service to produce a type of credential that reflects enclave and platform state. This credential is known as a quote. This quote can then be passed to entities off of the platform, and verified…”
“特殊安全區(qū)(enclave)里的應(yīng)用程序也可以要求安全區(qū)生成報(bào)告,然后將該報(bào)告?zhèn)鬟f到平臺(tái)服務(wù)以生成反映安全區(qū)和平臺(tái)狀態(tài)的憑證。這樣的反饋憑證被稱為“引報(bào)”(quote)。之后,引報(bào)就可以作為信任源向外界驗(yàn)證安全區(qū)內(nèi)應(yīng)用的可信性……”
遠(yuǎn)程認(rèn)證是確保 TEE 系統(tǒng)處于安全和可信狀態(tài)的關(guān)鍵。來(lái)自英特爾的 Quate 可以證明這段代碼(以哈希值確定)和需要用到的某些數(shù)據(jù)都確確實(shí)實(shí)運(yùn)行在最新版本的 SGX 安全區(qū)內(nèi)。
#2 Secret Provisioning
遠(yuǎn)程認(rèn)證是保密智能合約的靈魂。但如果我們無(wú)法在 TEE 和第三方之間建立端到端加密的通信,應(yīng)用范圍就會(huì)受到限制。所以,英特爾 SGX 還運(yùn)用了 Secret Provisioning協(xié)議來(lái)優(yōu)雅地解決這個(gè)問(wèn)題。
借助 Secret Provisioning 協(xié)議,我們可以建立從用戶到 pRuntime 的信任鏈:
區(qū)塊鏈上公示了合法 pRuntime 代碼的哈希;
pRuntime 運(yùn)行遠(yuǎn)程證明協(xié)議,獲取遠(yuǎn)程認(rèn)證報(bào)告,報(bào)告中含有:被證明代碼的哈希值(pRuntime本身); 身份認(rèn)證密鑰對(duì)的公鑰(有時(shí)效性)
遠(yuǎn)程驗(yàn)證報(bào)告在鏈上提交,并在鏈上進(jìn)行驗(yàn)證;
區(qū)塊鏈比較遠(yuǎn)程報(bào)告返回的哈希值(旨在證明:參與方確實(shí)是TEE中運(yùn)行的合法 pRuntime)
身份認(rèn)證公鑰完成鏈上注冊(cè)(以后只有目前正在運(yùn)行的 pRuntime 可以使用此密鑰對(duì))
注冊(cè)完成后,但凡是由這個(gè)身份簽名的消息,都一定是由此 pRuntime 生成的。用戶可以使用已注冊(cè)的身份公鑰進(jìn)一步和 pRuntime 建立類似 TLS 的連接。
需要與 TEE 進(jìn)行通信時(shí),用戶可以從區(qū)塊鏈獲取已注冊(cè)的 pRuntime 的公鑰,并用 Substrate 賬戶和公鑰進(jìn)行 ECDH 迪菲赫爾曼協(xié)議密鑰協(xié)商,并獲得用于和 pRuntime 進(jìn)行通信的密鑰。
信任鏈建立后,該身份密鑰將唯一地表示 pRuntime 的身份。理論上,只要TEE沒(méi)有硬件漏洞(在后文我們會(huì)繼續(xù)討論這個(gè)點(diǎn)),則一次成功的遠(yuǎn)程認(rèn)證就可以確保所有與 pRuntime 往來(lái)的通信處于安全和可信的狀態(tài)。
#3 鏈上升級(jí)
鏈上升級(jí)可以極大地降低硬件升級(jí)硬分叉帶來(lái)的風(fēng)險(xiǎn),所以非常重要。Substrate 天生支持 Runtime 鏈上升級(jí),在治理模塊即可完成。同理,TEE 里的 Runtime 也是可以升級(jí)的。
升級(jí) pRuntime 時(shí),需要將新的哈希提交到區(qū)塊鏈上。之后便可由社區(qū)通過(guò)類似于 Substrate 的鏈上治理流程來(lái)審查代碼、討論并投票贊成升級(jí)。
鏈上一旦有升級(jí),Phala 的守門人(Gatekeeper)和礦工都必須第一時(shí)間升級(jí) pRuntime。這個(gè)過(guò)程對(duì)礦工來(lái)說(shuō)會(huì)相對(duì)容易一些,因?yàn)樗麄儾挥?24 小時(shí)在線,只用暫停挖礦,升級(jí),然后繼續(xù)挖礦即可。守門人則肩負(fù)可用性重任,需盡可能在線,因此他們要么運(yùn)行另一個(gè)新版本的TEE客戶端等待下一次選舉期間的自然切換,要么對(duì)狀態(tài)數(shù)據(jù)進(jìn)行緊急加密轉(zhuǎn)儲(chǔ),然后將其恢復(fù)到新的 pRuntime。
雖然后者有狀態(tài)數(shù)據(jù)丟失或暴露的風(fēng)險(xiǎn),但在緊急情況下也不失為一種選擇。 SGX 有一個(gè)“密封至安全區(qū)(Seal to Enclave)”功能,可以生成只能由同一安全區(qū)解碼的密鑰。這個(gè)密鑰可以確保數(shù)據(jù)不被任何第三方查看或遷移。為了降低硬件安全漏洞被利用的可能性,Gatekeeper 中的密鑰是通過(guò) Shamir 密鑰共享方案分發(fā)的。即使 sealing 崩壞,如果沒(méi)有網(wǎng)絡(luò)中的多方合謀,主機(jī)也無(wú)法獲取密鑰。
#4 攻與守
Phala 的威脅模型首先假設(shè)TEE廠商是部分可信的。原因有二:一,TEE 廠商在制造芯片的時(shí)候并不知道這些芯片會(huì)被用在什么地方;二,即便遭受“零日漏洞攻擊(Zero-day Attack)”,其他所有運(yùn)行在芯片上的程序都會(huì)有風(fēng)險(xiǎn),而不單單是TEE承受風(fēng)險(xiǎn)。
雖然秉持上述假設(shè),不可否認(rèn)的是,硬件漏洞攻擊仍然時(shí)有發(fā)生。好在,有以下幾種方法可以解決或處理硬件風(fēng)險(xiǎn)問(wèn)題。
首先,硬件漏洞是可以修復(fù)的。一個(gè)常見(jiàn)的誤區(qū)是,只有軟件漏洞可以修復(fù),而硬件漏洞不能修復(fù)。事實(shí)并非如此,我們可以通過(guò)微碼來(lái)修復(fù)硬件漏洞。英特爾為 SGX 設(shè)計(jì)了一種特殊的架構(gòu),大多數(shù)漏洞都可以被及時(shí)修復(fù)。比如,最近新出現(xiàn)的一種名為 SGAxe的攻擊就已經(jīng)通過(guò)微碼升級(jí)和密鑰組輪換被修復(fù)。密鑰經(jīng)過(guò)轉(zhuǎn)置和撤回后,所有非最新版 SGX 設(shè)備的請(qǐng)求都將被遠(yuǎn)程認(rèn)證駁回。
其次,隨機(jī)性是一柄利器。有人會(huì)問(wèn),零日漏洞攻擊怎么應(yīng)對(duì)?——礦工擁有硬件訪問(wèn)權(quán)限,就可能會(huì)利用零日漏洞攻擊盜取數(shù)據(jù),有作惡的可能。針對(duì)這種情況,我們可以活用“隨機(jī)性”,讓區(qū)塊鏈把保密智能合約在一個(gè)時(shí)間段隨機(jī)分配給不同的礦工,這樣,每個(gè)時(shí)間段的礦工都不同。這樣一來(lái),攻擊者必須在不同時(shí)間段持續(xù)控制大多數(shù)礦工的TEE設(shè)備才能成功,作惡成本會(huì)非常高。
最后,保密合約可以通過(guò)副本保證執(zhí)行的正確性。即使在極端情況下,安全區(qū)完全被攻陷、機(jī)密數(shù)據(jù)完全暴露在攻擊者面前、TEE 內(nèi)程序可以被任意改寫(xiě),合約的“正確性”(correctness)仍然可以得到保證。在 Phala 的設(shè)計(jì)中,保密合約可以有一個(gè)或多個(gè)副本并行運(yùn)行。副本不會(huì)影響合約的執(zhí)行,因?yàn)樗休斎攵紒?lái)自區(qū)塊鏈。并行狀態(tài)下,會(huì)有多個(gè) TEE 同時(shí)嘗試向鏈上提交狀態(tài)數(shù)據(jù)。此時(shí)就會(huì)有一個(gè)簡(jiǎn)單的鏈上投票過(guò)程,狀態(tài)數(shù)據(jù)的“最終確認(rèn)”(finalize)將遵循少數(shù)服從多數(shù)的原則。
副本的設(shè)計(jì)讓這個(gè)過(guò)程變成了類似 Polkadot Validator選舉的過(guò)程。要想攻擊“正確性”,攻擊者必須控制絕大多數(shù)TEE礦工?!@還是在完全被攻破的極端情況下。
#5 結(jié)論
過(guò)去,區(qū)塊鏈僅限于軟件范疇。發(fā)展至今,完全公開(kāi)性已成為大范圍落地的桎梏。而有了可信硬件和精心設(shè)計(jì)的協(xié)議支持,Phala將證明和構(gòu)建出一個(gè)可信、可保密、可大范圍落地的區(qū)塊鏈?zhǔn)澜纭?/p>
-
軟件
+關(guān)注
關(guān)注
69文章
5295瀏覽量
90820 -
智能硬件
+關(guān)注
關(guān)注
205文章
2401瀏覽量
111011 -
區(qū)塊鏈
+關(guān)注
關(guān)注
112文章
15571瀏覽量
110458
發(fā)布評(píng)論請(qǐng)先 登錄
資源狀態(tài)感知是如何實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)鏈路狀態(tài)的實(shí)時(shí)感知的?
KMbalancerII+動(dòng)平衡等級(jí)評(píng)估功能介紹#動(dòng)平衡儀#動(dòng)平衡校正
gcc工具鏈無(wú)法匯編硬件浮點(diǎn)指令fsqrt問(wèn)題
KM介紹如何確定動(dòng)平衡校正后的振動(dòng)符合標(biāo)準(zhǔn)?#動(dòng)平衡儀 #動(dòng)平衡校正
KM動(dòng)平衡儀使用指南 砂輪機(jī)動(dòng)平衡校正方法詳解#動(dòng)平衡儀#動(dòng)平衡校正
循環(huán)經(jīng)濟(jì) 2.0:海翔科技如何用區(qū)塊鏈技術(shù)追溯二手設(shè)備全生命周期
老舊工控機(jī)升級(jí)策略:硬件迭代與軟件兼容性的平衡之道
KM科普小課堂 動(dòng)平衡儀和動(dòng)平衡機(jī)的區(qū)別#動(dòng)平衡儀#動(dòng)平衡校正
PanDao:光學(xué)設(shè)計(jì)中的光學(xué)加工鏈建模
設(shè)備管理系統(tǒng)新范式:區(qū)塊鏈存證+動(dòng)態(tài)權(quán)限管理

Phala實(shí)現(xiàn)區(qū)塊鏈和硬件的“平衡”
評(píng)論