李顯峰 王 淵 魏聰明
摘要:通過分析目前管理信息系統(tǒng)數(shù)據(jù)庫登錄方式中存在的安全隱患,并結(jié)合MD5、DES加密技術(shù)和SQL Server 2000數(shù)據(jù)庫角色用戶模式的安全登錄機制,設計了一種數(shù)據(jù)庫角色與管理信息系統(tǒng)用戶一對多關系的雙層用戶角色模式的數(shù)據(jù)庫安全登錄機制,在Microsoft .net框架下實現(xiàn)了管理信息系統(tǒng)的數(shù)據(jù)庫安全登錄。
關鍵詞:.net框架;加密技術(shù);數(shù)據(jù)庫安全;管理信息系統(tǒng);登錄機制
中圖分類號:TP309文獻標識碼:A文章編號:1009-3044(2009)22-pppp-0c
隨著計算機技術(shù)和網(wǎng)絡技術(shù)的發(fā)展與普及,作為計算機應用研究領域的一個重要分支——管理信息系統(tǒng)(Management Information System, MIS)滲透到了社會生活的諸多領域。由于各種技術(shù)和非技術(shù)因素的存在和影響,MIS的安全已經(jīng)成為嚴重而又深刻的問題,而在諸多MIS安全問題中,數(shù)據(jù)庫安全(Database Security)是MIS安全的核心問題。數(shù)據(jù)庫作為一種共享的資源,允許用戶登錄合法存取數(shù)據(jù)庫資源,杜絕和避免非法用戶登錄破壞、竊取數(shù)據(jù)庫資源已成為MIS安全性的一個重要瓶頸問題。數(shù)據(jù)庫登錄策略選擇、機制設計的優(yōu)劣直接關系到MIS的安全。
Microsoft SQL Server 2000是一種達到了美國C2安全級別的數(shù)據(jù)庫管理系統(tǒng),它在安全方面提供用戶認證、用戶權(quán)限、登錄事件日志、密碼策略等數(shù)據(jù)庫保護功能,用以加強數(shù)據(jù)庫系統(tǒng)的安全。以數(shù)據(jù)庫為基礎的應用系統(tǒng),所采取的登陸方式通常有以下兩種:
1) DBMS(Database Management System)驗證方式
直接使用DBMS用戶模式,設置密碼和權(quán)限,應用系統(tǒng)用戶即是DBMS用戶。當用戶登錄時,由DBMS完成用戶登錄信息驗證,應用系統(tǒng)只起傳遞數(shù)據(jù)的功能。該方式隨著應用系統(tǒng)用戶的增多,系統(tǒng)權(quán)限分配的難度增大,且將數(shù)據(jù)操作權(quán)限直接分配給應用系統(tǒng)用戶,具有很大的風險性。應用系統(tǒng)用戶可以繞過應用系統(tǒng),使用其它數(shù)據(jù)庫管理軟件直接進入數(shù)據(jù)庫,威脅到數(shù)據(jù)的真實性和完整性。
2) 應用系統(tǒng)驗證方式
目前,應用系統(tǒng)常采用偽用戶(即非數(shù)據(jù)庫用戶)身份登錄方式,該方式下應用系統(tǒng)存在兩類用戶,即應用系統(tǒng)用戶和DBMS用戶。應用系統(tǒng)開發(fā)時,在數(shù)據(jù)庫中建立“應用系統(tǒng)用戶表”,用以存儲應用系統(tǒng)用戶的相關資料(包括用戶名、密碼、權(quán)限等)。MIS應用時,首先使用一個真實數(shù)據(jù)庫用戶身份登錄到數(shù)據(jù)庫并查詢“應用系統(tǒng)用戶表”相關記錄進行驗證,驗證成功,則是合法的應用系統(tǒng)用戶。該方式登錄,實質(zhì)所有MIS用戶使用的是同一個真實數(shù)據(jù)庫用戶身份登錄到數(shù)據(jù)庫,為保證對數(shù)據(jù)的操作性,一般給應用系統(tǒng)用戶賦予了數(shù)據(jù)庫超級用戶權(quán)限。如此,就留下安全隱患,一方面,編寫代碼的程序員若有破壞意圖,那么數(shù)據(jù)庫用戶和密碼就有泄露的危險;另一方面,因為真實數(shù)據(jù)庫用戶的身份和登錄密碼就隱藏在應用系統(tǒng)或配置文件中,只要從分析應用程序入手,最終會分析出系統(tǒng)使用的數(shù)據(jù)庫用戶和密碼,從而威脅到DBMS直至整個應用系統(tǒng)安全。
通過以上分析,不難看出,無論是DBMS登錄方式,還是應用系統(tǒng)登錄方式,歸納起來都是一種單層數(shù)據(jù)庫用戶角色(包括真實數(shù)據(jù)庫用戶角色或非數(shù)據(jù)庫用戶角色)登錄模式。
1 雙層數(shù)據(jù)庫用戶角色安全登錄模式的設計與實現(xiàn)工作流程
基于MIS單層數(shù)據(jù)庫用戶角色登錄模式的缺陷和安全隱患,對MIS驗證方式的登錄過程進行改造,實現(xiàn)登錄過程兩個環(huán)節(jié)的轉(zhuǎn)變,即改變單層數(shù)據(jù)庫用戶角色為雙層數(shù)據(jù)庫用戶角色,改變未被加密“MIS用戶表”為加密“MIS用戶表”。所謂雙層用戶角色是指將DBMS用戶權(quán)限劃分為兩個級別的角色——缺省角色和實際角色。
缺省角色是指數(shù)據(jù)庫用戶所具備的缺省權(quán)限,僅用于連接和查詢加密后的“MIS用戶表”,不具備任何操作數(shù)據(jù)庫中具體數(shù)據(jù)表的權(quán)限。
實際角色是指MIS設計時,根據(jù)用戶使用MIS功能的需要,賦予MIS用戶操作數(shù)據(jù)庫實際的用戶權(quán)限,包括對數(shù)據(jù)庫內(nèi)容的查詢、添加、刪除、修改等操作。特別地,實際角色是一類操作權(quán)限,并不是將DBMS超級管理員權(quán)限賦予實際角色,而是按照用戶使用MIS功能的需要,將實際角色劃分為多種功能層次的角色用戶,每個層次的用戶僅能操作自己權(quán)限允許范圍內(nèi)的數(shù)據(jù)表。
“MIS用戶表”是MIS用戶與實際角色用戶的對照表,一類實際角色對應于多個MIS用戶?!癕IS用戶表”中存儲了MIS用戶名、密碼,以及MIS用戶對應的實際角色、實際角色密碼信息,MIS用戶名、MIS用戶密碼及對應實際角色、密碼均經(jīng)過相應的加密算法處理。對于不同用戶是同一實際角色,加密后“MIS用戶表”中存儲的實際角色的信息編碼形式是不同的,只由MIS用戶自己能獲得實際角色用戶名、密碼的解密。
MIS雙層數(shù)據(jù)庫用戶角色登錄實現(xiàn)工作流程,如圖1。
2 雙層數(shù)據(jù)庫用戶角色安全登錄模式實現(xiàn)的核心問題與技術(shù)
2.1 加密的算法分類與選擇
加密技術(shù)是保護私有數(shù)據(jù)不被訪問和修改,同時確保數(shù)據(jù)的完整性的信息編碼技術(shù)。通常地,根據(jù)密鑰類型不同將加密技術(shù)分為,對稱加密、非對稱加密。又根據(jù)加密方向可逆與否可將加密技術(shù)分為:單向加密、雙向加密。Microsoft? .NET Framework中涵蓋了三類常見加密算法:對稱加密算法、非對稱加密算法、哈希加密算法。System.Security.Cryptography命名空間中提供了加密算法實現(xiàn)類,具體見表1。
一般地,數(shù)據(jù)庫加密要求加密效率、加密強度要盡可能的高。非對稱算法加密算法雖然加密強度較高,但算法復雜,效率較低,不能滿足數(shù)據(jù)庫加密要求。對稱加密算法速度較快、實現(xiàn)簡單,適合數(shù)據(jù)庫加密/解密。哈希加密算法為單向加密,適合用戶口令加密。針對三類加密算法的特點,結(jié)合數(shù)據(jù)庫加密的要求,數(shù)據(jù)庫登錄機制的實現(xiàn)選擇典型、具有代表性的MD5哈希算法、DES對稱算法。
2.2 MIS用戶表設計
依據(jù)雙層數(shù)據(jù)庫用戶角色模式登錄的工作流程,MIS用戶表至少包含四個內(nèi)容的字段,即MIS用戶名,MIS用戶密碼,DBMS用戶名,DBMS用戶密碼。又考慮到用戶信息加密后的字段最大長度,設計MIS用戶表,如表2。
2.3 登錄過程中加密算法運行機制
根據(jù)加密算法的特點以及雙層數(shù)據(jù)庫角色登錄機制用戶的要求,MIS用戶名、用戶密碼加密使用MD5算法,DBMS角色用戶名、角色用戶密碼用DES算法。
1) MIS用戶密碼加密
MIS用戶名的加密經(jīng)MD5加密后存儲于數(shù)據(jù)庫UserName列,MIS用戶密碼的加密經(jīng)MD5加密后存儲于數(shù)據(jù)庫UserPWD列。
2) DBMS角色用戶名、角色用戶密碼加密
由于MIS用戶名為MIS用戶表的主鍵,所以在數(shù)據(jù)表中,MIS用戶名是唯一的,MIS用戶名經(jīng)過MD5加密后仍為唯一的,考慮到主機IP地址唯一性,所以將MIS用戶名的MD5加密字符串的一部分及主機IP地址的一部分組成DBMS角色用戶名、角色用戶密碼加密/解密的密鑰,這樣就保證了用戶只有自己能對自己的登錄信息進行正確的解密。
3 結(jié)束語
安全防范是一個永久性的問題, 只有通過不斷地改進和完善安全手段, 才能提高系統(tǒng)的可靠性。以上加密登錄機制已經(jīng)在有些學校的網(wǎng)絡成績管理系統(tǒng)和教務管理系統(tǒng)中使用。經(jīng)過測試,具有穩(wěn)定、可靠、安全、操作方便的特點,是一種經(jīng)過時間檢驗,比較成熟的登錄機制設計。
參考文獻:
[1] 鄧藝夫,胡振.DES加密算法與SHA1散列函數(shù)的結(jié)合應用[J].現(xiàn)代計算機,2006,(7):100-102,112.
[2] 曾青松. .net框架下數(shù)據(jù)加密技術(shù)的實現(xiàn)[J].電腦知識與技術(shù),2005,(35):60-62.
[3] 李海燕,徐汀榮.基于B/S的電子政務系統(tǒng)中信息加密技術(shù)的實際與實現(xiàn)[J].蘇州大學學報(工科版),2004,24(6):46-48.
[4] 劉瑜,陳鐵英. Microsoft SQL Server數(shù)據(jù)庫的安全策略及實現(xiàn)方法[J].計算機工程與設計,2003,24(1):68-71.