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