基於密碼學的資料治理Crypto-based Data Governance

ThoughtWorks發表於2017-06-29

最近得益於區塊鏈在金融領域的火爆效應,Crypto-based currency&transaction 改變了金融圈原本“數字貨幣=數字遊戲”的印象,密碼學貨幣不再只是數字貨幣,它還被賦予了“防篡改、去中心”的特性,但是本質上這些事務都是資料治理問題,只不過從原本的“服務級別”的訪問許可權校驗轉入了“資料級別”的完整性校驗。其實密碼學不只可以在金融業務方面做出貢獻,在其他一系列資料治理難題中,我們也可以借鑑其中的一些思路。

下面讓我們來回顧一些常見的資料治理問題,以及我們如何使用密碼學來解決這些問題。

資料私密性

私密性(Confidentiality),資料作為企業的重要財產已經得到足夠的重視,同時作為業務必須的原料又不得不分發到終端。我們既要做好必要的安全防護工作,同時也希望儘可能地靈活管理訪問許可權,在需要的時候能及時地送達業務場景中消化。

這個防護工作的目的也就是保護資料的私密性。通常有兩種方式保障,授權與加密,隨著資料量級的增長,私密性變得越來越細粒度。如何劃分授權與加密這兩種有著明確區分的方案往往被大家混淆,甚至不少開發人員認為授權是加密的一種。

常見的授權(Authorization),包含了驗證(Authentication)與訪問控制(Access Control)兩個部分,驗證是指使用者或者業務模組通過一個私密的憑證來確保身份,它可以是一個密碼,可以是一類數字簽名(包括證書),也可以使用相對複雜的雙向動態授權協議。

驗證後的訪問控制則是將資料許可權更細粒度地拆分,提供一次性或者短暫性的訪問許可權,Token作為一個權證只能用來訪問其對應許可權下的資料,可以防止私密資料過量洩露。而目前一些新的方法中,權證分發本身被改善成了一個數字簽名的過程,通過完全的非對稱密碼系統,讓資料提供方原本需要儲存的Token,轉變為只需要驗證訪問請求所攜帶的數字簽名就可以獲知許可權的Certificate/Signature,例如Hyperledger區塊鏈平臺就採用這種方式,分別簽發Enrollment Certificate和Transaction Certificate為不同的業務場景提供不同的資料訪問許可權。

授權方案的發展歷經了幾個階段(如上圖),雖然和出現時間並沒有太大關係,TLS早就定義了第三種形式作為分發證書鏈的模式,我們可以看到在第二種方案中,通過採用token的授權,使得細粒度的授權分發可以和驗證分離開來。而第三種方案則更進一步,讓雙方不需要再傳輸儲存授權憑證,而且整個授權過程可以是一次性的,而不會影響到資料訪問。

隨著高階密碼學原語的引入,我們甚至可以在驗證授權的過程中為使用者的訪問提供隱私保護,例如通過Dual Receiver Encryption配合Ring Signature可以實現匿名組策略等效果。

加密(Encryption),往往是較為耗時和受限制的資料治理手段,尤其是非對稱加密演算法,只能針對少量的資料集執行,而對稱加密又存在交換祕鑰、儲存管理祕鑰時的隱患。因此作為保護資料私密性的最後手段,我們應該儘量避免濫用誤用,常見的誤用場景包括試圖通過在客戶端加密Token來防止使用者篡改資料訪問許可權、試圖用加密應用程式碼的方式保護資料、試圖僅依靠對稱加密分發資料等等。

常見的加密確保私密性,常常是基於“資料被盜”或者“資料集必須存放在使用者端”的假設,“資料被盜”決定了每個資料池都有必要對基礎設施進行預防,例如對硬碟加密、選擇安全的通訊通道和協議、避免祕鑰洩露、避免系統人為操作、避免內網服務對外開放、減少私有網路的威脅等等。而“資料集必須存放在使用者端”則需要考慮到惡意軟體、逆向工程、暴力破解可能造成的資料損失。

資料完整性

完整性(Integrity),說到區塊鏈的一大賣點就是不可篡改,通過確定交易雙方身份的Signature、交易順序的Merkel Hash tree、Block前向完整性(Forward integrity)Hash,三者(如圖)組成了一套完整的分散式賬本鏈條,其中每一條、每一頁的交易記錄之間、頁與頁之間都由密碼學原語保護。這樣的一種資料結構設計,為區塊鏈帶來了更靈活的去中心結算方案。

將區塊鏈解構之後,我們也可以靈活地將這些密碼學原語用於保障常規資料的完整性,尤其可以應對B2B場景下,企業聯盟之間的資料共享信任問題,通過完整性校驗,可以實現競爭關係下的同業資料融合;通過數字簽名,可以為如票據交易、款項去處之類的資料審計提供證據。

大資料分析提高了對資料真實性的要求,密碼學提供的完整性校驗方案,可以為外來資料治理提供額外的保障。同時由於密碼學原語位於設施的底層,因而這一系列的驗證審計操作都可以自動化執行,而不需要額外的人力來管理校對。

資料可用性

可用性(Availablity),在資料治理中是一個非常困難的話題,我們可以將資料副本分發到業務微服務中快取,也可以採用分散式的儲存方式,這些都是為了解決單點故障、減少大量資料同步的時間開銷,其中Hash Table作為最常見的檢索方式,可以同時保障資料的完整性和可用性,資料池可以使用分塊的方式將資料分散儲存,同時使用Hash來計算出摘要以供後續的檢索,通過額外的加密手段,甚至可以實現對等節點的全量和增量資料同步,而不必擔心資料的私密洩露。

DynamoDB採用了這種Hash一致性演算法,“均勻”地管理資料分片(如圖)。Bittorrent網路採用Hashtable來尋找目標檔案。Spark-mllib也使用了Hash來進行詞頻統計,達到資料分治的效果,避免了維護全域性term-to-index map的麻煩。

此外,加密後的資料由於可讀性問題,很難再做重用,而常見的保護使用者敏感資訊,並且同時保護資料分析可讀性的方法,在微軟和蘋果等公司都有所嘗試,稱為Differential privacy(如圖),資料分析師在提取資料時,Privacy Guard評估Query Privacy impact,為反饋的資料加上噪音,例如可以使用Hash替換掉真實資訊,只保留資料“特徵”,減少使用者隱私洩露的風險,同時又能保留資料的分析價值。

重返焦點

如果說資料湖是每個企業的金庫,那麼資料治理的安全措施就是用於搭起金庫壁壘的一磚一瓦,每個安全措施之間的緊密粘合都依託於完善和牢固的密碼學設計,隨著“安全無小事,商場入戰場”的警鐘不斷敲響,從基礎設施建設上對資料治理的不斷規範化和標準化呼聲越來越高,密碼學重回技術焦點的日子應該不會太遠。

相關文章