基于密碼學(xué)的數(shù)據(jù)治理Crypto-based Data Governance
最近得益于區(qū)塊鏈在金融領(lǐng)域的火爆效應(yīng),Crypto-based currency&transaction改變了金融圈原本“數(shù)字貨幣=數(shù)字游戲”的印象,密碼學(xué)貨幣不再只是數(shù)字貨幣,它還被賦予了“防篡改、去中心”的特性,但是本質(zhì)上這些事務(wù)都是數(shù)據(jù)治理問題,只不過從原本的“服務(wù)級別”的訪問權(quán)限校驗轉(zhuǎn)入了“數(shù)據(jù)級別”的完整性校驗。其實密碼學(xué)不只可以在金融業(yè)務(wù)方面做出貢獻,在其他一系列數(shù)據(jù)治理難題中,我們也可以借鑒其中的一些思路。
下面讓我們來回顧一些常見的數(shù)據(jù)治理問題,以及我們?nèi)绾问褂妹艽a學(xué)來解決這些問題。
數(shù)據(jù)私密性
私密性(Confidentiality),數(shù)據(jù)作為企業(yè)的重要財產(chǎn)已經(jīng)得到足夠的重視,同時作為業(yè)務(wù)必須的原料又不得不分發(fā)到終端。我們既要做好必要的安全防護工作,同時也希望盡可能地靈活管理訪問權(quán)限,在需要的時候能及時地送達業(yè)務(wù)場景中消化。
這個防護工作的目的也就是保護數(shù)據(jù)的私密性。通常有兩種方式保障,授權(quán)與加密,隨著數(shù)據(jù)量級的增長,私密性變得越來越細粒度。如何劃分授權(quán)與加密這兩種有著明確區(qū)分的方案往往被大家混淆,甚至不少開發(fā)人員認為授權(quán)是加密的一種。
常見的授權(quán)(Authorization),包含了驗證(Authentication)與訪問控制(Access Control)兩個部分,驗證是指用戶或者業(yè)務(wù)模塊通過一個私密的憑證來確保身份,它可以是一個密碼,可以是一類數(shù)字簽名(包括證書),也可以使用相對復(fù)雜的雙向動態(tài)授權(quán)協(xié)議。
驗證后的訪問控制則是將數(shù)據(jù)權(quán)限更細粒度地拆分,提供一次性或者短暫性的訪問權(quán)限,Token作為一個權(quán)證只能用來訪問其對應(yīng)權(quán)限下的數(shù)據(jù),可以防止私密數(shù)據(jù)過量泄露。而目前一些新的方法中,權(quán)證分發(fā)本身被改善成了一個數(shù)字簽名的過程,通過完全的非對稱密碼系統(tǒng),讓數(shù)據(jù)提供方原本需要保存的Token,轉(zhuǎn)變?yōu)橹恍枰炞C訪問請求所攜帶的數(shù)字簽名就可以獲知權(quán)限的Certificate/Signature,例如Hyperledger區(qū)塊鏈平臺就采用這種方式,分別簽發(fā)Enrollment Certificate和Transaction Certificate為不同的業(yè)務(wù)場景提供不同的數(shù)據(jù)訪問權(quán)限。

授權(quán)方案的發(fā)展歷經(jīng)了幾個階段(如上圖),雖然和出現(xiàn)時間并沒有太大關(guān)系,TLS早就定義了第三種形式作為分發(fā)證書鏈的模式,我們可以看到在第二種方案中,通過采用token的授權(quán),使得細粒度的授權(quán)分發(fā)可以和驗證分離開來。而第三種方案則更進一步,讓雙方不需要再傳輸存儲授權(quán)憑證,而且整個授權(quán)過程可以是一次性的,而不會影響到數(shù)據(jù)訪問。
隨著高階密碼學(xué)原語的引入,我們甚至可以在驗證授權(quán)的過程中為用戶的訪問提供隱私保護,例如通過Dual Receiver Encryption配合Ring Signature可以實現(xiàn)匿名組策略等效果。
加密(Encryption),往往是較為耗時和受限制的數(shù)據(jù)治理手段,尤其是非對稱加密算法,只能針對少量的數(shù)據(jù)集執(zhí)行,而對稱加密又存在交換秘鑰、存儲管理秘鑰時的隱患。因此作為保護數(shù)據(jù)私密性的***手段,我們應(yīng)該盡量避免濫用誤用,常見的誤用場景包括試圖通過在客戶端加密Token來防止用戶篡改數(shù)據(jù)訪問權(quán)限、試圖用加密應(yīng)用代碼的方式保護數(shù)據(jù)、試圖僅依靠對稱加密分發(fā)數(shù)據(jù)等等。
常見的加密確保私密性,常常是基于“數(shù)據(jù)被盜”或者“數(shù)據(jù)集必須存放在用戶端”的假設(shè),“數(shù)據(jù)被盜”決定了每個數(shù)據(jù)池都有必要對基礎(chǔ)設(shè)施進行預(yù)防,例如對硬盤加密、選擇安全的通信信道和協(xié)議、避免秘鑰泄露、避免系統(tǒng)人為操作、避免內(nèi)網(wǎng)服務(wù)對外開放、減少私有網(wǎng)絡(luò)的威脅等等。而“數(shù)據(jù)集必須存放在用戶端”則需要考慮到惡意軟件、逆向工程、暴力破解可能造成的數(shù)據(jù)損失。
數(shù)據(jù)完整性
完整性(Integrity),說到區(qū)塊鏈的一大賣點就是不可篡改,通過確定交易雙方身份的Signature、交易順序的Merkel Hash tree、Block前向完整性(Forward integrity)Hash,三者(如圖)組成了一套完整的分布式賬本鏈條,其中每一條、每一頁的交易記錄之間、頁與頁之間都由密碼學(xué)原語保護。這樣的一種數(shù)據(jù)結(jié)構(gòu)設(shè)計,為區(qū)塊鏈帶來了更靈活的去中心結(jié)算方案。

將區(qū)塊鏈解構(gòu)之后,我們也可以靈活地將這些密碼學(xué)原語用于保障常規(guī)數(shù)據(jù)的完整性,尤其可以應(yīng)對B2B場景下,企業(yè)聯(lián)盟之間的數(shù)據(jù)共享信任問題,通過完整性校驗,可以實現(xiàn)競爭關(guān)系下的同業(yè)數(shù)據(jù)融合;通過數(shù)字簽名,可以為如票據(jù)交易、款項去處之類的數(shù)據(jù)審計提供證據(jù)。
大數(shù)據(jù)分析提高了對數(shù)據(jù)真實性的要求,密碼學(xué)提供的完整性校驗方案,可以為外來數(shù)據(jù)治理提供額外的保障。同時由于密碼學(xué)原語位于設(shè)施的底層,因而這一系列的驗證審計操作都可以自動化執(zhí)行,而不需要額外的人力來管理校對。
數(shù)據(jù)可用性
可用性(Availablity),在數(shù)據(jù)治理中是一個非常困難的話題,我們可以將數(shù)據(jù)副本分發(fā)到業(yè)務(wù)微服務(wù)中緩存,也可以采用分布式的存儲方式,這些都是為了解決單點故障、減少大量數(shù)據(jù)同步的時間開銷,其中Hash Table作為最常見的檢索方式,可以同時保障數(shù)據(jù)的完整性和可用性,數(shù)據(jù)池可以使用分塊的方式將數(shù)據(jù)分散存儲,同時使用Hash來計算出摘要以供后續(xù)的檢索,通過額外的加密手段,甚至可以實現(xiàn)對等節(jié)點的全量和增量數(shù)據(jù)同步,而不必擔(dān)心數(shù)據(jù)的私密泄露。
DynamoDB采用了這種Hash一致性算法,“均勻”地管理數(shù)據(jù)分片(如圖)。Bittorrent網(wǎng)絡(luò)采用Hashtable來尋找目標(biāo)文件。Spark-mllib也使用了Hash來進行詞頻統(tǒng)計,達到數(shù)據(jù)分治的效果,避免了維護全局term-to-index map的麻煩。

此外,加密后的數(shù)據(jù)由于可讀性問題,很難再做重用,而常見的保護用戶敏感信息,并且同時保護數(shù)據(jù)分析可讀性的方法,在微軟和蘋果等公司都有所嘗試,稱為Differential privacy(如圖),數(shù)據(jù)分析師在提取數(shù)據(jù)時,Privacy Guard評估Query Privacy impact,為反饋的數(shù)據(jù)加上噪音,例如可以使用Hash替換掉真實信息,只保留數(shù)據(jù)“特征”,減少用戶隱私泄露的風(fēng)險,同時又能保留數(shù)據(jù)的分析價值。

重返焦點
如果說數(shù)據(jù)湖是每個企業(yè)的金庫,那么數(shù)據(jù)治理的安全措施就是用于搭起金庫壁壘的一磚一瓦,每個安全措施之間的緊密粘合都依托于完善和牢固的密碼學(xué)設(shè)計,隨著“安全無小事,商場入戰(zhàn)場”的警鐘不斷敲響,從基礎(chǔ)設(shè)施建設(shè)上對數(shù)據(jù)治理的不斷規(guī)范化和標(biāo)準(zhǔn)化呼聲越來越高,密碼學(xué)重回技術(shù)焦點的日子應(yīng)該不會太遠。