關(guān)于數(shù)據(jù)庫(kù)加密,你不能不知道的秘密(二)
本文接前文,繼續(xù)通過(guò)幾個(gè)相關(guān)問(wèn)題的闡述,解開(kāi)數(shù)據(jù)庫(kù)加密的神秘面紗。
1. 如何彌補(bǔ)數(shù)據(jù)庫(kù)加密系統(tǒng)對(duì)數(shù)據(jù)庫(kù)保護(hù)的不足?
通過(guò)配套使用數(shù)據(jù)庫(kù)審計(jì)、數(shù)據(jù)庫(kù)防火墻、數(shù)據(jù)庫(kù)脫敏等系統(tǒng),設(shè)置安全規(guī)則,限制敏感數(shù)據(jù)被訪(fǎng)問(wèn)的記錄數(shù)量、被訪(fǎng)問(wèn)的語(yǔ)句類(lèi)型等多個(gè)方面,防止SQL注入、防止拖庫(kù)、防止后門(mén)程序等攻擊形式,從而形成對(duì)數(shù)據(jù)庫(kù)的全方位保護(hù),彌補(bǔ)數(shù)據(jù)庫(kù)加密對(duì)數(shù)據(jù)庫(kù)保護(hù)的不足。
2. 數(shù)據(jù)庫(kù)加密的關(guān)鍵技術(shù)有哪些?
1)透明加密技術(shù):為使得數(shù)據(jù)加密后對(duì)外部訪(fǎng)問(wèn)完全透明,需要支持所有的訪(fǎng)問(wèn)方式和數(shù)據(jù)庫(kù)特性,這是數(shù)據(jù)庫(kù)加密的基本要求。這就需要加密后表名、字段名保持不變;支持查詢(xún)、插入、更新、刪除等操作;以及支持SQL語(yǔ)句訪(fǎng)問(wèn)、存儲(chǔ)過(guò)程、觸發(fā)器、用戶(hù)自定義函數(shù)、主鍵、外鍵、各種約束等特性。
2)密文索引:字段被加密后,數(shù)據(jù)原來(lái)的字段屬性和大小關(guān)系都會(huì)被修改,原來(lái)的索引也不再有效。比如對(duì)數(shù)值型字段“工資”進(jìn)行加密,加密后字段類(lèi)型可能變?yōu)樽址突蛘逺AW類(lèi)型,且密文不再保持加密前內(nèi)容的大小關(guān)系。如果需要檢索指定的工資值或者范圍值,一種方法就是將所有加密內(nèi)容解密后再進(jìn)行檢索,但是這勢(shì)必會(huì)導(dǎo)致性能的極大降低。密文索引就是對(duì)被加密字段建立索引,使得字段能在被加密狀態(tài)下被高速的執(zhí)行等值、范圍甚至是模糊檢索,以避免加密導(dǎo)致的性能大幅降低。
3)密鑰管理:數(shù)據(jù)的加密和解密都需要使用密鑰,密鑰需要被妥善的管理才能保障數(shù)據(jù)的安全。這就好比無(wú)論多么堅(jiān)固的鎖,如果鑰匙沒(méi)有被妥善保存,都將是形同虛設(shè)。密鑰的管理涉及到密鑰的產(chǎn)生、交換、輪換、失效、備份等環(huán)節(jié)。在數(shù)據(jù)庫(kù)加密中,由于涉及到多個(gè)字段的加密,所以一般需要設(shè)計(jì)多級(jí)密鑰。需要對(duì)所有的密鑰進(jìn)行安全的管理,防止密鑰被泄漏或者破壞。
3. 密文索引技術(shù)有哪些?
密文索引技術(shù)可以粗略的劃分為兩代:
第一代密文索引:基本解決性能和透明問(wèn)題?;舅枷胧抢脭?shù)據(jù)庫(kù)的索引機(jī)制,建立能夠快速查找的B樹(shù)索引。并且對(duì)B樹(shù)所有的節(jié)點(diǎn)進(jìn)行加密,防止索引泄密。該代技術(shù)由北京理工大學(xué)戴林教授發(fā)明。
第二代密文索引:相比第一代技術(shù),具有更高的性能,并且支持通配符模糊檢索?;舅枷胪瑯邮抢脭?shù)據(jù)庫(kù)的機(jī)制,建立能夠快速查找的索引。并且對(duì)索引和加密字段的關(guān)聯(lián)關(guān)系進(jìn)行加密,防止索引泄密。該代技術(shù)由中安威士發(fā)明。
4. 數(shù)據(jù)庫(kù)加密系統(tǒng)的關(guān)鍵指標(biāo)有哪些?
- 是否完全透明,支持所有的數(shù)據(jù)訪(fǎng)問(wèn)和操作,以及所有的數(shù)據(jù)庫(kù)特性;
- 能否對(duì)密文實(shí)現(xiàn)高速等值和范圍查詢(xún);
- 能否對(duì)字符型加密字段實(shí)現(xiàn)高速模糊查詢(xún),也就是LIKE查詢(xún);
- 能否對(duì)數(shù)據(jù)庫(kù)用戶(hù)進(jìn)行增強(qiáng)的訪(fǎng)問(wèn)控制;
- 密文索引自身是否安全性,索引不應(yīng)成為新的泄密點(diǎn);
- 密鑰是否實(shí)現(xiàn)了安全管理,密鑰的組成、保存、生命期等符合相關(guān)安全規(guī)則和規(guī)定。
5. 國(guó)內(nèi)主要數(shù)據(jù)庫(kù)加密廠家有哪些?
包含中安威士在內(nèi),目前國(guó)內(nèi)的數(shù)據(jù)庫(kù)加密源廠家只有很少幾家。為防止廣告嫌疑,本文不對(duì)各家產(chǎn)品的來(lái)源及安全性、性能等方面進(jìn)行評(píng)論。歡迎第三方評(píng)測(cè)機(jī)構(gòu)進(jìn)行評(píng)測(cè)。
6. 為什么數(shù)據(jù)庫(kù)加密產(chǎn)品只支持Oracle?
目前國(guó)內(nèi)的數(shù)據(jù)庫(kù)加密產(chǎn)品都基于第一代索引技術(shù)研制,采用庫(kù)內(nèi)擴(kuò)展的技術(shù)路線(xiàn)。其密文索引的實(shí)現(xiàn)依賴(lài)于數(shù)據(jù)庫(kù)開(kāi)放的自定義索引接口。所謂自定義索引就是數(shù)據(jù)庫(kù)允許用戶(hù)開(kāi)發(fā)索引插件,對(duì)數(shù)據(jù)庫(kù)自身無(wú)法識(shí)別的數(shù)據(jù)類(lèi)型,例如圖片、音樂(lè)等進(jìn)行索引。我們可以將加密后的字段看成數(shù)據(jù)庫(kù)不能識(shí)別的數(shù)據(jù)類(lèi)型,從而定義出密文索引。目前主流數(shù)據(jù)庫(kù)中,僅有Oracle數(shù)據(jù)庫(kù)提供這種接口。而對(duì)于不提供這種接口的數(shù)據(jù)庫(kù)來(lái)說(shuō),雖然仍可以實(shí)現(xiàn)透明加密,但是不能實(shí)現(xiàn)對(duì)加密字段的高速索引,從而性能很低,難以成為通用產(chǎn)品。所以市場(chǎng)上只有針對(duì)Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)加密產(chǎn)品。
7. 能否實(shí)現(xiàn)通用的數(shù)據(jù)庫(kù)加密?
由于上述原因,庫(kù)內(nèi)擴(kuò)展的方式不大可能實(shí)現(xiàn)通用的數(shù)據(jù)庫(kù)加密產(chǎn)品。實(shí)現(xiàn)通用的數(shù)據(jù)庫(kù)加密產(chǎn)品可能的方式有:
1)全盤(pán)和文件加密。也即對(duì)存儲(chǔ)磁盤(pán)或者數(shù)據(jù)庫(kù)文件進(jìn)行加密,但是這種加密方式的安全性較低;
2)數(shù)據(jù)庫(kù)加密網(wǎng)關(guān)或加密驅(qū)動(dòng)。類(lèi)似于CryptDB的系統(tǒng),在數(shù)據(jù)庫(kù)前部署網(wǎng)關(guān),實(shí)現(xiàn)數(shù)據(jù)的加密。中安威士發(fā)明的新專(zhuān)利技術(shù)已經(jīng)克服了CryptDB的缺陷,解決了對(duì)所有訪(fǎng)問(wèn)語(yǔ)句的支持,實(shí)現(xiàn)了密文的等值、范圍、以及模糊索引,并將繼續(xù)實(shí)現(xiàn)對(duì)存儲(chǔ)過(guò)程,觸發(fā)器等的支持。
3)應(yīng)用加密網(wǎng)關(guān)。雖然這種加密方式并不能準(zhǔn)確的被稱(chēng)作數(shù)據(jù)庫(kù)加密,但是可以做到數(shù)據(jù)庫(kù)無(wú)關(guān)。
8. 如何選擇數(shù)據(jù)庫(kù)加密產(chǎn)品?
選擇數(shù)據(jù)庫(kù)加密產(chǎn)品,需要考查如下因素:
a) 是否對(duì)應(yīng)用完全透明,尤其是:
- 對(duì)主鍵、外鍵的透明加密;
- 加密字段的值約束、唯一性約束的透明支持;
- 對(duì)存儲(chǔ)過(guò)程,用戶(hù)自定義函數(shù)、觸發(fā)器等的透明支持。
b) 性能方面,加密是否導(dǎo)致數(shù)據(jù)庫(kù)性能的顯著降低。需要重點(diǎn)關(guān)注以下性能:
- 初始批量加密的性能,也即將已有表中數(shù)據(jù)批量進(jìn)行加密的性能;
- 等值檢索和范圍檢索的性能,也就是從大量加密信息中檢索到滿(mǎn)足等值和范圍查詢(xún)條件記錄的性能;
- 模糊檢索的性能,也就是使用LIKE進(jìn)行關(guān)鍵字、通配符檢索的性能;
- 插入(INSERT)、刪除(DELETE)、更新(UPDATE)記錄的性能。
c) 安全性方面,加密系統(tǒng)是否有新的安全漏洞:
- 索引是否安全:密文索引加密強(qiáng)度是否足夠,或者索引是否直接使用了明文;
- 能否限制DBA等高權(quán)限用戶(hù)對(duì)加密字段的訪(fǎng)問(wèn);
- 是否部分明文暴露:是否將敏感數(shù)據(jù)解密后存儲(chǔ)于臨時(shí)表,這些明文信息將直接暴露給攻擊者。
d) 其他方面:
- 產(chǎn)品是否真正國(guó)產(chǎn);
- 廠家是否真正掌握核心技術(shù);
- 廠家是否具有外資背景,具有外資背景的廠家的產(chǎn)品,應(yīng)用于敏感部門(mén)具有泄密和法規(guī)的風(fēng)險(xiǎn);
- 廠家是否已有或者存在潛在的知識(shí)產(chǎn)權(quán)糾紛。
9. 數(shù)據(jù)庫(kù)加密未來(lái)的發(fā)展趨勢(shì)會(huì)是怎樣的?
目前國(guó)內(nèi)市場(chǎng)主流的數(shù)據(jù)庫(kù)加密方式是庫(kù)內(nèi)擴(kuò)展加密,僅能比較完美的支持Oracle數(shù)據(jù)庫(kù)。但是隨著云計(jì)算和大數(shù)據(jù)的發(fā)展,未來(lái)的數(shù)據(jù)庫(kù)加密將朝著如下趨勢(shì)發(fā)展:
a) 面向云計(jì)算的通用網(wǎng)關(guān)式數(shù)據(jù)庫(kù)加密產(chǎn)品將會(huì)在將來(lái)一到兩年內(nèi)出現(xiàn),并將首先支持云計(jì)算中的主力數(shù)據(jù)庫(kù)MYSQL,然后再支持其他關(guān)系型數(shù)據(jù)庫(kù);
b) 逐漸支持NoSQL數(shù)據(jù)庫(kù)的加密,以加固大數(shù)據(jù)應(yīng)用;
c) 數(shù)據(jù)庫(kù)加密將與數(shù)據(jù)庫(kù)審計(jì)、數(shù)據(jù)庫(kù)防火墻、數(shù)據(jù)庫(kù)脫敏等形成ALL-IN-ONE的數(shù)據(jù)庫(kù)安全平臺(tái);
d) 數(shù)據(jù)庫(kù)加密產(chǎn)品的市場(chǎng)接受度將會(huì)越來(lái)越高,市場(chǎng)容量將會(huì)爆發(fā);
e) 在云計(jì)算中,包括公有云、私有云以及混合云,包括數(shù)據(jù)庫(kù)加密在內(nèi)的數(shù)據(jù)庫(kù)安全產(chǎn)品將成為標(biāo)配。