面向云服務(wù)的GaussDB全密態(tài)數(shù)據(jù)庫現(xiàn)狀及問題小結(jié)
前言
全密態(tài)數(shù)據(jù)庫,顧名思義與大家所理解的流數(shù)據(jù)庫、圖數(shù)據(jù)庫一樣,就是專門處理密文數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)以加密形態(tài)存儲(chǔ)在數(shù)據(jù)庫服務(wù)器中,數(shù)據(jù)庫支持對(duì)密文數(shù)據(jù)的檢索與計(jì)算,而與查詢?nèi)蝿?wù)相關(guān)的詞法解析、語法解析、執(zhí)行計(jì)劃生成、事務(wù)ACID、數(shù)據(jù)存儲(chǔ)都繼承原有數(shù)據(jù)庫能力。
一、云數(shù)據(jù)庫安全現(xiàn)狀及問題
伴隨著云基礎(chǔ)設(shè)施的快速增長(zhǎng)和成熟,與之對(duì)應(yīng)的云數(shù)據(jù)庫服務(wù)也層出不窮。一方面,受益于云服務(wù)的便捷性傳統(tǒng)企業(yè)加速業(yè)務(wù)上云,通過充分發(fā)揮云數(shù)據(jù)庫特有的輕松部署、高可靠、低成本等優(yōu)勢(shì)降低企業(yè)運(yùn)營(yíng)成本,加速企業(yè)應(yīng)用創(chuàng)新;另一方面,以蘋果iCloud服務(wù)為代表的存儲(chǔ)服務(wù)和云計(jì)算服務(wù)為移動(dòng)消費(fèi)者帶來應(yīng)用便捷性,利用云側(cè)的數(shù)據(jù)庫服務(wù)存儲(chǔ)海量消費(fèi)者的個(gè)人數(shù)據(jù)。
云數(shù)據(jù)庫儼然已成為數(shù)據(jù)庫業(yè)務(wù)未來重要的增長(zhǎng)點(diǎn),絕大多數(shù)的傳統(tǒng)數(shù)據(jù)庫服務(wù)廠商正在加速提供更優(yōu)質(zhì)的云數(shù)據(jù)庫服務(wù)。但無論是傳統(tǒng)的線下數(shù)據(jù)庫服務(wù),還是日益增長(zhǎng)的云數(shù)據(jù)庫服務(wù),數(shù)據(jù)庫的核心任務(wù)都是幫助用戶存儲(chǔ)和管理數(shù)據(jù),在復(fù)雜多樣的環(huán)境下,保證數(shù)據(jù)不丟失、隱私不泄露、數(shù)據(jù)不被篡改以及服務(wù)不中斷。這就要求數(shù)據(jù)庫具備多層次的安全防御機(jī)制,用來抵抗來自內(nèi)部和外部的惡意攻擊行為。
事實(shí)上,經(jīng)過數(shù)據(jù)庫的長(zhǎng)期發(fā)展,已經(jīng)構(gòu)建了體系化的安全能力,比如通過數(shù)據(jù)庫防火墻的入侵防御以及基于AI的攻擊識(shí)別及智能防御,做到“攻不破”;通過在數(shù)據(jù)庫服務(wù)端實(shí)現(xiàn)強(qiáng)認(rèn)證機(jī)制,達(dá)到攻擊者“進(jìn)不來”;通過完善的權(quán)限管理模型、對(duì)象訪問控制及校驗(yàn)機(jī)制做到惡意用戶“拿不走”;通過數(shù)據(jù)加密存儲(chǔ)機(jī)制或數(shù)據(jù)靜態(tài)脫敏及動(dòng)態(tài)脫敏機(jī)制實(shí)現(xiàn)對(duì)關(guān)鍵數(shù)據(jù)的保護(hù),確保數(shù)據(jù)在被非法竊取后攻擊者“看不懂”;通過多副本備份,融合區(qū)塊鏈思想實(shí)現(xiàn)類賬本系統(tǒng)能力,做到“改不了”;通過系統(tǒng)內(nèi)部細(xì)粒度審計(jì)機(jī)制,記錄用戶操作行為,達(dá)到攻擊行為“賴不掉”。除了傳統(tǒng)數(shù)據(jù)庫廠商本身在提升自己的能力外,許多專業(yè)化的評(píng)估測(cè)試機(jī)構(gòu)也在幫助數(shù)據(jù)庫廠商挖掘產(chǎn)品缺陷,加速完善數(shù)據(jù)庫安全能力的構(gòu)建,并出具專業(yè)化評(píng)估報(bào)告,作為第三方背書讓用戶“信得過”。這些成熟的安全技術(shù)手段,構(gòu)建了數(shù)據(jù)庫縱深防御的安全體系,保障數(shù)據(jù)庫在應(yīng)用中的安全。一個(gè)完整的防御架構(gòu)如圖1所示。
圖1:傳統(tǒng)數(shù)據(jù)庫多層級(jí)安全防御架構(gòu)
雖然數(shù)據(jù)庫安全功能越做越強(qiáng),但這些安全技術(shù)手段都是針對(duì)傳統(tǒng)數(shù)據(jù)庫所面臨的威脅構(gòu)建的。作為面向開放市場(chǎng)的云數(shù)據(jù)庫服務(wù),其所面臨的風(fēng)險(xiǎn)相較于傳統(tǒng)數(shù)據(jù)庫更加多樣化,更加復(fù)雜化,無論是應(yīng)用程序漏洞、系統(tǒng)配置錯(cuò)誤,還是惡意管理員都可能對(duì)數(shù)據(jù)安全與隱私保護(hù)造成巨大風(fēng)險(xiǎn)。
云數(shù)據(jù)庫,其部署網(wǎng)絡(luò)由“私有環(huán)境”向“開放環(huán)境”轉(zhuǎn)變,系統(tǒng)運(yùn)維管理角色被拆分為業(yè)務(wù)管理員和運(yùn)維管理員。業(yè)務(wù)管理員擁有業(yè)務(wù)管理的權(quán)限,屬于企業(yè)業(yè)務(wù)方,而運(yùn)維管理員屬于云服務(wù)提供商。數(shù)據(jù)庫運(yùn)維管理員雖然被定義成系統(tǒng)運(yùn)維管理,其實(shí)際依舊享有對(duì)數(shù)據(jù)的完全使用權(quán)限,通過運(yùn)維管理權(quán)限或提權(quán)來訪問數(shù)據(jù)甚至篡改數(shù)據(jù);再者由于開放式的環(huán)境和網(wǎng)絡(luò)邊界的模糊化,用戶數(shù)據(jù)在整個(gè)業(yè)務(wù)流程中被更充分的暴露給攻擊者,無論是傳輸、存儲(chǔ)、運(yùn)維還是運(yùn)行態(tài),都有可能遭受來自攻擊者的攻擊。因此對(duì)于云數(shù)據(jù)庫場(chǎng)景,如何解決第三方可信問題,如何更加可靠的保護(hù)數(shù)據(jù)安全相比傳統(tǒng)數(shù)據(jù)庫面臨著更大挑戰(zhàn),其中數(shù)據(jù)安全、隱私不泄露是整個(gè)云數(shù)據(jù)庫面臨的首要安全挑戰(zhàn)。
當(dāng)前云數(shù)據(jù)庫數(shù)據(jù)安全隱私保護(hù)是針對(duì)數(shù)據(jù)所處階段來制定保護(hù)措施的,如在數(shù)據(jù)傳輸階段使用安全傳輸協(xié)議SSL/TLS,在數(shù)據(jù)持久化存儲(chǔ)階段使用透明存儲(chǔ)加密,在返回結(jié)果階段使用RLS(Row Level Security)或者數(shù)據(jù)脫敏策略。這些傳統(tǒng)技術(shù)手段可以解決單點(diǎn)風(fēng)險(xiǎn),但不成體系,且對(duì)處于運(yùn)行或者運(yùn)維狀態(tài)下的數(shù)據(jù)則缺少有效的保護(hù)。面對(duì)越來越復(fù)雜的云環(huán)境,我們需要一種能夠徹底解決數(shù)據(jù)全生命周期隱私保護(hù)的系統(tǒng)性解決方案。事實(shí)上,近年來學(xué)術(shù)界以及工業(yè)界陸續(xù)提出了許多創(chuàng)新思路:數(shù)據(jù)離開客戶端時(shí),在用戶側(cè)對(duì)數(shù)據(jù)進(jìn)行加密,且不影響服務(wù)端的檢索與計(jì)算,從而實(shí)現(xiàn)敏感數(shù)據(jù)保護(hù),此時(shí)即便數(shù)據(jù)庫管理員也無法接觸到用戶側(cè)的密鑰,進(jìn)而無法獲取明文數(shù)據(jù)。這一思路被稱為全密態(tài)數(shù)據(jù)庫解決方案,或全加密數(shù)據(jù)庫解決方案。
二、全密態(tài)數(shù)據(jù)庫與數(shù)據(jù)全生命周期保護(hù)
全密態(tài)數(shù)據(jù)庫,顧名思義與大家所理解的流數(shù)據(jù)庫、圖數(shù)據(jù)庫一樣,就是專門處理密文數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)以加密形態(tài)存儲(chǔ)在數(shù)據(jù)庫服務(wù)器中,數(shù)據(jù)庫支持對(duì)密文數(shù)據(jù)的檢索與計(jì)算,而與查詢?nèi)蝿?wù)相關(guān)的詞法解析、語法解析、執(zhí)行計(jì)劃生成、事務(wù)ACID、數(shù)據(jù)存儲(chǔ)都繼承原有數(shù)據(jù)庫能力。
在全密態(tài)數(shù)據(jù)庫機(jī)制下,一個(gè)用戶體驗(yàn)良好的業(yè)務(wù)數(shù)據(jù)流圖如下圖1所示。
假定數(shù)據(jù)列c1已以密文形態(tài)存放在數(shù)據(jù)庫服務(wù)端,用戶發(fā)起查詢?nèi)蝿?wù)指令。用戶發(fā)起的查詢?nèi)蝿?wù)無需進(jìn)行特殊化改造,對(duì)于查詢中涉及的與敏感數(shù)據(jù)c1相關(guān)聯(lián)的參數(shù),在客戶端按照與數(shù)據(jù)相同的加密策略(加密算法,加密密鑰等)完成加密,如圖1中關(guān)聯(lián)參數(shù)“123”被加密成“0xfe31da05”。參數(shù)加密完成后整個(gè)查詢?nèi)蝿?wù)被變更成一個(gè)加密的查詢?nèi)蝿?wù)并通過安全傳輸通道發(fā)到數(shù)據(jù)庫服務(wù)端,由數(shù)據(jù)庫服務(wù)端完成基于密文的查詢檢索。檢索得到的結(jié)果仍然為密文,并最終返回客戶端進(jìn)行解密。
圖2:全密態(tài)數(shù)據(jù)庫核心業(yè)務(wù)數(shù)據(jù)流
根據(jù)該業(yè)務(wù)數(shù)據(jù)流可以看出,全密態(tài)數(shù)據(jù)庫的核心思想是:用戶自己持有數(shù)據(jù)加解密密鑰且數(shù)據(jù)加解密過程僅在客戶側(cè)完成,數(shù)據(jù)以密文形態(tài)存在于數(shù)據(jù)庫服務(wù)側(cè)的整個(gè)生命周期過程中,并在數(shù)據(jù)庫服務(wù)端完成查詢運(yùn)算。
由于整個(gè)業(yè)務(wù)數(shù)據(jù)流在數(shù)據(jù)處理過程中都是以密文形態(tài)存在,通過全密態(tài)數(shù)據(jù)庫,可以實(shí)現(xiàn):
(1)保護(hù)數(shù)據(jù)在云上全生命周期的隱私安全,無論數(shù)據(jù)處于何種狀態(tài),攻擊者都無法從數(shù)據(jù)庫服務(wù)端獲取有效信息;
(2)幫助云服務(wù)提供商獲取第三方信任,無論是企業(yè)服務(wù)場(chǎng)景下的業(yè)務(wù)管理員、運(yùn)維管理員,還是消費(fèi)者云業(yè)務(wù)下的應(yīng)用開發(fā)者,用戶通過將密鑰掌握在自己手上,使得高權(quán)限用戶無法獲取數(shù)據(jù)有效信息;
(3)使能合作伙伴,通過全密態(tài)數(shù)據(jù)庫可以讓合作伙伴借助全密態(tài)能力更好的遵守個(gè)人隱私保護(hù)方面的法律法規(guī)。
三、全密態(tài)數(shù)據(jù)庫核心思路與挑戰(zhàn)
正如全密態(tài)數(shù)據(jù)庫定義所描述的那樣,全密態(tài)數(shù)據(jù)庫的核心任務(wù)是保護(hù)數(shù)據(jù)全生命周期安全并實(shí)現(xiàn)基于密文數(shù)據(jù)的檢索計(jì)算。在加密算法足夠安全的情況下,外部攻擊者及內(nèi)部管理員均無法獲取有效的數(shù)據(jù)信息。
對(duì)于用戶來說,從已有數(shù)據(jù)庫服務(wù)切換成全密態(tài)數(shù)據(jù)庫或者直接將應(yīng)用部署于全密態(tài)數(shù)據(jù)庫,需要解決三個(gè)主要的問題:
(1)如何保障密態(tài)計(jì)算機(jī)制的安全性,全密態(tài)數(shù)據(jù)庫從原理上可以有效保障數(shù)據(jù)安全,但這要求密文數(shù)據(jù)檢索及運(yùn)算的算法在機(jī)理和工程上要達(dá)到該原理要求;
(2)如何進(jìn)行業(yè)務(wù)的無縫遷移或者輕量化遷移,全密態(tài)數(shù)據(jù)庫最顯著的特征是數(shù)據(jù)存儲(chǔ)信息的變更,那與加密數(shù)據(jù)相關(guān)的各類參數(shù)都要同步進(jìn)行變更,否則會(huì)因?yàn)橛?jì)算數(shù)據(jù)形態(tài)的不對(duì)等導(dǎo)致查詢紊亂;
(3)如何避免服務(wù)切換所帶來的性能損耗,本質(zhì)上需要將加密算法實(shí)現(xiàn)和工程實(shí)現(xiàn)所產(chǎn)生的性能回退控制在一個(gè)合理的范圍內(nèi),避免因?yàn)椴缓侠淼臄?shù)據(jù)加解密和數(shù)據(jù)存儲(chǔ)膨脹帶來性能急速下降。只有解決這三個(gè)關(guān)鍵問題,才能真正的推動(dòng)全密態(tài)數(shù)據(jù)庫落地。
目前,全密態(tài)數(shù)據(jù)庫在學(xué)術(shù)界和工業(yè)界均有研究和嘗試,主要聚焦于兩種解決方案:
(1)密碼學(xué)解決方案,或稱為純軟解決方案,通過設(shè)計(jì)滿足密文查詢屬性的密碼學(xué)算法來保證查詢的正確性,如已知常見的OPE(Order Preserving Encryption)算法,數(shù)據(jù)加密后仍保留順序?qū)傩?
(2)硬件方案,通過可信執(zhí)行環(huán)境(TEE, Trusted Execution Environment)來處理REE(Rich Execution Environment,REE與TEE相對(duì)應(yīng))環(huán)境中的密文數(shù)據(jù)運(yùn)算,圖3展示了ARM架構(gòu)下的TEE與REE的對(duì)應(yīng)關(guān)系。無論是密碼學(xué)解決方案還是現(xiàn)有的硬件方案都有他們各自的優(yōu)缺點(diǎn)。
圖3:REE與TEE邏輯關(guān)系圖
密碼學(xué)方案的核心思路是整個(gè)運(yùn)算過程都是在密文狀態(tài),通過基于數(shù)學(xué)理論的算法來直接對(duì)密文數(shù)據(jù)進(jìn)行檢索與計(jì)算。該方案需要解決在用戶不感知的條件下,實(shí)現(xiàn)密文數(shù)據(jù)的安全、高效檢索與計(jì)算,當(dāng)前的主要挑戰(zhàn)在兩個(gè)方面:一方面學(xué)術(shù)界當(dāng)前主要的密碼學(xué)算法,大部分都是基于功能實(shí)現(xiàn)及安全能力的考慮,對(duì)于內(nèi)外存儲(chǔ)、網(wǎng)絡(luò)吞吐、計(jì)算消耗等性能指標(biāo)都會(huì)有不同的劣化,甚至有些性能完全脫離了實(shí)際場(chǎng)景,因此如何能在數(shù)據(jù)密文狀態(tài)下實(shí)現(xiàn)檢索和計(jì)算,并且滿足性能要求,是密碼學(xué)方案的最大挑戰(zhàn);另一方面,通常一種數(shù)學(xué)算法只能解決部分業(yè)務(wù)場(chǎng)景,如何將多種密碼學(xué)算法融合,以實(shí)現(xiàn)數(shù)據(jù)庫查詢和計(jì)算的主要功能,也是密碼學(xué)方案的一大挑戰(zhàn)。
硬件方案的核心思路是將存放于REE側(cè)的加密數(shù)據(jù)傳遞給TEE側(cè),并在TEE側(cè)完成數(shù)據(jù)解密和計(jì)算任務(wù)(見圖3),依賴TEE的“隔離性”或“對(duì)REE側(cè)應(yīng)用的不可見性”實(shí)現(xiàn)數(shù)據(jù)計(jì)算過程的安全保護(hù)。一方面,受限于TEE空間的大?。ㄈ鏢GX v1僅提供128MB可用空間、基于ARM TrustZone方案一般也僅提供幾十MB空間),難以處理大量數(shù)據(jù)和復(fù)雜操作,這就要求TEE內(nèi)僅關(guān)注關(guān)鍵敏感數(shù)據(jù)的查詢操作,降低攻擊面;另一方面由于REE與TEE運(yùn)行切換和數(shù)據(jù)交互帶來額外的開銷,因此需要解決整個(gè)運(yùn)算過程中的REE與TEE的計(jì)算資源分配與高效調(diào)度問題,也是硬件方案面臨的一大挑戰(zhàn)。
四、GaussDB全態(tài)數(shù)據(jù)庫解決方案
1. 開創(chuàng)性自適應(yīng)架構(gòu)打造首款支持軟模式密態(tài)計(jì)算
全密態(tài)數(shù)據(jù)庫中的軟件方案和硬件方案目前均已取得了很多進(jìn)展,特別的,工業(yè)界已開始在逐步采用硬件方案。借助諸如Intel SGX等安全硬件的TEE空間,對(duì)數(shù)據(jù)計(jì)算空間進(jìn)行物理或邏輯隔離,實(shí)現(xiàn)數(shù)據(jù)對(duì)REE的“不可見”。但硬件方案目前存在兩個(gè)較大的缺陷:首先由于數(shù)據(jù)在TEE內(nèi)部均為明文存在,因此數(shù)據(jù)的安全性完全依賴于硬件本身的安全性。目前針對(duì)硬件的攻擊方式如側(cè)信道攻擊等越來越多,但是一般硬件設(shè)備更新迭代周期較長(zhǎng),一旦出現(xiàn)漏洞無法及時(shí)更新修補(bǔ),將直接導(dǎo)致用戶數(shù)據(jù)長(zhǎng)時(shí)間暴露在風(fēng)險(xiǎn)之下。其次用戶在使用該特性時(shí),密鑰需要離開客戶端環(huán)境發(fā)送給TEE使用,而該傳輸過程的安全直接依賴于硬件設(shè)備廠商的證書簽名,惡意的硬件設(shè)備廠商人員完全有能力攻擊并竊取用戶的數(shù)據(jù)及密鑰,因此硬件方案,也需要用戶在使用過程中,持續(xù)信任硬件設(shè)備廠商。
全密態(tài)數(shù)據(jù)庫的軟件方案目前在學(xué)術(shù)界發(fā)展較快,通過一系列數(shù)學(xué)算法在密文空間直接對(duì)密文進(jìn)行查詢運(yùn)算,保障數(shù)據(jù)隱私不泄露。軟件方案可以不依賴于硬件能力,也不需要在服務(wù)側(cè)獲取密鑰對(duì)數(shù)據(jù)進(jìn)行解密,但當(dāng)前也存在著在第三章節(jié)提到的巨大挑戰(zhàn)。
圖4:GaussDB全密態(tài)數(shù)據(jù)庫架構(gòu)
在華為全連接大會(huì)上,華為正式發(fā)布基于GaussDB的全密態(tài)數(shù)據(jù)庫解決方案,該方案結(jié)合軟件模式與硬件模式各自的優(yōu)缺點(diǎn),推出融合策略,實(shí)現(xiàn)硬件模式和軟件模式的自由切換,該方案支持全場(chǎng)景應(yīng)用,包括公有云、混合云以及終端智慧業(yè)務(wù),更為重要的是對(duì)終端用戶透明無感知。
在硬件模式下,GaussDB首先支持多硬件平臺(tái)能力,如Intel CPU的SGX能力,以及業(yè)內(nèi)首創(chuàng)的華為自主研發(fā)鯤鵬ARM TrustZone能力。其次GaussDB實(shí)現(xiàn)了最小粒度的隔離級(jí)別,使得攻擊面最小化,并且通過一系列的密鑰安全保障機(jī)制,如多層密鑰管理體系、可信傳輸通道、會(huì)話級(jí)密鑰管理機(jī)制等,實(shí)現(xiàn)了硬件環(huán)境中的數(shù)據(jù)及密鑰安全,從而降低因硬件安全問題而導(dǎo)致的用戶數(shù)據(jù)及密鑰泄露風(fēng)險(xiǎn)。
由于硬件模式依賴于硬件及其生產(chǎn)廠商的安全和信譽(yù),且用戶在實(shí)際使用過程中需要依賴特性硬件環(huán)境,GaussDB還開創(chuàng)性的支持了軟件模式的密態(tài)查詢能力,通過對(duì)多種密碼學(xué)算法的深度性能優(yōu)化,構(gòu)建出不同的密態(tài)查詢引擎,以完成不同的檢索和計(jì)算功能,實(shí)現(xiàn)數(shù)據(jù)等值查詢、范圍查詢、保序查詢、表達(dá)式計(jì)算等特性。特別的,通過引入確定性加密機(jī)制,實(shí)現(xiàn)了數(shù)據(jù)的增刪改查、表字段關(guān)聯(lián)、等值檢索等基本操作;基于GS-OPE算法的密文索引技術(shù),實(shí)現(xiàn)了數(shù)據(jù)密態(tài)保序查詢、表達(dá)式大小比較等常規(guī)操作;通過Range-Identify算法,實(shí)現(xiàn)數(shù)據(jù)密態(tài)范圍查詢。
GaussDB全密態(tài)數(shù)據(jù)庫解決方案創(chuàng)新性的解決了多個(gè)技術(shù)難點(diǎn),實(shí)現(xiàn)了對(duì)用戶無感知、數(shù)據(jù)加密無泄漏等核心競(jìng)爭(zhēng)力。
2. 全自動(dòng)加密驅(qū)動(dòng)實(shí)現(xiàn)用戶數(shù)據(jù)庫操作無感知
要實(shí)現(xiàn)在客戶端進(jìn)行加解密,無疑需要在客戶端進(jìn)行大量維護(hù)管理,包括數(shù)據(jù)密鑰管理,敏感數(shù)據(jù)加密,解析和修改SQL語句等。如果僅僅提供數(shù)據(jù)加密工具,由用戶來對(duì)數(shù)據(jù)進(jìn)行顯式加密,一方面會(huì)增加用戶的開發(fā)成本,另一方面用戶也容易因數(shù)據(jù)加密不到位而造成數(shù)據(jù)泄露。
GaussDB將這一系列的復(fù)雜操作,全部封裝在客戶端加密驅(qū)動(dòng)中,實(shí)現(xiàn)了完全自動(dòng)化的敏感信息加密替換,同時(shí)在數(shù)據(jù)庫中存儲(chǔ)了所有加密相關(guān)的元信息,使得數(shù)據(jù)庫可以很好的識(shí)別和處理對(duì)應(yīng)的加密數(shù)據(jù)。如圖5所示,由于SQL語句中與敏感信息相關(guān)的參數(shù)也被加密處理,使得發(fā)送至數(shù)據(jù)庫服務(wù)側(cè)的查詢?nèi)蝿?wù)(圖中ciphertext query)也不會(huì)泄露用戶查詢意圖,減少客戶端的復(fù)雜安全管理及操作難度,實(shí)現(xiàn)用戶應(yīng)用開發(fā)無感知。另外,GaussDB提供一系列的配置接口,滿足用戶對(duì)加密字段、加密算法、密鑰安全存儲(chǔ)等不同場(chǎng)景的需要。GaussDB全密態(tài)數(shù)據(jù)庫的透明性使得用戶在任務(wù)遷移時(shí)將獲得極大的便捷性。
圖5:全自動(dòng)客戶端加密驅(qū)動(dòng)
3. 利用算子級(jí)隔離顯著降低安全風(fēng)險(xiǎn)
當(dāng)密文查詢進(jìn)入數(shù)據(jù)庫內(nèi)核之后,就需要依賴現(xiàn)有的查詢處理模塊來完成數(shù)據(jù)運(yùn)算。對(duì)數(shù)據(jù)庫這種高度復(fù)雜的系統(tǒng),在硬件模式下,如何將敏感數(shù)據(jù)的檢索、計(jì)算等核心功能解耦隔離,放在安全環(huán)境中獨(dú)立運(yùn)行,從而最小化敏感數(shù)據(jù)計(jì)算面臨的安全風(fēng)險(xiǎn),一直是GaussDB的一個(gè)重大難題。
圖6:主流硬件隔離方案
當(dāng)前業(yè)界主要有三種TEE隔離計(jì)算方案:數(shù)據(jù)庫級(jí)隔離、模塊級(jí)隔離、算子級(jí)隔離。這三種方案從攻擊面和工程實(shí)現(xiàn)維度來看,有顯著的差異。
數(shù)據(jù)庫級(jí)隔離,是在TEE中完整的建立一個(gè)特殊的數(shù)據(jù)庫引擎,將敏感數(shù)據(jù)的查詢請(qǐng)求直接發(fā)送給該數(shù)據(jù)庫進(jìn)行全部的解析和執(zhí)行處理。該方案的架構(gòu)比較清晰,實(shí)現(xiàn)簡(jiǎn)單,安全性和可靠性直接依賴于TEE中數(shù)據(jù)庫的能力。然而,由于TEE中數(shù)據(jù)庫引擎的代碼規(guī)模較大,因此數(shù)據(jù)庫實(shí)例需要消耗更多的TEE側(cè)資源,且一旦由于潛在代碼缺陷導(dǎo)致在執(zhí)行過程出現(xiàn)嚴(yán)重錯(cuò)誤,將導(dǎo)致出現(xiàn)TEE環(huán)境崩潰等嚴(yán)重后果。
模塊級(jí)隔離,是將SQL執(zhí)行器放到TEE中,實(shí)現(xiàn)對(duì)語句的執(zhí)行過程進(jìn)行保護(hù)。執(zhí)行器是數(shù)據(jù)庫查詢語句的查詢?nèi)蝿?wù)執(zhí)行模塊,與數(shù)據(jù)庫級(jí)隔離相比,這種方式減小了TEE中的代碼規(guī)模,其安全性主要依賴于執(zhí)行模塊的安全能力。但該方式下仍有大量與敏感數(shù)據(jù)計(jì)算無關(guān)的操作將在TEE中運(yùn)行,而這些操作都可能接觸到明文數(shù)據(jù),故而容易引入錯(cuò)誤或者無意泄露敏感數(shù)據(jù),留下安全攻擊隱患。
算子級(jí)隔離。算子是機(jī)密數(shù)據(jù)計(jì)算的最小、最核心功能單元,如數(shù)據(jù)排序算子、表達(dá)式計(jì)算等。通過將密文算子放在TEE中執(zhí)行,可以針對(duì)性的對(duì)敏感數(shù)據(jù)進(jìn)行重點(diǎn)保護(hù),排除非敏感數(shù)據(jù)操作帶來的潛在風(fēng)險(xiǎn),具有最小規(guī)模的代碼實(shí)現(xiàn)。但是其難度和挑戰(zhàn)并存:首先,數(shù)據(jù)庫的復(fù)雜性決定了將敏感數(shù)據(jù)的單一算子執(zhí)行過程進(jìn)行解耦存在較大的挑戰(zhàn)性,傳統(tǒng)的pipeline執(zhí)行流程意味著單個(gè)算子執(zhí)行過程的連續(xù)性,針對(duì)算子執(zhí)行過程中的核心計(jì)算流程進(jìn)行解耦就需要進(jìn)行定向梳理;其次單個(gè)查詢語句通常涉及多個(gè)算子運(yùn)算,整個(gè)查詢運(yùn)算流程需要根據(jù)算子運(yùn)算需求多次切換到TEE側(cè)環(huán)境,對(duì)性能造成影響。
為了追求極致的安全,GaussDB選擇了算子級(jí)隔離策略。為了解決算子級(jí)隔離的兩大問題,GaussDB全密態(tài)數(shù)據(jù)庫通過精心設(shè)計(jì),成功實(shí)現(xiàn)了最小粒度的敏感數(shù)據(jù)檢索和計(jì)算模塊。同時(shí),從多個(gè)層面對(duì)REE與TEE之間的world switch的性能和數(shù)據(jù)傳輸方式進(jìn)行深度優(yōu)化,將性能影響降到最低。從而在顯著減小安全風(fēng)險(xiǎn)的同時(shí),也有力地保障了數(shù)據(jù)庫系統(tǒng)的高效運(yùn)行。
4. 高強(qiáng)度密鑰體系保障密鑰安全
整個(gè)全密態(tài)數(shù)據(jù)庫解決方案中除數(shù)據(jù)本身具有敏感性質(zhì)外,最為敏感的信息就是數(shù)據(jù)加解密密鑰,一旦密鑰泄露,將給用戶數(shù)據(jù)帶來嚴(yán)重風(fēng)險(xiǎn)。特別是在硬件模式下,密鑰需離開用戶側(cè),傳輸?shù)皆苽?cè)可信硬件環(huán)境中,其安全保護(hù)至關(guān)重要。GaussDB通過實(shí)現(xiàn)三層密鑰體系,讓各層密鑰各司其職,真正做到密鑰高強(qiáng)度的安全保護(hù)。
圖7:GaussDB高強(qiáng)度密鑰體系
第一層為數(shù)據(jù)密鑰,做到了字段級(jí)別,即針對(duì)不同的字段將采用不同的密鑰,同時(shí)對(duì)相同字段不同數(shù)據(jù)采用不同的鹽值,以實(shí)現(xiàn)不同字段之間的加密隔離,即使某一列數(shù)據(jù)的加密密鑰被泄露,也不會(huì)影響到其他數(shù)據(jù)安全,提升整體數(shù)據(jù)的安全性。
第二層為用戶密鑰,對(duì)不同用戶將使用不同的密鑰,以實(shí)現(xiàn)用戶之間的加密隔離,而且用戶密鑰永遠(yuǎn)不會(huì)離開用戶可信環(huán)境;使得包括管理員在內(nèi)的其他用戶,即便竊取了數(shù)據(jù)的訪問權(quán)限,也無法解密最終數(shù)據(jù)。
第三層為設(shè)備密鑰,即對(duì)不同的密鑰存儲(chǔ)設(shè)備或工具,使用不同的密鑰進(jìn)行保護(hù),實(shí)現(xiàn)設(shè)備間的加密隔離,大大增加了攻擊用戶密鑰存儲(chǔ)設(shè)備或工具破解密鑰的難度。
不僅如此,由于在硬件模式下,需要將字段級(jí)密鑰傳輸給硬件TEE環(huán)境使用。GaussDB在該場(chǎng)景下進(jìn)行了更高強(qiáng)度的保護(hù)措施:首先,通過ECCDH協(xié)議安全協(xié)商和TEE內(nèi)置證書簽名校驗(yàn),構(gòu)建用戶側(cè)與TEE環(huán)境之間的可信通道,保證密鑰安全可信的加密傳輸,防止中間人攻擊;其次,密鑰不會(huì)以任何形式離開TEE環(huán)境,只在會(huì)話期間存在,結(jié)束立刻釋放,最小化數(shù)據(jù)密鑰生命周期,防止因代碼漏洞或異常情況引起的密鑰泄露。
五、全密態(tài)數(shù)據(jù)庫的未來
全密態(tài)數(shù)據(jù)庫技術(shù)理念拋開了傳統(tǒng)的多點(diǎn)技術(shù)單點(diǎn)解決數(shù)據(jù)風(fēng)險(xiǎn)的問題,通過系統(tǒng)化思維建立了一套能夠覆蓋數(shù)據(jù)全生命周期的安全保護(hù)機(jī)制。這套機(jī)制使得用戶在無感知的情況下就解決了數(shù)據(jù)的安全隱私保護(hù),對(duì)于攻擊者和管理者來說都無法獲取有效信息。全密態(tài)數(shù)據(jù)庫是數(shù)據(jù)庫安全隱私保護(hù)的高級(jí)防御手段,但全密態(tài)數(shù)據(jù)庫在當(dāng)前仍存在一定的局限性,仍需要突破算法安全性和性能損耗等相關(guān)問題。
全密態(tài)數(shù)據(jù)庫在實(shí)際應(yīng)用中建議僅針對(duì)敏感數(shù)據(jù)進(jìn)行使用,通過借助于數(shù)據(jù)庫本身提供的多方位數(shù)據(jù)保護(hù)機(jī)制,為不同等級(jí)的數(shù)據(jù)提供不同層級(jí)的安全機(jī)制,從而構(gòu)建全方位的數(shù)據(jù)安全保護(hù)機(jī)制。未來GaussDB會(huì)將該能力逐步開源到openGauss,與社區(qū)共同推進(jìn)和完善全密態(tài)數(shù)據(jù)庫解決方案,一起打造數(shù)據(jù)庫安全生態(tài)。
到此這篇關(guān)于面向云服務(wù)的GaussDB全密態(tài)數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)GaussDB全密態(tài)數(shù)據(jù)庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
dapper使用Insert或update時(shí)部分字段不映射到數(shù)據(jù)庫
我們?cè)谑褂胐apper的insert或update方法時(shí)可能會(huì)遇見一些實(shí)體中存在的字段但是,數(shù)據(jù)庫中不存在的字段,這樣在使用insert時(shí)就是拋出異常提示字段不存在,這個(gè)時(shí)候該怎么解決呢,下面給大家分享示例實(shí)體代碼,感興趣的朋友一起看看吧2023-12-12mycat在windows環(huán)境下的安裝和啟動(dòng)
這篇文章主要介紹了mycat在windows環(huán)境下的安裝和啟動(dòng)過程,需要的朋友參考下吧2018-03-03ADO,OLEDB,ODBC,DAO,RDO的區(qū)別說明
ADO,OLEDB,ODBC,DAO,RDO的區(qū)別說明,因?yàn)槲覀冇贸绦蜷_發(fā)的時(shí)候經(jīng)常會(huì)用到OLEDB,ODBC鏈接數(shù)據(jù)庫等2012-09-09DBeaver操作數(shù)據(jù)表的拷貝的實(shí)現(xiàn)
這篇文章主要介紹了DBeaver操作數(shù)據(jù)表的拷貝的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11在PostgreSQL中實(shí)現(xiàn)遞歸查詢的教程
這篇文章主要介紹了在PostgreSQL中實(shí)現(xiàn)遞歸查詢的教程,包括在遞歸查詢內(nèi)排序等方法的介紹,需要的朋友可以參考下2015-04-04TDSQL 安裝部署附圖的實(shí)現(xiàn)(圖文)
這篇文章主要介紹了TDSQL 安裝部署附圖的實(shí)現(xiàn)(圖文),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10使用sqlalchemy-gbasedbt連接GBase 8s數(shù)據(jù)庫的步驟詳解
這篇文章主要介紹了使用sqlalchemy-gbasedbt連接GBase 8s數(shù)據(jù)庫的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04超大數(shù)據(jù)量存儲(chǔ)常用數(shù)據(jù)庫分表分庫算法總結(jié)
這篇文章主要介紹了超大數(shù)據(jù)量存儲(chǔ)常用數(shù)據(jù)庫分表分庫算法總結(jié),本文講解了按自然時(shí)間來分表/分庫、按數(shù)字類型hash分表/分庫、按md5值來分表/分庫三種方法,以及分表所帶來的問題探討,需要的朋友可以參考下2015-07-07如何讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大
這篇文章主要介紹了如何讓Birt報(bào)表腳本數(shù)據(jù)源變得既簡(jiǎn)單又強(qiáng)大,需要的朋友可以參考下2018-11-11