Oracle數(shù)據(jù)庫(kù)加密技術(shù)
在目前網(wǎng)絡(luò)安全技術(shù)下,任何網(wǎng)絡(luò)都是有漏洞的,在數(shù)據(jù)不加密的情況下,任何系統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)對(duì)內(nèi)部和外部黑客都是公開的,黑客可以在幾分鐘內(nèi)用移動(dòng)硬盤等工具盜竊全部服務(wù)器的文件和數(shù)據(jù)庫(kù)數(shù)據(jù)。因此,要想提高數(shù)據(jù)庫(kù)數(shù)據(jù)及服務(wù)器文件的安全性,我們就需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密,下面我就給大家講一下Oracle數(shù)據(jù)庫(kù)文件是如何加密的?
一、數(shù)據(jù)庫(kù)加密的一般策略
近年來(lái),數(shù)據(jù)庫(kù)加密技術(shù)研究取得一定的研究成果,提出了多種數(shù)據(jù)庫(kù)加密策略,但無(wú)論何種策略,都屬于下面兩種之一:(1)DBMS內(nèi)核層加密;(2)DNMS外圍層加密。這兩種策略的特性及優(yōu)缺點(diǎn)如表所示。

從表中可以看出,兩種加密方法各有優(yōu)缺點(diǎn),在DBMS內(nèi)核層實(shí)現(xiàn)數(shù)據(jù)加密,對(duì)應(yīng)用程序的影響較小,可以適應(yīng)更多的應(yīng)用需求,但加密算法選擇受所采用的數(shù)據(jù)庫(kù)系統(tǒng)限制,并且會(huì)降低數(shù)據(jù)庫(kù)操作性能。而在DBMS外圍層加密,既可采用通用的加密算法,也可采用自己開發(fā)的加密算法,算法選擇靈活多樣,加密安全度高,并且加/解密過(guò)程與數(shù)據(jù)庫(kù)服務(wù)器分離,不影響數(shù)據(jù)庫(kù)系統(tǒng)的效率,但通訊負(fù)載大。在實(shí)際應(yīng)用中采用何種加密策略,需要權(quán)衡利弊,根據(jù)需求來(lái)確定。
二、Oracle數(shù)據(jù)庫(kù)加密策略分析
1、加密軟件包及功能
與Sysbase、SqlServer等數(shù)據(jù)庫(kù)管理系統(tǒng)一樣,Oracle數(shù)據(jù)庫(kù)管理系統(tǒng)的主要功能仍然是實(shí)現(xiàn)對(duì)數(shù)據(jù)的管理及操作,數(shù)據(jù)加密只是為了提高存儲(chǔ)數(shù)據(jù)的安全性而附加的功能。Oracle數(shù)據(jù)庫(kù)加密功能的實(shí)現(xiàn)由數(shù)據(jù)庫(kù)平臺(tái)提供的軟件包來(lái)支持。DBMS-OBFII _ATKON_TOOLKIT(DOTK)是Oracle _9i以及更低版本的數(shù)據(jù)庫(kù)中唯一可用的加密方法,而Oracle Database _10g中,用戶可以通過(guò)一種更加完善的內(nèi)置軟件包DBMS-CRYPTO來(lái)執(zhí)行數(shù)據(jù)加密,它對(duì)早期版的DBMS—OBFUSCATION_TOOTKIT在功能和函數(shù)上進(jìn)行了加強(qiáng)。兩個(gè)軟件包加密功能比較見表。

2、加密算法
從表中可以看出,在軟件包DBMS—OBFUSCATION_TOOTKIT中,加密算法僅支持DES以及三重DES加密算法,而在軟件包DBMS _CRYPTO中不僅支持上述加密算法,而且還支持256位的高級(jí)加密標(biāo)準(zhǔn)AES等,使用戶有了更多的選擇,也使加密數(shù)據(jù)可以達(dá)到更高的安全強(qiáng)度。
兩個(gè)軟件包中支持的算法,無(wú)論哪種算法都屬于分組密碼算法,其分組大小是固定的如果加密信息長(zhǎng)度不在分組邊界,就需要附加數(shù)據(jù)填充,使它充滿整個(gè)分組。填充的方法有固定值填充、隨機(jī)填充、PKCS填充。
固定值填充,最常用的填充值是0x00/0x80加0、1字符串,不常用的填充值是0xff;
隨機(jī)填充采用隨機(jī)位來(lái)填充;
PKCS填充使用信息長(zhǎng)度編碼,因此不需要預(yù)先知 道信息長(zhǎng)度就可以去掉填充。
Oracle _10g中,可以根據(jù)需要用不同的參數(shù)來(lái)確定所選擇的填充類型,而Oracle _9i并不支持?jǐn)?shù)據(jù)填充。在運(yùn)算模式上,Oracle _10g中支持ECB、CBC、CFB及OFB,而Oracle _9i中僅支持CBC。
3、密鑰存儲(chǔ)和管理
在數(shù)據(jù)加密中,密鑰的存儲(chǔ)和管理是非常重要的,它直接影響到數(shù)據(jù)加密的安全性。但是,在數(shù)據(jù)庫(kù)管理系統(tǒng)內(nèi)核層加密策略中,并沒有提供密鑰存儲(chǔ)的方法,這也是在以O(shè)racle提供的安全包為基礎(chǔ)制定加密策略時(shí)最難懈決的部分。在制定密鑰的存儲(chǔ)和管理方案時(shí),要確保以下兩點(diǎn):
(1)密鑰存儲(chǔ),足夠可靠,以確保能夠保護(hù)數(shù)據(jù);
(2)要保證合法用戶且只有合法用戶可以獲取密鑰。
在數(shù)據(jù)庫(kù)文件加密中,密鑰通常存在數(shù)據(jù)庫(kù)中、文件系統(tǒng)中或用戶自身的存儲(chǔ)設(shè)備中。Oracle數(shù)據(jù)庫(kù)文件加密中,密鑰仍然是以數(shù)據(jù)表形式存放在數(shù)據(jù)庫(kù)中。如果密鑰以明文形式存放在數(shù)據(jù)庫(kù)中,那么攻擊者只要進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)中,他就很容易找到破解密文的密鑰。如果密鑰以密文形式存放在數(shù)據(jù)庫(kù)中,那么加密密鑰的密鑰如何存放就成了需要解決的新問題。常用的解決方法是采用多級(jí)密鑰存儲(chǔ)管理,把用戶密鑰與數(shù)據(jù)密鑰結(jié)合使用,提高數(shù)據(jù)庫(kù)加密的安全性。
任何加密策略的安全性都依賴于密鑰的安全,但是Oracle數(shù)據(jù)庫(kù)系統(tǒng)提供的加密方案中,并沒有給出密鑰存儲(chǔ)與管理的安全方法。要想提高數(shù)據(jù)庫(kù)加密系統(tǒng)的安全性,僅依靠數(shù)據(jù)庫(kù)系統(tǒng)自身提供的加密手段顯然是不夠的,還需要輔助其他的外部手段來(lái)實(shí)現(xiàn)密鑰的安全存儲(chǔ)與管理。
小知識(shí)之Oracle數(shù)據(jù)庫(kù)
Oracle_數(shù)據(jù)庫(kù)系統(tǒng)是美國(guó)ORACLE公司(甲骨文)提供的以分布式數(shù)據(jù)庫(kù)為核心的一組軟件產(chǎn)品,是目前最流行的客戶/服務(wù)器(CLIENT/SERVER)或B/S體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)之一。










