基于加密技術的軍隊圖書管理信息系統
圖書館是重要的信息儲藏庫和交流平臺,如何更方便、更安全地利用圖書館的資源已成為軍隊信息化建設的首要任務。以某師圖書館管理信息系統的開發(fā)為背景,研究了數據庫技術和加密技術,應用改進的AES加密算法實現了對重要數據的加密,并采用身份驗證、訪問控制及審計跟蹤等保證了系統的安全運行。
一、基于三層C/S的數據庫加密應用系統的設計方案
三層C/S結構是將應用功能分為表示層、邏輯層和數據層三部分。這種劃分是結構邏輯上的劃分,如圖1所示。

(1)數據表示層:是信息系統的用戶接口部分,擔負著用戶和系統間的對話功能。其主要功能是實現用戶交互和數據表示,為以后的處理收集數據,向第二層業(yè)務邏輯層請求調用核心服務處理,并顯示處理結果。
(2)邏輯層(中間層):是系統的核心部分,負責將具體的業(yè)務處理邏輯編入程序中。
(3)數據層:負責管理對數據庫數據的讀寫??梢允嵌鄠€關系數據庫,甚至可以是異構數據庫。
大多數基于C/S模型的數據庫的應用都是通過調用數據庫編程接口(如ODBC)實現對遠端數據庫系統的訪問,一般接口允許應用程序使用結構化查詢語言(SQL)查詢數據。本文旨在通過改造連接數據庫系統和數據庫應用程序之間的接口程序,完成加脫密功能和密鑰管理等,設計思想如圖2所示。

由于編程接口的互用性,程序開發(fā)與原數據庫系統和數據庫應用程序基本無關,因此系統設計簡單,可靠性高,實用性強,并能夠充分利用現有成熟數據庫系統的一切優(yōu)點。
ODBC( Open database connectivity)總體結構有4個組件:
(1)應用程序。執(zhí)行處理并調用ODBC函數,提交SQL語句并檢索結果。
(2)驅動程序管理器。根據應用程序加載并卸載驅動程序,處理ODBC函數調用,或把它們傳送到驅動程序。
(3)驅動程序。處理ODBC函數調用,提交SQL請求到一個指定的數據源,并把結果返回到應用程序。
(4)數據源。包括用戶要訪問的數據及其相關的操作系統、DBMS及網絡平臺。大多數數據庫系統設計的前臺開發(fā)工具都提供了一些接口軟件。
本文設計方法是對數據庫訪問流程進行改造。對查詢類SQL語句得到的數據解密后顯示在客戶端,對接入類SQL語句將客戶端提交的數據執(zhí)行加密后,再提交數據庫。實現時通過在數據庫管理系統與數據庫應用系統之間加入安全管理模塊,完成以上的SQL語法分析、加解密、密鑰管理等功能,也即在接口驅動程序(.dU)中增加一定的加密/解密功能。改造后的這一模塊稱為數據庫加脫密引擎。
采用上述方式實現的數據庫加密系統的特點:
(1)對數據庫的最終用戶完全透明。
(2)解決了最重要的數據庫隱秘通道問題。即使黑客竊取了關鍵數據,仍然難以得到所需的信息,因為所有數據都經過加密處理。另外,數據庫加密以后可以設定不需系統管理員見到的明文,大大提高了數據的安全性。
(3)客戶端實現數據加密,網絡上傳送的是密文,增加了網絡傳輸的安全性。
(4)完全獨立于數據庫應用系統,不需要改變數據庫應用系統就能實現加密功能,省去修改原有應用系統的繁瑣。
(5)在客戶端進行數據加脫密運算,不會影響數據庫服務器的系統效率,數據加脫密運算基本無延遲感覺。
(6)由于改動的是接口軟件,針對不同的客戶開發(fā)工具和服務端數據庫管理工具,都可以設計專用的接口軟件,用以屏蔽各類數據庫,增強其擴展性。
(7)與應用程序無關,可以將加密的要求存入數據庫中,當加密要求(加密字典)改變后,系統管理員只需重新執(zhí)行加密修改的相應模塊即可完成新的加密要求,具有一定的靈活性。
二、數據庫加密原理和算法
1、數據庫加密算法選擇
加密算法一般分為兩類,傳統密碼算法(又稱對稱密碼算法)和公開密鑰密碼算法(也稱非對稱密碼算法)。對稱性加密算法的典型算法有DES、IDEA和AES等。較多采用改進的DES加密算法實現數據庫加密功能。AES加密算法就是美國針對DES缺點提出的新一代加密標準,于2001年5月正式頒布使用來替代DES加密算法。加密算法是一種全球免費使用的分組加密算法。數據分組密鑰長度可為128位、192位或256位。非對稱密碼算法的一個例子是RSA密碼。
隨著加密技術的發(fā)展,提出了許多直接應用于數據庫加密的加密算法,如子密鑰數據庫加密、影子數據庫和秘密同態(tài)技術等。這些研究理論在實踐中還須要進一步完善。
加密算法中一個核心問題是密鑰的管理。在傳統密碼應用中,雙方所需的密鑰通過另外的安全途徑傳送;而在數據庫應用系統中,密鑰的某些信息必須存放在機器中,如加密字段的數據密鑰。對密鑰的選取和存放存在安全問題。解決的方法之一是研制多級密鑰管理體制。例如,在二級密鑰管理體制中,一級密鑰(也稱主密鑰)存儲在安全區(qū)域,用它對二級密鑰信息加密生成二級密鑰(數據密鑰),再用數據密鑰對數據加密。
數據庫加密機制中涉及到數據和密鑰的加密。選用適當的加密算法可以在保證安全性的前提下提高數據庫加解密效率,從而減小因采用加密后對系統造成的額外開銷。AES加密算法和RSA加密算法是數據加密中比較優(yōu)秀的算法,但仍在處理效率,密鑰管理等方而存在著不足。AES加密算法和RSA加密算法優(yōu)缺點分析見表1。本文在此基礎上提出了一種將AES與RSA相結合的方法用以實現數據和密鑰的加密。

對數據的加密采用的是AES加密算法,以提高數據加解密的速度。因為整個系統的安全性依賴于用戶密鑰的存放,所以采用RSA算法對密鑰進行加密處理。既利用了AES私鑰算法的快速性又保證了密鑰的安全性。圖3給出整個加密算法的選擇過程。

2、AES加密算法的改進應用
應用于數據庫加密系統的密碼要滿足:
(1)數據庫加密以后,數據量不應明顯增加;
(2)某一數據加密后,其數據長度不變;
(3)加密、解密速度要快,數據操作響應時間讓用戶能夠接受。通過改變對分組密碼AES加密算法傳統的應用處理方法,使其加密后密文長度不變,就能滿足以上幾點要求。
AES是一種對二進制數據進行加密的算法,數據分組長度和密鑰長度可獨立選擇,并由數據分組長度和密鑰長度決定加密圈數N為10、12或14圈。加密算法過程如圖4所示。

圖4中的F為圈變換(包括S盒變換、行移位變換、列混淆變換、圈密鑰變換),Ki為第i圈加密時所用的圈密鑰,明文經N次圈變換之后加密成明文輸出,當數據分組長度和密鑰長度均為128位時,要加密的數據分成128位一組,按每行4個字節(jié)(1個字節(jié)8位)排成4行,稱為一個狀態(tài)。數據的寫入和讀出均按列優(yōu)先順序,以字節(jié)為單位操作。將明文數據分組后,對每一個分組都要進行10圈數加密,每一圈要進行如下變換:S盒變換BYTESUB、行移位變換SHIFTROW、列混淆變換MIXCOLUMN、圈密鑰加變換ADDROUNDKEY,最后一圈要少做第3步列混淆變換。
加密算法的算法語言描述為:
AESENCRYPTION( STATE, KEY)
FOR( I= 0;1 < 10;1++ )
ROUND( STATE, EXPANDKEY[4 * I])
{
BYTESUB(STATE)
ADDROUNDKEY(STATE,ROUNDKEY[4*J])
}
FINAL ROUND( STATE,EXPAND KEY[4*J])
(BYTESUB( STATE)
SHIFTROW( STATE)
ADDROUNDKEY( STATE,ROUND KEY[4*J]))
}
經過加密出來的數據也是128位分一個組。如果明文分組的長度不是128位的整數倍時,最后一個明文分組的長度就小于128位,如果采用填充“OO"或其他數據,使其長度也為128位,加密后的數據就大于明文的長度。為使加密后的數據長度與明文數據長度一致,采用“密碼挪用法”來解決。當待加密數據的長度為24碼(即為192位)時,“密碼挪用法加密”過程如圖5所示。

第一整組(1-16碼)加密后截取第9-16碼的密文與尾部(17-24碼)組成一個整組進行加密,加密所得密碼接在前一組的第8個密碼之后。其中,第9-16碼實際上進行了二次加密,在解密時也應該進行二次解密,方案保證了128位分組加密,同時保證了數據庫加密以后,數據長度不會變化。
采用AES加密算法實現數據的加密,輸入宇段數據和數據密鑰,運行函數:AES DECRYPT( DATA,KEY_ DATA),生成的密文存入數據庫中;檢索時執(zhí)行函數AES ENCRYPT(DATA,KEY_DATA),解
密后的明文返回客戶端。加密函數AES DECRYPT與解密函數AES ENCRYPT是一對互逆的算法。
小知識之C/S結構
C/S 結構,即大家熟知的客戶機和服務器結構。它是軟件系統體系結構,通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷。目前大多數應用軟件系統都是Client/Server形式的兩層結構,由于現在的軟件應用系統正在向分布式的Web應用發(fā)展,Web和Client/Server 應用都可以進行同樣的業(yè)務處理,應用不同的模塊共享邏輯組件;因此,內部的和外部的用戶都可以訪問新的和現有的應用系統,通過現有應用系統中的邏輯可以擴展出新的應用系統。這也就是目前應用系統的發(fā)展方向。









