數據安全的下一個前沿:保護使用中的數據
2022年4月18日 摘自 SecurityIntelligence
寫在前面:上一篇從整體介紹了數據安全,本篇就加密部分的同態加密和機密計算做了說明。
在過去幾年中,在保護傳輸和存儲中的敏感數據方面取得了巨大的進展。但敏感數據在使用過程中仍可能受到攻擊。例如,透明數據庫加密(TDE),雖然透明數據庫加密能確保敏感數據在存儲時受到保護,但同樣的敏感數據必須以明文的形式存儲在數據庫緩沖池中,以便能夠處理SQL查詢。這使得敏感數據很容易受到攻擊,因為它的機密性可能通過多種方式被破壞,包括抓取內存的惡意軟件和特權用戶濫用。
這種對使用中的數據保護的擔憂,已經成為許多組織不愿將某些計算委托給云來節省IT基礎設施成本,以及不愿與同行共享私有數據進行協作分析的主要原因。機密計算(confidential computing)和全同態加密(FHE)是解決這一問題的兩項有前景的新興技術,使組織能夠釋放敏感數據的價值。這兩個概念的具體含義是什么,它們之間的區別是什么?
保護使用中數據的場景
直到最近,與合作者共享私有數據和使用云數據服務一直是許多組織面臨的挑戰。對有些組織來說,與協作者共享數據和使用云數據服務所產生的價值,使他們有理由接受私有數據在使用時可能容易受到攻擊的風險。但是,對于其他組織來說,這樣的取舍并不在議程上。如果組織不需要被迫做出這樣的取舍呢?如果數據不僅在傳輸和存儲過程中而且在使用過程中都能得到保護呢?這將打開各種應用場景的大門:
保護云中的數據庫處理:云數據庫服務使用傳輸層安全(transport layer security, TLS)來保護數據在數據庫服務器和客戶端應用程序之間傳輸。它們還采用各種數據庫加密技術來保護存儲中的數據。但是,當涉及到數據庫查詢處理時,數據必須以明文的形式駐留在主內存中。全同態加密可用于直接對加密數據執行查詢處理,從而確保敏感數據在傳輸、存儲和使用三種狀態下都進行加密。機密計算不支持對加密數據的查詢處理,但可確保在可信執行環境(trusted execution environment,TEE)中執行此類計算,從而使敏感數據在使用時能得到保護。
保護協作分析時數據共享:在金融行業,組織需要與他們的同行共享私人數據,以幫助防止金融欺詐。在醫療健康行業,機構需要共享私有數據來治療患者和開發新疾病的治療方法。這種情況下,組織很難在遵守數據隱私法的同時,從共享私有數據中獲得所需的結果。全同態加密可以通過直接對加密數據執行分析來解決這一難題,確保數據在使用期間仍然受到保護。機密計算可用于確保在可信執行環境(TEE)中對數據進行組合和分析,從而使其在使用時受到保護。
通過將計算委托給云來節省IT成本:金融機構培訓和部署機器學習(ML)模型,以更好地了解客戶,并為他們定制產品。例如,市場營銷部門可能想要了解客戶在未來三個月內申請貸款的傾向,并為他們量身定制貸款方案。金融機構可能希望通過將客戶的數據轉移到更便宜的云存儲并在那里進行分析來節省存儲成本。然而,這給客戶端數據的隱私和ML模型本身的隱私帶來了一個問題。全同態加密可以通過對ML模型進行加密并直接在加密數據上運行來解決這個問題,確保私有數據和ML模型在使用時都受到保護。機密計算通過確保計算在可信執行環境(TEE)中運行來保護私有數據和ML模型。
加強遵守零信任安全原則:由于傳輸和存儲中的數據受到標準保護機制(如TLS和TDE)的保護,攻擊者正在將他們的焦點轉移到正在使用的數據上。在這種情況下,攻擊技術被用于鎖定正在使用的數據,例如內存抓取、管理程序和容器中斷和固件破壞。全同態加密和機密計算通過消除絕對信任來加強對零信任安全原則的遵守,否則應用程序將需要在底層軟件堆棧中設置絕對信任以保護使用中的數據。
機密計算
敏感數據在計算過程中可能會受到攻擊,因為它通常以明文形式駐留在主存中。機密計算通過確保在可信執行環境(TEE)中執行對此類敏感數據的計算來解決這個問題,可信執行環境(TEE)是一種基于硬件的機制,用于防止對敏感數據的未經授權訪問或修改。

英特爾軟件保護擴展(SGX)是一個廣為人知的機密計算的例子。它允許應用程序定義主內存的一個私有區域,稱為安全飛地(secure enclave),它的內容不能由enclave之外的任何進程讀取或寫入,無論其特權級別或中央處理單元(CPU)模式如何。即使在操作系統、管理程序和容器引擎受到威脅時,這種隔離也可以保護enclave。此外,enclave內存使用存儲在CPU內部的密鑰進行加密。只有飛地內的代碼,才能在CPU內部解密。這意味著,即使有惡意的實體從物理上竊取飛地的內存,對他們來說也沒有任何用處。
機密計算的兩種方法
今天,機密計算主要使用兩種方法:應用程序軟件開發工具包(SDK)和運行時部署系統。上面提到的Intel SGX功能就是基于SDK的應用程序方法的一個例子。在這種方法中,開發人員負責將應用程序劃分為不受信任的代碼和受信任的代碼。不受信任的代碼在操作系統上正常運行,而受信任的代碼在安全飛地中運行。SDK提供了創建和管理安全飛地所需的API (application programming interface)。
Open Enclave SDK是基于應用程序SDK的另一個例子。它是一個開源SDK,提供了一個抽象級別,使開發人員能夠一次構建基于可信執行環境(TEE)的應用程序,并將它們部署到多個硬件平臺上。基于應用程序SDK的方法允許更好地審查受信任的代碼,因為需要審查的代碼更少,但它確實需要對應用程序進行更改。
基于運行時部署系統的方法的目標是使應用程序能夠在可信執行環境中運行,而不必為特定的硬件平臺或SDK重寫它們。這類解決方案的例子包括IBM Linux安全執行(IBM Z15和LinuxOne III)和開源項目Enarx。成本降低和實現價值所需的時間顯然是基于運行時部署系統的方法的兩個最大優勢。但是,如果不進行任何修改就部署應用程序,可能會阻止它們利用其他特性,比如證實(attestation),除非此類應用程序在編碼時已經考慮到了這一點。
全同態加密
您可以依靠傳統的加密方案,如高級加密標準(AES)來保護傳輸和存儲中的數據。但是它們不能對加密數據進行計算。換句話說,必須先對數據進行解密,然后才能對其進行操作。在這種“數據正在使用”狀態下,敏感數據可能會受到攻擊。全同態加密(FHE)通過直接對加密數據進行計算來解決這個問題。那么,究竟什么是同態加密,以及什么使一個同態加密方案變成全同態的?
同態加密方案支持對加密數據進行某種形式的計算。例如,給定一個明文輸入x和它的加密值E(x),應該可以為某個函數f計算E(f(x)),而不需要訪問x或任何其他秘密信息。在這種情況下,許多著名的加密方案顯示出一些同態特性。例如,使用RSA,明文輸入x被加密為E(x) = xe mod m,其中e是公鑰指數,m是公鑰模。很容易看出,給定兩個密文E(x) = xe mod m和E(y) = ye mod m,對兩個明文輸入x和y進行加密,我們可以將它們相乘得到(xy)e mod m,即xy的加密值。這意味著RSA對于乘法是同態的。
考慮Paillier加密方案。在Paillier中,一個明文輸入x被加密為E(x) = gx rm mod m2,其中g是底數,m是模,r是隨機的。很容易看到,給定兩個密文E (x) = gx rm mod m2和E (y) = gy sm mod m2,加密明文輸入兩個x和y,我們可以一起相加,得到g m (x + y) (rs)m mod m2,即加密x + y的值。這意味著Paillier加法同態。一種只支持乘法或加法的同態加密方案稱為部分同態加密方案。
同態加密的早期嘗試
同時支持乘法和加法的早期方案,如DGHV,對加密數據所能進行的操作數量有限制。因此,這些被稱為某種同態加密。在這些方案中,為了安全起見,在加密過程中添加了“噪聲”。
結果是,隨著每一次加法或乘法運算,噪聲會增加。這種噪聲可能變得如此重要,以至于密文無法被正確解密。因此,全同態加密(FHE)是任何支持對加密數據進行無限次乘法和加法的方案。
2009年,IBM的Craig Gentry取得了突破。他的基于格子( lattice-based )的加密方案是第一個合理的全同態加密(FHE)方案。在Gentry的研究中,關鍵的想法被稱為Bootstrapping。Bootstrapping指的是對密文進行刷新,以生成一個新的密文,加密相同的數據,但使用更低的噪聲水平,以便對其進行更多的同態操作。
Bootstrapping
從概念上講,Bootstrapping可以被認為是用密鑰解密密文,然后重新加密數據。但是,密鑰是未知的。它被稱為Bootstrapping密鑰的密鑰加密所取代。Bootstrapping是迄今為止已知的大多數全同態加密(FHE)方案的核心。
下圖說明了如何使用全同態加密(FHE)將敏感數據上的計算委托給云,同時仍然保持對數據隱私的完全控制。

全同態加密(FHE)是一種非對稱加密,因此使用了如圖所示的公鑰(pk)和私鑰(sk)。Alice使用私鑰加密她的數據,并將她的公鑰共享給云服務,在云服務中,函數f作用于加密數據。當Alice收到結果后,用自己的密鑰解密,得到f(x)。
全同態加密(FHE)方案如何工作?
根據計算模型的不同,全同態加密(FHE)方案可以分為三大類:
布爾電路:將計算表示為布爾電路;這最適合用于數字比較。這類方案的例子包括GSW和TFHE。
模塊運算:將計算表示為整數運算;這最適用于整數運算和標量乘法。這類方案的例子包括BGV和BFV。
近似算法:將計算表示為浮點運輸;這是最適合多項式逼近和ML模型。這類方案的例子包括CKKS。
目前存在一些全同態加密(FHE)的開源實現。它們包括IBM HELib、PALISADE和微軟SEAL。有些方案(如CKKS)在所有三個庫中都可用,但其他方案可能不能在所有庫中都可用。例如,BGV僅在IBM HELib和PALISADE中可用。
全同態加密和機密計算對比
全同態加密和機密計算都是用于保護使用中的數據的新興技術。它們有助于確保敏感/私人有數據在使用時的機密性。全同態加密基于密碼學;因此,其安全性在數學上是可以證明的。另一方面,機密計算是基于可信執行環境的。因此,它的安全性在數學上是無法證明的。例如,雖然可信執行環境(TEE)通過基于硬件的隔離提供了高級別的安全性,但它不能防止側通道攻擊。
雖然全同態加密提供了更強的隱私保證,但它不能保證代碼執行的完整性。這就是機密計算的優勢所在。通過在可信執行環境(TEE)中運行代碼,機密計算在代碼執行的完整性方面提供了更強的保證。因此,全同態加密(FHE)和機密計算不應該被視為競爭的解決方案,而是互補的。
下一個前沿
保護使用中的數據是數據安全的下一個前沿。它使組織能夠信任地將計算委托給云來節省IT基礎設施成本。它還為私有數據的協作分析打開了大門,同時仍然遵守隱私規定。機密計算和全同態加密是用于保護使用中的數據并實現這些用例的關鍵新興技術。從時間軸的角度來看,機密計算更有可能是首先被廣泛采用的技術,特別是運行時部署系統類型,因為這不需要任何應用程序更改。現在已經有了一些早期的例子,例如IBM Cloud上的IBM Data Shield或Microsoft Azure上的Always Encrypted database。
全同態加密在過去十年中取得了巨大的進步,但它需要超越低級密碼庫,以促進其在創建新應用程序中的使用。目前正在朝著這個方向采取一些重要步驟。例如,最近發布的IBM HElayer SDK支持在加密數據上運行人工智能工作負載,而無需理解底層加密基礎。IBM FElayer SDK包含一個Python API,該API使應用程序開發人員和數據科學家能夠通過支持廣泛的分析方法(如線性回歸、邏輯回歸和神經網絡)來使用全同態加密的強大功能。
https://securityintelligence.com/posts/next-frontier-data-security-use/
(完)