數(shù)據(jù)庫加密技術(shù)在BS辦公自動化系統(tǒng)中的應(yīng)用

BS辦公自動化系統(tǒng)是隨著Internet技術(shù)的興起而興起的,是對C/S系統(tǒng)的一種變化和改進(jìn)。BS辦公自動化系統(tǒng)建立在廣域網(wǎng)上,面向的是不可知用戶群,對安全的控制力較弱。因此將數(shù)據(jù)庫加密技術(shù)應(yīng)用于BS辦公自動化系統(tǒng)中將有助于提高系統(tǒng)的安全性能。

一、數(shù)據(jù)庫加密技術(shù)

1、數(shù)據(jù)庫加密的設(shè)計要求

數(shù)據(jù)庫文件加密解密應(yīng)當(dāng)做到以下幾點(diǎn)要求:

(1)在實(shí)現(xiàn)數(shù)據(jù)庫文件加密后,特權(quán)用戶(如DBA、系統(tǒng)安全員)的權(quán)限度受到限制,沒有授權(quán)就無法看到被加密的數(shù)據(jù);

(2)加密后的數(shù)據(jù)庫文件操作仍然可行有效;

(3)加密后的數(shù)據(jù)存儲時應(yīng)基本不增加空間開銷;

(3)對數(shù)據(jù)庫文件中數(shù)據(jù)加密和解密時需要給定加密算法、密鑰、密鑰長度等加密屬性,要求數(shù)據(jù)庫加密要有一個合理、安全的密鑰管理體制,便于系統(tǒng)管理和使用。

2、加密層次

可以考慮在三個不同層次實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的加密,分別是OS層,DBMS內(nèi)核層和DBMS外層。在OS層加密,即直接對數(shù)據(jù)庫文件進(jìn)行加密,雖然開發(fā)簡單但當(dāng)進(jìn)行數(shù)據(jù)庫操作時需要對整個數(shù)據(jù)庫作加解密操作,時空代價較大,可靠性不高;在DBMS內(nèi)核層加密,加解密過程對用戶與應(yīng)用透明,數(shù)據(jù)在物理存取之前完成加密和解密工作,但這種方式加重了數(shù)據(jù)庫服務(wù)器負(fù)載,自主性受限且難于開發(fā):本文將采用在DBMS外層加密,即在DBMS外層增加數(shù)據(jù)庫文件加密層,它可以實(shí)現(xiàn)加密和解密、定義加密需求、密鑰管理等,雖然數(shù)據(jù)庫文件的操作效率會有所降低,但能夠相對靈活的完成加解密工作。

3、加密范圍

數(shù)據(jù)文件加密通過對明文進(jìn)行復(fù)雜的加密操作,以達(dá)到無法發(fā)現(xiàn)明文和密文之間、密文和密鑰之間的內(nèi)在關(guān)系。但是,DBMS要完成對數(shù)據(jù)庫文件的管理和使用,因此,對數(shù)據(jù)庫中數(shù)據(jù)而言,以下幾種字段不能加密。

(1)索引字段不能加密。為了達(dá)到迅速查詢的目的,數(shù)據(jù)庫文件的索引,無論是字典式的單詞索引、B_樹索引或者HASH函數(shù)索引等,它們的建立和應(yīng)用必須是明文狀態(tài)。

(2)關(guān)系運(yùn)算的比較字段不能加密。DBMS要組織和完成關(guān)系運(yùn)算,參加并、差、積、商、投影、選擇和連接等操作的數(shù)據(jù)一般都要經(jīng)過條件篩選,這種“條件”選擇項(xiàng)必須是明文。

(3)表間的連接碼字段不能加密。數(shù)據(jù)庫表之間存在著密切的聯(lián)系,這種相關(guān)性往往是通過“外部編碼”聯(lián)系的,這些編碼若加密就無法進(jìn)行表與表之間的連接運(yùn)算。

4、加密粒度選擇

加密粒度是指加密的最小單位。加密粒度越小靈活度就越大。比較幾種加密粒度:文件級加密比較粗糙,且會使數(shù)據(jù)庫效率明顯受到影響;記錄級加密無法實(shí)現(xiàn)對在這個記錄中小需要的字段不解密,因此靈活性不高;數(shù)據(jù)項(xiàng)加密雖然安全性靈活性最好,但密鑰數(shù)量龐大,管理困難;而字段級加密以不同記錄的不同字段為基本加密單元,比較適應(yīng)數(shù)據(jù)庫文件加密的需求,因?yàn)橥ǔV恍枰獙δ承┟舾凶侄芜M(jìn)行加密保護(hù),因此本系統(tǒng)選擇了字段級的粒度加密。

5、加密算法選取

對明文進(jìn)行加密時所采用的一組規(guī)則稱作加密算法,而它的逆過程稱作解密算法。一個好的數(shù)據(jù)庫文件加密算法應(yīng)該保證數(shù)據(jù)庫文件加密后,數(shù)據(jù)量不應(yīng)明顯增加。同時,適應(yīng)數(shù)據(jù)庫系統(tǒng)的特性,加解密響應(yīng)迅速。本系統(tǒng)采用會話密鑰加密的方法,它是對稱加密和非對稱加密方法的結(jié)合,即用對稱密鑰對數(shù)據(jù)加密,公鑰對密鑰本身加密。這種方法與對稱加密相比較更加安全,與非對稱加密相比又能夠節(jié)約CPU的時間,這對程序的可用性非常關(guān)鍵。

三、BS辦公系統(tǒng)的數(shù)據(jù)庫文件加密設(shè)計與實(shí)現(xiàn)

1、BS辦公系統(tǒng)開發(fā)平臺

BS辦公系統(tǒng)表示層使用JSP技術(shù);應(yīng)用程序服務(wù)器采用Tomcat,解釋和執(zhí)行JSP程序,并傳送給Web服務(wù)器;后臺使用soLServer2000作為數(shù)據(jù)庫服務(wù)器;并使用JDBC連接池技術(shù)實(shí)現(xiàn)服務(wù)器與數(shù)據(jù)庫的連接;加密包采用JAVA密碼構(gòu)架(JCA)和JAVA密碼擴(kuò)展(JCE)。

2、系統(tǒng)結(jié)構(gòu)設(shè)計

數(shù)據(jù)庫加密技術(shù)在BS辦公自動化系統(tǒng)中的應(yīng)用

用戶通過瀏覽器向服務(wù)器發(fā)送請求,Web服務(wù)器對需要訪問數(shù)據(jù)庫的請求交中間件處理,對需要加密的數(shù)據(jù)文件由加密和解密模塊處理。用戶查詢加密數(shù)據(jù)庫系統(tǒng)的處理流程如下:

(1)瀏覽器的用戶程序發(fā)出連接數(shù)據(jù)庫請求。

(2)系統(tǒng)根據(jù)身份認(rèn)證機(jī)制判斷用戶身份。

(3)如果身份合法,用戶向加密后的數(shù)據(jù)庫系統(tǒng)提供用戶密鑰及訪問請求。

(4)系統(tǒng)根據(jù)訪問權(quán)限判斷是否響應(yīng)用戶的請求。

(5)如果有此權(quán)限,則數(shù)據(jù)庫文件加密和解密引擎執(zhí)行查詢請求,得到密文數(shù)據(jù)。

(6)查詢加密字典獲得密鑰,對密文解密并返回給用戶。

3、系統(tǒng)功能設(shè)計

系統(tǒng)包括用戶管理、數(shù)據(jù)庫連接、加密和解密引擎、密鑰生成及管理等模塊,下面介紹各模塊的功能及實(shí)現(xiàn)。

(1)用戶管理模塊

實(shí)現(xiàn)用戶身份校驗(yàn)和級別管理。對于非法的用戶請求,用戶管理模塊將其阻擋在應(yīng)用系統(tǒng)之外;對于合法的用戶請求,用戶管理模塊根據(jù)用戶請求的類型和用戶合法身份的級別,限制和管理用戶在應(yīng)用系統(tǒng)中使用的功能和服務(wù)。設(shè)計采用了基于角色的訪問控制(RBAC)模型網(wǎng),以及加鹽的消息摘要技術(shù)對用戶密碼信息進(jìn)行保護(hù)。身份認(rèn)證的流程如圖2所示。

數(shù)據(jù)庫加密技術(shù)在BS辦公自動化系統(tǒng)中的應(yīng)用

(2)密鑰管理模塊

實(shí)現(xiàn)對密鑰的生成、加密、存儲、管理等工作。對每個數(shù)據(jù)庫用戶,系統(tǒng)自動產(chǎn)生用戶密鑰對,密鑰對中的公鑰和被用戶口令加密后的私鑰—起存放在加密字典中;而對每個需要加密的字段,系統(tǒng)會自動產(chǎn)生一個數(shù)據(jù)密鑰,這個數(shù)據(jù)密鑰則由用戶密鑰對中的公鑰加密后存放在密鑰表中。涉及的主要數(shù)據(jù)庫表設(shè)計如下:

數(shù)據(jù)庫加密技術(shù)在BS辦公自動化系統(tǒng)中的應(yīng)用

(3)加密、解密引擎模塊

是整個系統(tǒng)的核心部件。用戶對數(shù)據(jù)文件進(jìn)行插入、刪除、更新、查詢等操作時,需要數(shù)據(jù)文件加密和解密模塊來完成。加密時明文經(jīng)過加密存入數(shù)據(jù)庫,解密時先將密文從數(shù)據(jù)庫中讀出再進(jìn)行解密操作。以加密Corporate表的IDCard字段為例,加密數(shù)據(jù)的主要步驟示例如下:

KeyGcncrator kg=KeyGcnerator.gctlnstance(’’Blowfish") ;//生成sessionKey_kg.init (128);

Key sessionKey=kg.gcnerateKey();

加密模式下初始化Cipher

Cipher SymmelricCiphcr=Cipbcr,gctlnst.ancc("Blowjjsh/ECB/PKCS5Padding");

symmetricCipher.init (Cipher.ENCRYPT- MODE, scssionKey);

EncryptcdIDCard;symmctricCiphcr.doFinal (IDCard.gcLBytes ("UTF8"));//加密數(shù)據(jù)

//加密sessionKey

Cipher asymnwtricCiphcr=Cipher.getlnstancc("RSA/ECIVPKCSIPadding");

asymrnetricCipher.init (Cipher.ENCRYPT MODE. mPublicKey);

EncryptedSessionKey:asymmetricCiphcr.doFinaJ (sessionKey.getEncoded0);

解密數(shù)據(jù)的主要步驟如下:

用私鑰解密 scssionKey

Cipher asymmetricCipher = Cipher.gctlnsiancc ( "RSA/ECB/PKCSIPadding") ;

asymmctricCiphcr.init (Ciphcr.DECRYPT MODE, privateKey) ;

byteo sessionKcyBytcs= asymmetricaphcr.doFinal (CorporateDBO .getEncryptcdSc:ssionKcy0) ;

//用sessionKey解密數(shù)據(jù)

SecrctKcy symmelricKey = new SccrctKeySpec (sessionKeyByt es, " Blowfish")

Cipher symmetricCipher = Cipher.gctjnstancc UBlowfish/ECIVPKCS5Padding")

symmctricCipherinit (Cipher.DECRYPT_MODE, symmetricKey) ;

byte O IDCardBytcs = symmctricCipher.doFinal (CorporateDBO_.gctEncryptedIDCard0) ;

IDCard = new String (IDCardBytcs, “UTF8”) ;

(4)數(shù)據(jù)庫連接模塊

此模塊是系統(tǒng)與數(shù)據(jù)庫通信的橋梁,采用JDBC以及數(shù)據(jù)庫連接池技術(shù),實(shí)現(xiàn)Web服務(wù)器與后臺數(shù)據(jù)庫的連接。通過SQL語句與數(shù)據(jù)庫交互,完成基本的數(shù)據(jù)庫操作。

數(shù)據(jù)庫中敏感數(shù)據(jù)文件經(jīng)加密系統(tǒng)處理后,以密文形式存儲,即使非法使用者竊取了數(shù)據(jù)庫文件,仍然難以得到所需的信息口對于那些敏感數(shù)據(jù),系統(tǒng)管理員也不能見到其明文,提高了關(guān)鍵數(shù)據(jù)的安全性。該加密系統(tǒng)在用戶管理設(shè)計中采用基于角色的訪問控制(RBAC)以及基于口令的加密(PBE)技術(shù)對用戶密碼信息進(jìn)行保護(hù);采取混合密碼體制以及多級密鑰的管理方法,來提高整個系統(tǒng)的安全性和易用性。因此,按照以上加密方案實(shí)現(xiàn)的系統(tǒng),有較好的安全性能,保證了數(shù)據(jù)的機(jī)密性和完整性。

小知識之辦公自動化系統(tǒng)

辦公自動化系統(tǒng)是利用技術(shù)的手段提高辦公的效率,進(jìn)而實(shí)現(xiàn)辦公自動化處理的系統(tǒng)。它采用Internet/Intranet技術(shù),基于工作流的概念,使企業(yè)內(nèi)部人員方便快捷地共享信息,高效地協(xié)同工作;改變過去復(fù)雜、低效的手工辦公方式,實(shí)現(xiàn)迅速、全方位的信息采集、信息處理,為企業(yè)的管理和決策提供科學(xué)的依據(jù),深受眾多企業(yè)的青睞。