摘要:數(shù)據(jù)庫系統(tǒng)作為信息系統(tǒng)中的基礎(chǔ)軟件,其安全十分重要。如何保證和加強(qiáng)數(shù)據(jù)庫的安全性和保密性,已成為目前急需解決的熱門課題。文章分析了數(shù)據(jù)庫加密技術(shù),并以客戶關(guān)系管理系統(tǒng)中客戶表為例進(jìn)行加密設(shè)計(jì)探討。
關(guān)鍵詞:數(shù)據(jù)庫;加密;表結(jié)構(gòu);轉(zhuǎn)換
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)25-7077-02
Discussion on the Design of Oracle Database Encryption
JIA Xue-fang1,2, HOU Zheng-feng1
(1.School of Computer Information,Hefei 230009,China; 2.Ningbo Dahongying University, Ningbo 315175,China)
Abstract: Database system is the foundational software of information system and its security is of great importance. How to ensure and enhance the security and confidentiality of database has now become the heated topic for discussion. This paper firstly analyzes the encryption technology of database and then discusses the encryption design of the customer table in Customer Relationship Management System.
Key words: database;encryption; table structure; transformation
企業(yè)的生存發(fā)展離不開企業(yè)的信息化,信息化的本身離不開數(shù)據(jù)庫的使用。無論大中小型企業(yè),其財(cái)務(wù)信息,銷售數(shù)據(jù)、客戶資料等都離不開數(shù)據(jù)的存儲(chǔ)與共享。如果這些數(shù)據(jù)不能得到安全保障,企業(yè)辛苦得來的數(shù)據(jù)可能被別人竊取并使用,對(duì)個(gè)人或企業(yè)來說都是致命的打擊。企業(yè)自身已有的客戶資料更是企業(yè)的商業(yè)機(jī)密,這些敏感數(shù)據(jù)資料一旦失竊,尤其是被同類企業(yè)獲取,將是致命的打擊。
數(shù)據(jù)庫面臨的威脅主要有:網(wǎng)絡(luò)攻擊;竊取用戶口令非法訪問數(shù)據(jù)庫;有經(jīng)驗(yàn)的攻擊者會(huì)繞過OS或DBMS的控制,直接利用操作系統(tǒng)工具竊取或者篡改數(shù)據(jù)庫信息;數(shù)據(jù)庫管理員(DBA)利用權(quán)力之便可以任意竊取或者篡改數(shù)據(jù)庫信息。[1]如果數(shù)據(jù)庫中敏感數(shù)據(jù)進(jìn)行加密處理,無論哪一種攻擊,對(duì)方獲得的數(shù)據(jù)是加密過的密文,能有效保護(hù)數(shù)據(jù)庫的安全。文章以一個(gè)外貿(mào)銷售企業(yè)客戶關(guān)系管理系統(tǒng)中客戶信息表加密為例,分析了數(shù)據(jù)庫加密技術(shù),并對(duì)客戶信息表加密設(shè)計(jì)中表結(jié)構(gòu)的轉(zhuǎn)換進(jìn)行重點(diǎn)介紹。
1 數(shù)據(jù)庫加密技術(shù)分析[2-3]
對(duì)數(shù)據(jù)庫加密可以采用不同的加密粒度,現(xiàn)在一般采用記錄級(jí)、字段級(jí)和數(shù)據(jù)項(xiàng)級(jí)的加密方法。在具體應(yīng)用中,需要根據(jù)實(shí)際需求,選擇合適的加密方法。
1.1 基于記錄的數(shù)據(jù)庫加密技術(shù)
數(shù)據(jù)庫中每一條記錄包含的信息具有相對(duì)獨(dú)立性,當(dāng)表中需要加密的記錄較少時(shí)可以采用這種方法進(jìn)行加密。例如,一個(gè)公司的客戶表,要求對(duì)交易3次以上的客戶人員進(jìn)行加密,那么不需要對(duì)數(shù)據(jù)庫表中所有記錄進(jìn)行加密。采用這種方式加密的數(shù)據(jù)默認(rèn)每條記錄的所有數(shù)據(jù)項(xiàng)具有相同的安全級(jí)別,即用同一密鑰對(duì)整記錄進(jìn)行加密解密操作。
1.2 基于字段的數(shù)據(jù)庫加密技術(shù)
以字段作為加密的最小單位,加密的是數(shù)據(jù)庫表中的某列數(shù)據(jù),則默認(rèn)同一列內(nèi)所有數(shù)據(jù)具有相同的安全級(jí)別。一些重要信息一般是表中的某些列,如客戶聯(lián)系電話、身份證號(hào)等,只需要對(duì)這些重要數(shù)據(jù)進(jìn)行加密保護(hù),對(duì)普通數(shù)據(jù)列不用進(jìn)行加密。本文將對(duì)字段級(jí)加密的實(shí)現(xiàn)進(jìn)行討論。
1.3 基于數(shù)據(jù)項(xiàng)的數(shù)據(jù)庫加密技術(shù)
這種加密方法是以表中的某些字段作為加密對(duì)象,它是數(shù)據(jù)庫加密的最小粒度。數(shù)據(jù)項(xiàng)級(jí)加密的方法更為靈活,它的實(shí)現(xiàn)方式與字段級(jí)加密相似,但其密鑰管理將會(huì)更加復(fù)雜,安全性也較高。
2 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計(jì)
現(xiàn)在企業(yè)的戰(zhàn)爭是客戶的戰(zhàn)爭,客戶資料尤為重要。企業(yè)客戶關(guān)系管理系統(tǒng)中存儲(chǔ)著重要的客戶信息,其中有企業(yè)商品客戶源的信息和商品銷售出的客戶信息,目前企業(yè)的生存不僅是產(chǎn)品的質(zhì)量,客戶服務(wù)至關(guān)重要,還要關(guān)注客戶的層次,潛在客戶的購買力也不容忽視。對(duì)于公司或員工來說,客戶表中的信息一旦被竊取,客戶和潛在客戶都可能成為別的公司的客戶,損失不可挽回。
外貿(mào)企業(yè)客戶關(guān)系管理系統(tǒng)數(shù)據(jù)庫中主要含有:客戶表,客源表,職工表,銷售檔案表,采購檔案表等。其中客戶表表結(jié)構(gòu)設(shè)計(jì)如表1。
3 數(shù)據(jù)庫表結(jié)構(gòu)的轉(zhuǎn)換[4]
3.1 表結(jié)構(gòu)轉(zhuǎn)換的目的
對(duì)于數(shù)據(jù)庫表結(jié)構(gòu)的轉(zhuǎn)換,主要是指用戶可以對(duì)數(shù)據(jù)庫表中要加密字段的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,在設(shè)計(jì)中把要加密字段的數(shù)據(jù)類型都轉(zhuǎn)化為VARCHAR2類型。對(duì)表結(jié)構(gòu)進(jìn)行轉(zhuǎn)換,是因?yàn)榧用芎蟮臄?shù)據(jù)類型發(fā)生了改變,要轉(zhuǎn)變表的類型來存儲(chǔ)加密后的數(shù)據(jù)。VARCHAR2這個(gè)數(shù)據(jù)類型可以存儲(chǔ)各種各樣的數(shù)據(jù),包括字符型,浮點(diǎn)型,整型等很多種數(shù)據(jù),而且它的數(shù)據(jù)空間也很大,可以滿足位數(shù)很多的數(shù)據(jù)的儲(chǔ)存要求。因此選此數(shù)據(jù)類型來儲(chǔ)存加密后的密文。實(shí)現(xiàn)這一操作需要先通過SQL語句生成轉(zhuǎn)換表的程序,然后利用VC實(shí)現(xiàn)這個(gè)過程。
3.2 數(shù)據(jù)庫表結(jié)構(gòu)轉(zhuǎn)換的實(shí)現(xiàn)
進(jìn)行加密解密程序設(shè)計(jì)之前,要oracle環(huán)境中完成對(duì)數(shù)據(jù)庫表結(jié)構(gòu)的轉(zhuǎn)換,為后面通過VC對(duì)數(shù)據(jù)庫表加密實(shí)現(xiàn)做準(zhǔn)備。在oracle中是通過SQL語言對(duì)數(shù)據(jù)庫表結(jié)構(gòu)進(jìn)行改造。要用到的主要參數(shù)命令如下:
CREAT TABLE 表名(
列名1類型類型說明,
列名2類型類型說明,
列名3類型類型說明……);
這個(gè)語句命令主要完成了建立一個(gè)新表的操作。
INSERT INTO表名 [字段1,字段2,……]
VALUES(值1,值2,……);
INSERT INTO表名 [字段1,字段2,……]
SELECT (字段1,字段2,……) FROM其他表名;
這個(gè)語句命令主要實(shí)現(xiàn)向表中插入數(shù)據(jù),文件等操作。第一個(gè)命令是向指定的表中插入數(shù)據(jù),數(shù)據(jù)可以自己定義,但數(shù)據(jù)的類型必須和表列的類型符合,否則將產(chǎn)生錯(cuò)誤。第二個(gè)命令是把另外的一個(gè)表的內(nèi)容插入到現(xiàn)有的表中,這個(gè)命令可以完成多行的插入,應(yīng)用起來很方便。
TO_CHAR(數(shù)據(jù));
這個(gè)函數(shù)主要是完成轉(zhuǎn)換數(shù)據(jù)類型為VARCHAR2的操作。用戶在使用他時(shí),可以嵌套在其他語句中,這樣可以使操作更加的簡便。
DROP TABLE 表名;
這個(gè)語句命令可以實(shí)現(xiàn)對(duì)表的刪除操作。在數(shù)據(jù)庫中執(zhí)行此語句的時(shí)候,該表將被丟棄。
RENAME 表名1 TO 表名2;
這個(gè)語句命令可以實(shí)現(xiàn)把表1的名字賦給表2。轉(zhuǎn)換之前的表結(jié)構(gòu)如表1 客戶表表結(jié)構(gòu),轉(zhuǎn)換后的表結(jié)構(gòu)如表2。
從表中我們可以看出,表的第一列數(shù)據(jù)類型已經(jīng)轉(zhuǎn)變?yōu)閂ARCHAR類型,其列中相應(yīng)的數(shù)據(jù)也轉(zhuǎn)換為該類型數(shù)據(jù)。既完成對(duì)數(shù)據(jù)類型的轉(zhuǎn)換。
4 數(shù)據(jù)庫加密解密設(shè)計(jì)分析
數(shù)據(jù)庫的加密程序設(shè)計(jì)可以通過VC、VB編程來對(duì)Oracle數(shù)據(jù)庫進(jìn)行訪問、修改、加密解密操作來實(shí)現(xiàn)。
數(shù)據(jù)庫加密的功能可通過數(shù)據(jù)庫自帶的函數(shù)來完成的。可以采用SIN,COS, ASIN , ACOS, SQRT,POWER等函數(shù)。函數(shù)所實(shí)現(xiàn)的功能是把數(shù)據(jù)庫中的數(shù)據(jù)通過這幾個(gè)函數(shù)的運(yùn)算,生成其他的數(shù)值,這些數(shù)值掩蓋了數(shù)據(jù)本身所代表的真正含義。既使偷竊者獲得數(shù)據(jù)庫也不能得到真正的有效數(shù)據(jù)。數(shù)據(jù)庫加密系統(tǒng)程序設(shè)計(jì)如圖1所示。
程序操作過程(以加密工資列為例) ,操作顯示結(jié)果如圖2 執(zhí)行結(jié)果。先配置好數(shù)據(jù)源,而后執(zhí)行程序,第一步連接數(shù)據(jù)庫,連接成功顯示信息如圖2中前四條記錄;第二步加密操作:根據(jù)需要選擇要加密的列,此處先后單擊“加密工資列”-“轉(zhuǎn)換表結(jié)構(gòu)(工資)-“刷新”查看加密后顯示結(jié)果,如圖2中5-8條記錄;第三步解密操作:單擊“還原表結(jié)構(gòu)(工資)”-“解密工資列”-“刷新”查看解密后的顯示結(jié)果如圖2中后四條記錄。
加密操作也可以通過密鑰實(shí)現(xiàn)調(diào)用函數(shù)CryptCreateHash()創(chuàng)建空哈希對(duì)象,利用函數(shù)CryptHashDat()將口令加入到空哈希對(duì)象中,這時(shí)調(diào)用CryptDeriveKey()從口令的哈希中得到會(huì)話密鑰,然后利用會(huì)話密鑰加密文件。加密文件利用的函數(shù)是CryptEncrypt()。利用的加密算法是對(duì)稱算法RC4,密鑰長度是最小256位。
5 結(jié)束語
用VC或VB對(duì)Oracle數(shù)據(jù)庫敏感數(shù)據(jù)進(jìn)行加密和解密,使數(shù)據(jù)庫在一定程度上增加了可靠性,可抵御一般性的攻擊,安全性方面可能不是很好。但對(duì)一般企業(yè)的數(shù)據(jù)庫信息安全來說,基本能滿足安全要求。
參考文獻(xiàn):
[1] 金海江.分布式數(shù)據(jù)庫加密技術(shù)的研究與實(shí)現(xiàn)[D].南京:南京理工大學(xué),2007:1-3.
[2] 王瑾.數(shù)據(jù)庫加密技術(shù)的研究及應(yīng)用[D].四川:西南科技大學(xué),2005:6-14.
[3] 于潔.數(shù)據(jù)庫安全理論研究及實(shí)例[D].成都:成都理工大學(xué),2007:10-13.
[4] 孟德欣.Oracle9i數(shù)據(jù)庫技術(shù)[M].北京:北方交通大學(xué)出版社,004