多方運算架構設計

Azure Blob 儲存體
Azure Kubernetes Service (AKS)
Azure SQL Database

多方運算或隱私權保留計算可讓商務關係中的合作物件共用資料、執行計算,以及達成相互結果,而不會洩露其私人資料。 Azure 服務可協助您建置多方運算解決方案。 解決方案可以包含雲端式和內部部署資源。

多方運算具有下列屬性:

  • 涉及多個公司或組織。
  • 合作物件是獨立的。
  • 雙方不會信任彼此與所有資料。
  • 所有合作物件都會存取常見的運算和資料儲存平臺。
  • 某些程式對於涉及的一些合作物件而言,必須是私用的。

供應鏈是涉及多方之工作流程的範例。 原始資料會從原點流向製造。 來自製造商的貨物會經過貨運合作夥伴到配送中樞。 從中樞,貨物會傳送至零售出口。

圖表顯示供應鏈成員在美工圖案影像中的進展。

此程式讓公司共同合作。 這些合作物件包括原始資料供應商、製造商、貨運公司、倉儲操作員和零售出口。 產品會在供應鏈期間變更數次。 不同合作物件必須在所有階段追蹤產品。

多方運算技術

多方運算包含不同的技術,可讓合作物件透過網路安全地交易。

圖表顯示要實作為機密運算、Azure Kubernetes Service、虛擬機器或合作夥伴供應專案的總帳。

其中一個選項是分散式總帳。 區塊鏈是一個範例。 區塊鏈是一種資料總帳,可以在所有合作物件信任總帳上的資料的獨立合作物件之間共用。 交易會收集在區塊中,每個區塊都會連結到上一個區塊。 某些分散式總帳不會使用區塊。 每個交易都可以連結到總帳上的先前交易。

多方運算的另一個可能性是使用 CPU 本身的硬體保護記憶體。 這些區域稱為 安全記憶體保護區,會以密碼編譯方式保護。 這種方法表示,即使具有伺服器完整存取權的特殊許可權系統管理員,也無法查看這些安全記憶體保護區內的進程或資料。

由於安全記憶體保護區能夠從遠端證明自己到其他記憶體保護區,因此您可以設計多個組織網路,讓系統從記憶體保護區執行。 此方法稱為 受信任的執行環境

Azure 提供稱為 Azure 機密總帳的受控服務,可讓您在安全記憶體保護區上執行區塊鏈模型。

最後,您可以選擇集中式系統,以提供不變性和信任性。 Azure SQL資料庫總帳提供關係資料庫中多方運算所需的信任。 您可能不需要分散式共識,但只是總帳的不變性層面。

區塊鏈網路模型

若要判斷區塊鏈是否適合商務程式,請考慮下列問題:

  • 此商務程式是否跨越信任界限?
  • 多方是否共用和更新資料?
  • 是否有任何可控制單一事實來源的媒介?
  • 此程式是否涉及低值手動驗證步驟?

如果這些問題的解答 是,商務程式是區塊鏈式方法的良好候選項目。 即使有些答案 沒有,區塊鏈可能仍然有意義。 在決定之前,請先仔細查看其他多方運算選項。

有各種區塊鏈網路可解決您的商務需求。 其中一個特性是參與網路的準則。 如果網路已全部開啟,則稱為 公用區塊鏈網路。 您只要下載用戶端並加入即可。 大部分的交易所會以這種方式運作。

替代方法是 具有許可權的區塊鏈網路,其中您需要來自現有網路成員的許可權才能加入。 此模型適用于處理已知組織的企業。 例如,超存放區可能想要為其供應鏈參與者擁有已關閉且具有許可權的區塊鏈網路。

商務程式可能只需要防竄改或防竄改資料,而不需要區塊鏈。 如果您的程式可以集中執行,或所有合作物件都與資料彼此信任,則區塊鏈可能也是不必要的。

Azure 多方運算

本節說明使用 Azure 服務提供的多方運算選項。

使用 Azure 虛擬機器 的區塊鏈

您可以使用 Azure 虛擬機器來執行總帳軟體。 視需要建立多個虛擬機器,並在區塊鏈網路中加以連線。

部署您自己的虛擬機器可讓您自訂解決方案。 此方法包括管理額外負荷,例如更新、高可用性和商務持續性需求。 您可能有多個組織和多個雲端帳戶。 連接個別節點可能很複雜。

Azure 上有適用于虛擬機器大部分區塊鏈總帳的部署範本。

Kubernetes 上的區塊鏈

由於大部分區塊鏈總帳都支援部署至 Docker 容器,因此您可以使用 Kubernetes 來管理容器。 Azure 具有稱為 Azure Kubernetes Service (AKS) 的受控 Kubernetes 供應專案,可讓您用來部署和設定區塊鏈節點。

AKS 實作隨附 AKS 叢集之虛擬機器的受控服務。 不過,您的組織仍必須管理您的 AKS 叢集,以及架構中的任何網路或儲存體選項。

Azure 上有許多適用于 AKS 區塊鏈總帳的部署範本。

區塊鏈即服務

Azure 支援在 Azure 上執行總帳軟體的協力廠商服務。 服務提供者會管理基礎結構。 它們會處理維護和更新。 高可用性和聯盟管理包含在服務中。

ConsenSys 在 Azure 上提供仲裁。 仲裁是支援 Ethereum 型應用程式的開放原始碼通訊協定層。

未來可能會有其他供應專案。

Azure 機密總帳

Azure 機密總帳是以機密聯盟架構為基礎的受控服務。 它會在 Azure 機密運算內實作節點的許可權區塊鏈網路。 機密總帳是以現有的加密為基礎。

  • 現有的加密
    • 待用資料。 在 Blob 儲存體或資料庫中儲存時加密非作用中資料。
    • 傳輸中的資料。 加密在公用或私人網路之間流動的資料。
  • 機密運算
    • 使用中的資料。 加密正在使用的資料,同時在記憶體和計算期間。

機密運算允許加密主要記憶體中的資料。 機密運算可讓您處理來自多個來源的資料,而不需要將輸入資料公開給其他物件。 這種類型的安全計算支援在每一個步驟中強制資料保護的多方運算案例,例如金錢檢測、詐騙偵測,以及醫療保健資料的安全分析。

儲存在機密總帳中的資料是不可變的,而且在僅限附加總帳中遭到竄改。 總帳也可以獨立驗證。 機密總帳會針對分散式區塊鏈網路使用安全記憶體保護區,而且需要最少的信任運算基礎。

Azure SQL Database 總帳

Azure SQL資料庫總帳可讓參與者驗證集中存放資料的資料完整性,而不需要區塊鏈網路的網路共識。 對於某些集中式解決方案信任很重要,但不需要分散式基礎結構。 這種方法可避免這類基礎結構的複雜度和效能影響。

圖表顯示資料庫總帳架構。

注意

Azure SQL Database 總帳目前處於公開預覽狀態。

總帳會為您的資料庫提供竄改辨識功能。 這些功能可讓您以密碼編譯方式證明資料尚未遭到竄改。

總帳可協助保護資料免于任何攻擊者或高許可權使用者,包括資料庫、系統和雲端管理員。 歷程記錄資料會保留。 如果在資料庫中更新資料列,則會在歷程記錄資料表中維護其先前的值。 這會在沒有任何應用程式變更的情況下提供保護。

總帳是 Azure SQL Database 的功能。 它可以在任何現有的Azure SQL資料庫中啟用。

比較選項

機密總帳和Azure SQL資料庫總帳

下表比較機密總帳與 Azure SQL 資料庫總帳。

SQL Database 總帳 機密總帳
需要竄改辨識項的集中式系統
需要資料遭到竄改的分散式系統 No Yes
保護關聯式資料免于竄改
防止非結構化資料遭到竄改 No Yes
保護區塊鏈中鏈結資料的離線鏈結存放區
保護從區塊鏈參考的檔案的異鏈結存放區 No Yes
關聯式資料可查詢
非結構化預存資料可供查詢 No Yes

機密總帳和Azure Blob 儲存體

Azure Blob 儲存體的不可變儲存功能可確保寫入其中的資料可以讀取,但永遠不會變更。 下表比較這項技術與機密總帳。

機密總帳 固定儲存體
機密硬體記憶體保護區
僅限附加的資料完整性 Yes 是,限制為間隔
使用中資料加密
區塊鏈總帳證明

多方運算決策

此圖表摘要說明使用 Azure 服務進行多方運算的選項。

圖表摘要說明選擇多部分運算選項的決策。

下載這個架構的 Visio 檔案

下一步