0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Phala實現(xiàn)區(qū)塊鏈和硬件的“平衡”

如意 ? 來源:百家號 ? 作者:星球日報 ? 2020-07-02 16:02 ? 次閱讀

或許你會覺得硬件與區(qū)塊鏈風(fēng)馬牛不相及。畢竟,從比特幣到以太坊,區(qū)塊鏈都是軟件為王,基于硬件的解決方案往往有中心化的嫌疑。其實,在隱私保護(hù)領(lǐng)域,引入硬件是常規(guī)操作。硬件是實現(xiàn)實用化的基礎(chǔ),軟硬結(jié)合的方案可以實現(xiàn)一加一大于二的效果。通過巧妙組合,Phala 可以在讓其去信任化的同時,讓解決方案在可拓展性和保密性之間達(dá)到絕佳的平衡。

#1 基于TEE的區(qū)塊鏈保密

Phala Network運用了保密智能合約來實現(xiàn)區(qū)塊鏈保密。與傳統(tǒng)合約不同的是,它運行在 CPU 內(nèi)一個特殊的硬件區(qū)域(可信執(zhí)行環(huán)境)內(nèi)。這個區(qū)域與其他部件高度隔離;未經(jīng)授權(quán),包括惡意攻擊在內(nèi)的任何嘗試都無法讀取TEE中的數(shù)據(jù),也無法干預(yù)其中程序的執(zhí)行。

Phala將運行在 TEE 中的程序稱為pRuntime。 pRuntime 在 TEE 內(nèi)維持礦工和 Gatekeeper 節(jié)點運行,并負(fù)責(zé)處理 TEE 遠(yuǎn)程證明、鏈上注冊、密鑰管理和保密合同執(zhí)行。

然而,如何讓用戶相信智能合約運行在 pRuntime 里,而不只是一個偽造的 TEE環(huán)境?這個時候,我們需要了解什么是“遠(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ū)生成報告,然后將該報告?zhèn)鬟f到平臺服務(wù)以生成反映安全區(qū)和平臺狀態(tài)的憑證。這樣的反饋憑證被稱為“引報”(quote)。之后,引報就可以作為信任源向外界驗證安全區(qū)內(nèi)應(yīng)用的可信性……”

遠(yuǎn)程認(rèn)證是確保 TEE 系統(tǒng)處于安全和可信狀態(tài)的關(guān)鍵。來自英特爾的 Quate 可以證明這段代碼(以哈希值確定)和需要用到的某些數(shù)據(jù)都確確實實運行在最新版本的 SGX 安全區(qū)內(nèi)。

#2 Secret Provisioning

遠(yuǎn)程認(rèn)證是保密智能合約的靈魂。但如果我們無法在 TEE 和第三方之間建立端到端加密的通信,應(yīng)用范圍就會受到限制。所以,英特爾 SGX 還運用了 Secret Provisioning協(xié)議來優(yōu)雅地解決這個問題。

借助 Secret Provisioning 協(xié)議,我們可以建立從用戶到 pRuntime 的信任鏈:

區(qū)塊鏈上公示了合法 pRuntime 代碼的哈希;

pRuntime 運行遠(yuǎn)程證明協(xié)議,獲取遠(yuǎn)程認(rèn)證報告,報告中含有:被證明代碼的哈希值(pRuntime本身); 身份認(rèn)證密鑰對的公鑰(有時效性)

遠(yuǎn)程驗證報告在鏈上提交,并在鏈上進(jìn)行驗證;

區(qū)塊鏈比較遠(yuǎn)程報告返回的哈希值(旨在證明:參與方確實是TEE中運行的合法 pRuntime)

身份認(rèn)證公鑰完成鏈上注冊(以后只有目前正在運行的 pRuntime 可以使用此密鑰對)

注冊完成后,但凡是由這個身份簽名的消息,都一定是由此 pRuntime 生成的。用戶可以使用已注冊的身份公鑰進(jìn)一步和 pRuntime 建立類似 TLS 的連接。

需要與 TEE 進(jìn)行通信時,用戶可以從區(qū)塊鏈獲取已注冊的 pRuntime 的公鑰,并用 Substrate 賬戶和公鑰進(jìn)行 ECDH 迪菲赫爾曼協(xié)議密鑰協(xié)商,并獲得用于和 pRuntime 進(jìn)行通信的密鑰。

信任鏈建立后,該身份密鑰將唯一地表示 pRuntime 的身份。理論上,只要TEE沒有硬件漏洞(在后文我們會繼續(xù)討論這個點),則一次成功的遠(yuǎn)程認(rèn)證就可以確保所有與 pRuntime 往來的通信處于安全和可信的狀態(tài)。

#3 鏈上升級

鏈上升級可以極大地降低硬件升級硬分叉帶來的風(fēng)險,所以非常重要。Substrate 天生支持 Runtime 鏈上升級,在治理模塊即可完成。同理,TEE 里的 Runtime 也是可以升級的。

升級 pRuntime 時,需要將新的哈希提交到區(qū)塊鏈上。之后便可由社區(qū)通過類似于 Substrate 的鏈上治理流程來審查代碼、討論并投票贊成升級。

鏈上一旦有升級,Phala 的守門人(Gatekeeper)和礦工都必須第一時間升級 pRuntime。這個過程對礦工來說會相對容易一些,因為他們不用 24 小時在線,只用暫停挖礦,升級,然后繼續(xù)挖礦即可。守門人則肩負(fù)可用性重任,需盡可能在線,因此他們要么運行另一個新版本的TEE客戶端等待下一次選舉期間的自然切換,要么對狀態(tài)數(shù)據(jù)進(jìn)行緊急加密轉(zhuǎn)儲,然后將其恢復(fù)到新的 pRuntime。

雖然后者有狀態(tài)數(shù)據(jù)丟失或暴露的風(fēng)險,但在緊急情況下也不失為一種選擇。 SGX 有一個“密封至安全區(qū)(Seal to Enclave)”功能,可以生成只能由同一安全區(qū)解碼的密鑰。這個密鑰可以確保數(shù)據(jù)不被任何第三方查看或遷移。為了降低硬件安全漏洞被利用的可能性,Gatekeeper 中的密鑰是通過 Shamir 密鑰共享方案分發(fā)的。即使 sealing 崩壞,如果沒有網(wǎng)絡(luò)中的多方合謀,主機(jī)也無法獲取密鑰。

#4 攻與守

Phala 的威脅模型首先假設(shè)TEE廠商是部分可信的。原因有二:一,TEE 廠商在制造芯片的時候并不知道這些芯片會被用在什么地方;二,即便遭受“零日漏洞攻擊(Zero-day Attack)”,其他所有運行在芯片上的程序都會有風(fēng)險,而不單單是TEE承受風(fēng)險。

雖然秉持上述假設(shè),不可否認(rèn)的是,硬件漏洞攻擊仍然時有發(fā)生。好在,有以下幾種方法可以解決或處理硬件風(fēng)險問題。

首先,硬件漏洞是可以修復(fù)的。一個常見的誤區(qū)是,只有軟件漏洞可以修復(fù),而硬件漏洞不能修復(fù)。事實并非如此,我們可以通過微碼來修復(fù)硬件漏洞。英特爾為 SGX 設(shè)計了一種特殊的架構(gòu),大多數(shù)漏洞都可以被及時修復(fù)。比如,最近新出現(xiàn)的一種名為 SGAxe的攻擊就已經(jīng)通過微碼升級和密鑰組輪換被修復(fù)。密鑰經(jīng)過轉(zhuǎn)置和撤回后,所有非最新版 SGX 設(shè)備的請求都將被遠(yuǎn)程認(rèn)證駁回。

其次,隨機(jī)性是一柄利器。有人會問,零日漏洞攻擊怎么應(yīng)對?——礦工擁有硬件訪問權(quán)限,就可能會利用零日漏洞攻擊盜取數(shù)據(jù),有作惡的可能。針對這種情況,我們可以活用“隨機(jī)性”,讓區(qū)塊鏈把保密智能合約在一個時間段隨機(jī)分配給不同的礦工,這樣,每個時間段的礦工都不同。這樣一來,攻擊者必須在不同時間段持續(xù)控制大多數(shù)礦工的TEE設(shè)備才能成功,作惡成本會非常高。

最后,保密合約可以通過副本保證執(zhí)行的正確性。即使在極端情況下,安全區(qū)完全被攻陷、機(jī)密數(shù)據(jù)完全暴露在攻擊者面前、TEE 內(nèi)程序可以被任意改寫,合約的“正確性”(correctness)仍然可以得到保證。在 Phala 的設(shè)計中,保密合約可以有一個或多個副本并行運行。副本不會影響合約的執(zhí)行,因為所有輸入都來自區(qū)塊鏈。并行狀態(tài)下,會有多個 TEE 同時嘗試向鏈上提交狀態(tài)數(shù)據(jù)。此時就會有一個簡單的鏈上投票過程,狀態(tài)數(shù)據(jù)的“最終確認(rèn)”(finalize)將遵循少數(shù)服從多數(shù)的原則。

副本的設(shè)計讓這個過程變成了類似 Polkadot Validator選舉的過程。要想攻擊“正確性”,攻擊者必須控制絕大多數(shù)TEE礦工?!@還是在完全被攻破的極端情況下。

#5 結(jié)論

過去,區(qū)塊鏈僅限于軟件范疇。發(fā)展至今,完全公開性已成為大范圍落地的桎梏。而有了可信硬件和精心設(shè)計的協(xié)議支持,Phala將證明和構(gòu)建出一個可信、可保密、可大范圍落地的區(qū)塊鏈?zhǔn)澜纭?/p>

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4989

    瀏覽量

    87833
  • 智能硬件
    +關(guān)注

    關(guān)注

    205

    文章

    2350

    瀏覽量

    107758
  • 區(qū)塊鏈
    +關(guān)注

    關(guān)注

    111

    文章

    15562

    瀏覽量

    106374
收藏 人收藏

    評論

    相關(guān)推薦

    dap協(xié)議在跨技術(shù)中的應(yīng)用

    和通信協(xié)議,實現(xiàn)不同區(qū)塊網(wǎng)絡(luò)之間的無縫連接。 一、DAP協(xié)議概述 DAP協(xié)議是一種去中心化應(yīng)用協(xié)議,它定義了一套標(biāo)準(zhǔn)化的接口和通信機(jī)制,使得不同的區(qū)塊
    的頭像 發(fā)表于 11-22 15:45 ?292次閱讀

    dap協(xié)議的基本概念 dap協(xié)議在區(qū)塊中的應(yīng)用

    DAP協(xié)議,即分布式應(yīng)用協(xié)議(Distributed Application Protocol),是一種旨在促進(jìn)去中心化應(yīng)用(DApps)在區(qū)塊網(wǎng)絡(luò)上的構(gòu)建和運行的框架。DAP協(xié)議的核心目標(biāo)是提供
    的頭像 發(fā)表于 11-22 15:39 ?365次閱讀

    YOGO ROBO智能機(jī)器人助力區(qū)塊行業(yè)發(fā)展

    日前,上海靜安區(qū)成功舉辦了全國首個區(qū)塊主題的場景集市——“數(shù)通谷”區(qū)塊+醫(yī)療場景集市。本次活動匯聚了來自
    的頭像 發(fā)表于 11-22 11:33 ?320次閱讀

    智慧能源管理系統(tǒng):區(qū)塊技術(shù)在能源交易中的應(yīng)用

    區(qū)塊技術(shù)在能源領(lǐng)域具有巨大潛力,可降低交易成本、推動分布式可再生能源發(fā)展。在能源計量、交易和決策機(jī)制等方面發(fā)揮重要作用。
    的頭像 發(fā)表于 11-22 10:48 ?276次閱讀
    智慧能源管理系統(tǒng):<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>技術(shù)在能源交易中的應(yīng)用

    用OPA2134+TPA6120A2如何實現(xiàn)平衡輸出和耳機(jī)輸出?

    做普通的耳放 ,請問這樣的設(shè)計思路可行嗎?有沒有辦法只用兩顆TPA6120A2就實現(xiàn)以上功能?或者說OPA2134直接支持平衡輸出,再用一顆TPA6120A2實現(xiàn)普通輸出?
    發(fā)表于 10-23 07:52

    華為云、上海鈞達(dá)數(shù)科 發(fā)布區(qū)塊數(shù)據(jù)要素聯(lián)合解決方案

    【摘要】 9 月 19 日,在華為全聯(lián)接大會 2024 期間,華為云與上海鈞達(dá)數(shù)科在上海世博展覽館聯(lián)合發(fā)布了基于華為云區(qū)塊打造“區(qū)塊數(shù)據(jù)要素解決方案”。 9 月 19 日,在華為全
    的頭像 發(fā)表于 10-09 20:16 ?486次閱讀
    華為云、上海鈞達(dá)數(shù)科 發(fā)布<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>數(shù)據(jù)要素聯(lián)合解決方案

    京準(zhǔn)電鐘:GPS北斗衛(wèi)星校時服務(wù)器助力區(qū)塊數(shù)據(jù)網(wǎng)

    京準(zhǔn)電鐘:GPS北斗衛(wèi)星校時服務(wù)器助力區(qū)塊數(shù)據(jù)網(wǎng)
    的頭像 發(fā)表于 09-27 10:43 ?300次閱讀
    京準(zhǔn)電鐘:GPS北斗衛(wèi)星校時服務(wù)器助力<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>數(shù)據(jù)網(wǎng)

    串行外設(shè)接口的菊花實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《串行外設(shè)接口的菊花實現(xiàn).pdf》資料免費下載
    發(fā)表于 08-27 09:45 ?1次下載
    串行外設(shè)接口的菊花<b class='flag-5'>鏈</b><b class='flag-5'>實現(xiàn)</b>

    IG網(wǎng)關(guān)產(chǎn)品實現(xiàn)路備份的方法

    的-接口備份模塊。 3、選擇主接口以及備份接口等數(shù)據(jù)參數(shù);設(shè)定完成后添加即生效。(Dot11radio 1代表WLAN接口) 通過這樣設(shè)定即可實現(xiàn)路備份的基礎(chǔ)功能設(shè)定:
    發(fā)表于 07-24 08:25

    探索無限可能:華為云區(qū)塊 +X,創(chuàng)新融合新篇章

    ? 6 月 23 日,華為開發(fā)者大會 2024(HDC 2024)期間,?“「區(qū)塊+X」多元行業(yè)場景下的創(chuàng)新應(yīng)用”分論壇在東莞松山湖舉行,區(qū)塊技術(shù)再次成為焦點。本次論壇以"
    的頭像 發(fā)表于 07-09 12:27 ?4186次閱讀
    探索無限可能:華為云<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b> +X,創(chuàng)新融合新篇章

    用st-link或j-link工具怎么燒寫STM32信息區(qū)塊?

    怎么燒寫STM32 信息區(qū)塊!用st-link 或 j-link工具。
    發(fā)表于 05-08 07:20

    區(qū)塊互操作標(biāo)準(zhǔn)化應(yīng)用及經(jīng)驗,華為云 BCS 獲評團(tuán)體標(biāo)準(zhǔn)示范項目

    區(qū)塊技術(shù)發(fā)展的關(guān)鍵 區(qū)塊作為一種分布式賬本技術(shù),具多方共識、分布式存儲、難以篡改等 特點,在金融科技、政務(wù)民生、司法存證、供應(yīng)協(xié)同、稅
    的頭像 發(fā)表于 02-23 22:00 ?698次閱讀
    <b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>互操作標(biāo)準(zhǔn)化應(yīng)用及經(jīng)驗,華為云 BCS 獲評團(tuán)體標(biāo)準(zhǔn)示范項目

    有什么辦法可以擴(kuò)展SCB區(qū)塊的RX FIFO嗎?

    大家好目前我正在做一個必須從 SPI 讀取大約 2000 字節(jié)的項目,那么有什么辦法可以擴(kuò)展 SCB 區(qū)塊的 RX FIFO 嗎?
    發(fā)表于 01-30 06:26

    什么是白平衡?白平衡的作用

    平衡是指調(diào)整相機(jī)或攝像機(jī)的色溫設(shè)置,以使圖像中的白色與實際場景中的白色看起來一致。 在攝影和攝像中,白平衡的作用非常重要。由于不同光源的色溫不同,相機(jī)在不同光源下拍攝的照片或視頻會呈現(xiàn)出不同的偏色
    的頭像 發(fā)表于 01-22 15:31 ?2133次閱讀

    如何使用Rust從零開發(fā)區(qū)塊

    區(qū)塊的Body部分是一個普通的字符串向量,而頭部看起來更有趣。在所有的字段中,prev_hash 是最有趣的,它存儲了前一個區(qū)塊的哈希字段值,我們將在這篇文章后面的部分討論它。
    的頭像 發(fā)表于 01-22 13:58 ?1349次閱讀
    如何使用Rust從零開發(fā)<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>