圖書館數(shù)據(jù)庫加密技術

隨著互聯(lián)網技術的迅猛發(fā)展,各行各業(yè)的信息安全問題也上升到了前所未有的高度,當然圖書館信息也不例外。再加上它是國家信息資源的有力組成部分,所以保護圖書館信息資源的安全成為我們義不容辭的責任。

一、圖書館信息資源的安全性

圖書館信息資源常常被安全問題所困擾,有三個棘手的安全問題無法解決。

問題一、一方面圖書館本身需要對自己的關鍵數(shù)據(jù)進行有效的保護;另一方面,圖書館用戶從應用服務器提供商( Application Serviee Provider.ASP)尤其是美國的應用服務器提供商(包括硬件和軟件)處獲得應用支持和服務,在這種情況下,圖書館用戶的業(yè)務數(shù)據(jù)存放在ASP處,其安全性無法得到有效的保障。

問題二、因為傳統(tǒng)的圖書館數(shù)據(jù)庫保護方式是通過設定口令字和訪問權限等方法來賓現(xiàn)的。在圖書館界已經有不少文章對圖書館信息資源的安全性進行了廣泛的討論,并給出了一些解決方案。但是仍然停留在依靠設定口令字和訪問權限上。但是只設定口令字和訪同權限存在一些很大的安全漏洞,首先對于應用服務器提供商(特別是國外的應用服務器提供商)來說不起作用,對于網上黑客來說也不起作用,還有就是數(shù)據(jù)管理員可以不加限制地訪問數(shù)據(jù)庫中的所有數(shù)據(jù)。因此,有不少圖書館系統(tǒng)以種種手段來削弱系統(tǒng)管理員的權力,但是,一直沒有有效的方法來解決這一安全問題。

問題三、來自世界各地的網上黑客的襲擊,也是一個很大的隱患,大型圖書館信息系統(tǒng)運行平臺一般是WindowsNT和Unix操作系統(tǒng)。這些操作系統(tǒng)的安全級別通常是C1、C2級,它們具有用戶注冊,識別用戶、任意存取控制(DAC)、審計等安全功能。雖然數(shù)據(jù)庫管理系統(tǒng)在操作系統(tǒng)的基礎上增加了不少安全措施,但是,有經驗的同上黑客會繞道而行,直接利用操作系統(tǒng)工具竊取或篡改數(shù)據(jù)庫文件的內容。

二、圖書館數(shù)據(jù)庫加密的必要性

解決以上三個同題的關鍵就是要對圖書館數(shù)據(jù)庫本身進行加密,即使數(shù)據(jù)不幸泄露或丟失,也難以教人破譯。對圖書館數(shù)據(jù)庫進行加密,有兩種方式:客戶端加密和服務器端加密??蛻舳思用艿暮锰幨遣粫又貓D書館數(shù)據(jù)庫服務器端的負載,并且可實現(xiàn)網上的傳輸加密。即使是服務器提供商也無法解密,從而達到對服務器提供商保密的目的,這仲加密方式通常利用技據(jù)庫外層工具實現(xiàn)。服務器端的加密需要對圖書館數(shù)據(jù)庫管理系統(tǒng)本身進行操作,屬于核心層加密,需要數(shù)據(jù)庫開發(fā)商的配合,這樣一來又要依靠服務器提供商,還是不安全。對于希望通過ASP獲得服務的圖書館用戶來說,只有在客戶端實理加密解密,才能有效保證圖書館的信息資源的安全。實現(xiàn)數(shù)據(jù)庫加密以后,各圖書館用戶的數(shù)據(jù)用自己的密鑰加密,數(shù)據(jù)庫管理員及數(shù)據(jù)庫開發(fā)商獲得的信息是加密后的信息,無法進行正常解密。這佯即使是購買的國外系統(tǒng)也可以放心大膽地使用。通過加密,圖書館數(shù)據(jù)庫的備份內容成為密文,這樣就減少了因失竊或丟失備份所造成的損失,由此看來,圖書館數(shù)據(jù)庫加密對圖書館信息資源的安全管理足必不可少的。

在圖書館數(shù)據(jù)庫客戶端進行加密和解密運算,對圖書館信息系統(tǒng)的負載及運行幾乎沒有影響,用純軟件實現(xiàn)DES加密算法的速度日過200k字節(jié)/秒,如果對圖書館中文書目庫中的l萬條記錄進行加密,加密和解密時間僅需1秒鐘,這種時間延遲對用戶來說不會有感覺的。

三、圖書館數(shù)據(jù)庫加密算法與密鑰管理

1、圖書館數(shù)據(jù)庫的加密算法

圖書館數(shù)據(jù)庫密碼系統(tǒng)的兩個基本要素是圖書館數(shù)據(jù)庫加密算法和圖書館數(shù)據(jù)庫密鑰管理。加密算法是規(guī)定明文和密文之間變換方法的一些公式和法則,密鑰是控制加密和解密算法的關鍵信息。應用于圖書館數(shù)據(jù)庫加密的加密算法也叫做圖書館數(shù)據(jù)庫密碼,常用的圖書館數(shù)據(jù)庫的加密算法有序列加密體制,分組加密體質、公開加密體質。

序列加密體制直接對當前的字符進行變換,是以每一個字符為單位進行變換的。每一個字符數(shù)據(jù)的加密與其它數(shù)據(jù)無關。相當于直接對明文加上同等長度的密鑰,只要所用的密鑰是隨機散且不重復使用,即實現(xiàn)了。一次一密”的加密。從理論上講,真正實現(xiàn)了“一次一密”的加密懇不可破譯的,這樣密碼的明文和密支的長度一般不變,傳遞迅速,缺點就是黑客容易得到明文和密文的對照碼,便于進行密碼分折。分組密碼體制的明文按固定長度分組,對各組數(shù)據(jù)用不同的密鑰加密或解密,分組加密體制按分組進行加密變換,一個字符數(shù)據(jù)不僅與密鑰有關,而且還與其它數(shù)據(jù)有關,密碼分析的窮盡量很大。在使用分組密碼時,對明文尾部不滿一個整組的碎片通常采用填充隨機數(shù)的辦法將其擴充為一個整組,然后進行正常加密。由于尾組的擴充,使得密文的長度大下明文的長度。分組密碼可用于圖書館計算機存儲加密,但因為圖書館數(shù)據(jù)庫加密后長度不應該改變,所以必須改進分組密碼體制的使用方法。公開加密體制的缺點是加密解密速度較慢,這類密碼的運算速度僅是其它類型密碼運行速度的百分之一或更低,公開加密體制目前僅用于圖書館用戶認證、密鑰傳輸?shù)?。因為速度慢不能用于圖書館數(shù)據(jù)庫加密。

序列加密和分組加密也叫做對稱性密碼。這類密碼加密和解密必須使用相同的密鑰。公開密鑰密碼也稱非對稱性密碼,這類密碼體制具有兩個密明,公明和私鑰,加密時用公鑰,數(shù)據(jù)時用私鑰。圖書館數(shù)據(jù)厙對加密系統(tǒng)的要求是數(shù)據(jù)庫加密后數(shù)據(jù)量不應有明顯增加,加密、解密速度要足夠快,數(shù)據(jù)處理響應時間應該讓圖書館用戶能夠接受。

改變對分組密碼算法的傳統(tǒng)的應用處理方法。使其加密后長度不變,就能滿足以上要求。我們以效據(jù)加密標準DES為例說明,DES是一種對二進制數(shù)據(jù)進行加密的算法,數(shù)據(jù)分組長度、密鑰長度,輸出密文長度都是64位,明文經過16輪的疊代,乘積變換,壓縮變換等編碼過程輸出密文。對尾部碎片采用“密碼挪用法”以克服傳統(tǒng)的“填充數(shù)據(jù)法”造成數(shù)據(jù)擴展的缺點。

2、圖書館量據(jù)庫的密鑰管理

圖書館數(shù)據(jù)庫加密需要進行二級密鑰管理,一級密鑰為主密鑰,二級密鑰為工作密鑰。主密鑰的作用是對二級密鑰信息進行加密生成工作密鑰。工作密鑰用于對圖書館數(shù)據(jù)庫數(shù)據(jù)進行加密和解密。工作密鑰信息長度為64位,前56位是記錄名。需要帶校驗存儲在圖書館數(shù)據(jù)庫表中,后8位是圖書館數(shù)據(jù)庫表的列信息,它們是臨時生成的。為了存儲數(shù)據(jù)庫數(shù)據(jù),每個圖書館數(shù)據(jù)庫表增加一個記錄名字段,在圖書館用戶錄入數(shù)據(jù)時,系統(tǒng)自動生成記錄名數(shù)據(jù),使每條數(shù)據(jù)都有一個記錄名,并使記錄名相互不重復。

存圖書館數(shù)據(jù)需要加密和解密時,將相應的64位二級密鑰信息用主密鑰進行加密即得到工作密鑰。用工作密鑰完成對圖書館數(shù)據(jù)加密和解密。對于多圖書館服務器,多圖書館數(shù)據(jù)庫、多圖書館用戶等情況,圖書館數(shù)據(jù)庫加密系統(tǒng)中還需要根據(jù)應用需求增加一些信息。方法就是將以上各類實體分別進行編碼、存儲并依據(jù)不同情況使用。

四、圖書館數(shù)據(jù)庫的加密管理程序

圖書館敵據(jù)庫的加密管理程序是定義加密數(shù)據(jù)項的工作,它可以創(chuàng)建和刪除加密字典。對表進行加密和解密以及修復,它利用圖書館數(shù)據(jù)庫加密引擎來完成對圖書館已有數(shù)據(jù)的加密和解密。圖書館數(shù)據(jù)庫加密管理程序由用戶注冊摸塊、加密字典配制模塊,加密定義修改模塊,表信息檢索模塊、密文表配置摸塊,數(shù)據(jù)轉換模塊等組成:

甩戶注冊模塊是啟動圖書館數(shù)據(jù)庫加密程序后必須通過的身份驗證模塊,該模塊防止未授權人員使用圖書館數(shù)據(jù)庫加密管理程序,通過身份驗證后操作員才可以使用其它的功能模塊,如果注冊成功,則獲得用于所有歙據(jù)庫操作的全局變量QLCA。

加密字典配置模塊用于創(chuàng)建和刪除加密字典。在選擇創(chuàng)建和刪除加密字典操作后,圖書館數(shù)據(jù)庫加密程序即調用該模塊的相應的功能函數(shù),調用參數(shù)是QLCA。創(chuàng)建加密字節(jié)的過程是首先驗證數(shù)據(jù)庫中加密字典是否存在,若已存在則報錯退出,不存在則生成加密字典表;如果創(chuàng)建成功,則顯示操作成功,否則顯示操作失??;然后記載加密字典的標識等信息。

加密定義修改模塊提供了一個窗口界面,在此界面中可以指定需要加密和解密的表及字段,程序根據(jù)實際的加密和解密要求,完成數(shù)據(jù)庫結構及加密字典的調整和數(shù)據(jù)的加密和解密轉換工作。該模塊是圖書館加密管理程序的主要模塊,它通過S-tab參數(shù)凋用“表信息檢索模塊”,“密文表配置模塊”、“數(shù)據(jù)轉換模塊”來完成一個表的加密定義修改任務。該模塊的處理過程是首先由圖書館用戶選擇一個表,調用“表信息檢索模塊”,得到表的所有字典信息;列出喪的字段信息,供圖書館用戶修改加密定義:根據(jù)圖書館用戶的絡改要求,將加密和解密要求確切定義為加密、解密、更改三種類型。若操作是加密,更改,則創(chuàng)建密文表及加密字典,調用“數(shù)據(jù)轉換模塊”的相應函數(shù),完成表數(shù)據(jù)的明密轉換,若操作是解密、更改,則刪除、更新密文表及加密字典:在以上操作中,成功則進行下一步,否則顯示錯誤信息,終止退出。

表信息檢索模塊的作用是從數(shù)據(jù)字典中檢索出與某個表有關的各種信息.故人S-tab結構變量中,這些信息包括表名、表標識。主鍵定義、外鏈定義、索引定義,宇段定義等,供其它模塊使用。表信息瞼索模塊以函致形式提供服務,輸入參數(shù)是SQLCA和表的名稱,輸出數(shù)據(jù)存放在S-tab的數(shù)據(jù)結構中,成功返回1,失敗返回0。該模塊被“加密定義修改模塊”、“密文表配置模塊”調用。處理過程是首先根據(jù)輸入的名表,獲得該表的表一級信息;獲得該表的主鍵信息;獲得該表的外鍵信息;獲得該表的索引信息·獲得該表的所有列信息。獲得該表已有的加密定義,在以上操作中,成功則進行下一步,否則顯示錯誤信息并終止退出。

密文表配置模塊的功能是根據(jù)圖書館用戶確定的加密定義創(chuàng)建和刪除密文表,同時將加密定義寫入加密字典或從加密字典中刪除有關內容。它為加密定義修改模塊提供杓建密史表及加密字典信息服務以及刪除、更改霄文表及加密字典信總的服務。用戶的加密定義存放住S-tab數(shù)據(jù)結構中,作為輸入參數(shù),“密文表配置模塊”根據(jù)S-tab中的加密定義進行處理,最后將操作成功或失敗的結果退回給“加密定義修改模塊。構建密文表及加密字典信息的步蓑是首先根據(jù)加密定義構造出密文衰的SQI,命令陶建密文表I然后再恨據(jù)加密定義創(chuàng)建出密文表主鍵的SQI命令,建主鍵I根據(jù)加密定義構造出密丈表外鍵的SQL命令,建外鍵,根據(jù)加密定義構造出密文表索引的SQL命令建索引;將加密定義信息存入加密字典表。刪除、修改密文表及加密字典信息的步驟是首先刪除與原密文表有關的加密字典內容,若加密和解密操作是更改,則將新的加密表名換成原來應當使用的名稱。刪除原密文表,保證原密文表為空,若加密和解密操作是篡改,則將新的密文表換戚原密文表的名稱;以上操作中如成功則進行下一步,否則顯示錯誤信息,終止退出。

數(shù)據(jù)轉換模塊是專門為加密定義修改模塊服務的.能完成—個表的加密,解密以及加密列的變更三種需求下的數(shù)據(jù)轉換工作。數(shù)據(jù)轉換模塊程序形式是一個獨立的動點連接庫,它輸出三個函數(shù)供加密定義修改摸塊調用。這三個函數(shù)的定義分別是;EncodeRows <Get-soi_Link,PutSQLLink.明文表名,轉換條件,附加參數(shù))、DtcodeRowsI Getsoi,LLrrk.PurSQLLink.明文表名,轉換條件,附加參致)、Copy-deRows (CetsoLLink.PurSQLLink.明文表名,轉換條件,附加參數(shù)X。它們出錯返回“-1“。成功則返回1,實際被轉換的記錄斂。其中GerSQLLink和PutsoLLink由DBHandle <soLCA)函數(shù)轉換得到,分別代表轉換數(shù)據(jù)時Get操作( SELECT):與Put操作CINSERT&DELETE)所使用的不同數(shù)據(jù)庫的接口參數(shù),如果二次僅轉換一條記錄。etsoi_l.ink和PutsoLLink可以相同,一般情況下,Gtt SQLLink和Pu tsoi- I_ink必須不相等。

數(shù)據(jù)轉換模塊自身并不對數(shù)據(jù)進行加密或解密,實際的加密和解密工作由數(shù)據(jù)庫加密和解密引擎完成,但必須事先將加密定義寫入加密字典,供數(shù)據(jù)庫加密和解密引擎使用。數(shù)據(jù)轉換模塊內部沒有任何Commit或Rollback命令發(fā)往圖書館數(shù)據(jù)庫服務器。它不考慮數(shù)據(jù)庫事物的開始,提交、退回,而是留給調用者處理。只有PutSQLLink這個參數(shù)涉及列事物處理問題。GerSQLLink并不改變數(shù)據(jù)岸,不存在事物處理問題。

小知識之DES加密算法數(shù)據(jù)加密算法(Data Encryption Algorithm,DEA)是一種對稱加密算法,很可能是使用最廣泛的密鑰系統(tǒng),特別是在保護金融數(shù)據(jù)的安全中,最初開發(fā)的DEA是嵌入硬件中的。