仲福建 何遠德 陳琳琳
當前各高校都加強了網絡的宣傳,招生、錄取等都在網上進行。這在方便了管理和提高效率的同時,也給一部分違法分子以可乘之機,目前少數不法分子在高考招生結束后,利用偽造虛假網頁進行詐騙,有的甚至利用黑客手段篡改高校網站考生錄取記錄,從事詐騙活動。如黑客篡改中國地質大學(武漢)和中南財經政法大學招生信息①,篡改海南大學招生信息②等案,給社會造成了惡劣影響,嚴重影響了社會的和諧和安寧。目前很多對外信息發布系統有防火墻、殺毒軟件、網頁防篡改系統等防護措施,但基于數據庫的保護相對較少。本文提出了一種基于數字摘要的高校招生查詢數據庫的防篡改機制。
一、數字摘要算法及其應用
從 Rivest 1989年開發出MD2算法開始就揭開了人們對加密算法的新一輪研究,進而推出了MD3、MD4算法 。為了加強算法的安全性,滿足信息發展對網絡安全的要求,研究出了趨近成熟的MD5算法。MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法5)③,在20世紀90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L.Rivest開發,經MD2、MD3和MD4發展而來。它的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被“壓縮”成一種保密的格式(就是把一個任意長度的字節串變換成一定長的大整數)。不管是MD2、MD4還是MD5,它們都需要獲得一個隨機長度的信息并產生一個128位的信息摘要。雖然這些算法的結構或多或少有些相似,但MD2的設計與MD4和MD5完全不同,那是因為MD2是為8位機器進行的設計優化,而MD4和MD5卻是面向32位的電腦。
MD5的典型應用是對一段信息(Message)產生信息摘要(Message Digest),以防止被篡改。比如在UNIX下有很多軟件在下載的時候都有一個文件名相同、文件擴展名為.md5的文件,在這個文件中通常只有一行文本,大致結構如MD5(test)= 0ca175b9c0f726a831d895e269332461,這就是test文件的數字簽名,test的文本內容為“tom123456”。MD5將整個文件當作一個大文本信息,通過其不可逆的字符串變換算法,產生了這個惟一的MD5信息摘要。如果在以后傳播這個文件的過程中,無論文件的內容發生了什么形式的改變(包括人為修改或者下載過程中線路不穩定引起的傳輸錯誤等),只要你對這個文件重新計算MD5時就會發現信息摘要不相同,由此可以確定你得到的是一個不正確的文件。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的“抵賴”,這就是所謂的數字簽名應用。MD5還廣泛用于加密和解密技術。例如Cisco的Enable的密碼和UNIX、LINUX系統中用戶的密碼都是以MD5經加密后存儲在文件系統中的。當用戶登錄的時候,系統把用戶輸入的密碼計算成MD5值,然后再去和保存在文件系統中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在并不知道用戶密碼明碼的情況下就可以確定用戶登錄系統的合法性。這不但可以避免用戶的密碼被具有系統管理員權限的用戶知道,而且還在一定程度上增加了密碼被破解的難度④。
二、 數據庫防篡改設計原理
監控數據庫是否被非法修改是這個數據庫平臺的關鍵點。最簡單可靠的方法就是先將數據庫備份,通過逐行比較數據庫記錄字段值來判斷數據庫是否被修改,但是此種方法需要逐行比較,既耗時也耗費空間,可行性差。因此對數據庫記錄的鑒別必須是保障不可偽造,并且能實時發現數據庫的異常,及時告警,及時恢復,不給犯罪分子可乘之機。
招生查詢數據庫數據一旦導入后,再次修改的幾率很小,大部分是用來查詢的。保證數據的不可修改和偽造,單向散列函數可以實現此功能,可以使用MD5 、SHA-1等算法,只要數據被修改,數字摘要信息就會出現前后不一致,達到鑒別功能的實現。SHA-1提高了強度,增加了安全性,但是該算法計算度增加,效率有所降低。在保證高效的前提下,本文擬采用MD5算法進行數字摘要,對數據進行鑒別。

系統可以先把正確數據每記錄字段組合為一個摘要,然后保存在安全位置,系統鑒別時同時對安全數據表和運行的表逐摘要比較。這樣,雖然保證了安全,但是性能降低,因此我們在這里引入了安全字符串R,由系統管理員自己定義存儲在內存中,在數據導入和查詢時都將使用它,這樣鑒別時就可以不再跨庫查詢。
如圖1中的導入數據過程,MD5以數據表一行記錄為基礎輸入M,同時系統定義安全字符串R,產生摘要數據H(M+R)。作為數據庫中新增字段M,在數據庫被查詢時,取數據庫原始字段進行一次H(M+R)與M的比較,異常則轉入異常處理模塊。數據在對外發布過程首先走鑒別過程,這樣就杜絕了錯誤信息的發布,確保了數據的可靠。
三、 數據庫防篡改的實現
防篡改平臺作為一個中間件平臺存在,只要對數據庫平臺進行訪問都要經過此平臺的檢驗,沒發現篡改才會把數據轉發給用戶,如果有篡改發生馬上轉入異常報警和數據恢復。在這里,安全字符串需要用戶自己掌握,在記錄進行摘要和篡改鑒定中必須保持一致。
數據庫防篡改的整體過程分為7步。第一步,外網用戶通過web提交查詢數據,傳入查詢的關鍵字。第二步,鑒別模塊接受查詢的關鍵字,進入數據庫檢索數據。第三步,檢索到該記錄,提取所有字段與系統設定的關鍵字符串串接,進行數字摘要。若沒檢索到記錄退出系統。第四步,將數字摘要與前面生成的摘要字段M進行比對。如果異常轉入第六步。第五步,核對正確,查詢結果返回給用戶,系統退出。第六步,出現異常,馬上聯動告警信息,如聯動短信設備或電話設備,及時報警。第七步,從安全設備上獲取數據,重新生成摘要,恢復正常數據。
從以上過程我們可以看出,整個過程中,即使攻擊者獲取系統控制權限,對數據記錄進行惡意修改,只要查詢用戶通過web頁面查詢數據,鑒別模塊就會發現異常,及時聯動恢復模塊進行數據恢復。
四、關鍵算法及其實現
系統基于windows 2003或linux平臺。采用java做平臺開發,采用mysql數據庫進行數據存儲。關鍵算法如下:
MD5在java下的實現
import java.security.MessageDigest;
public static Stringmd5(String inputstr) throws Exception
{ int tempi=0;
MessageDigest md5 = MessageDigest.getInstance
("md5");
byte[ ] in = inputstr.getBytes("utf-8");
byte[ ] out = md5.digest(in);
StringBuffer md5str = new StringBuffer();
for (int i=0;i<16;i++){
tempi=out[i] & (0xff);
if (tempi<16)md5str.append("0");
md5str.append(Integer.toHexString(tempi)); }
return md5str.toString();}
其中系統結構圖見圖2。

五、結束語
該系統在很大程度上防止了數據被惡意修改和濫用,保證了高校招生查詢數據庫的安全,在記錄進行MD5的過程中引入安全字符串,增加了安全性,優化了系統的性能。但本系統還存在一些不足,如安全字符串R的安全保障和原始表的存放位置考慮的偏少,這也是我們后續研究的目標。
注釋:
①http://www.lq318.com/news/guonei/7893.aspx
②http://www.techweb.com.cn/news/2008-09-29/368221.shtml
③Rivest R.The MD5 Message-Digest Algorithm.RFC 1321,April 1992
④張裔智等:《Md5算法的研究》,《計算機科學》,2008年第35卷第7期。
作者單位:綿陽師范學院招生就業處西南民族大學外國語學院 西南民族大學電信工程學院