邵麗 覃愛明 趙丹亞 鄭小玲 劉曉龍
摘要:本文首先分析了XML數(shù)字簽名規(guī)范,探討了基于XML數(shù)字簽名的高校成績單簽名與認證,并給出了基于Java的XML簽名與驗證的具體實現(xiàn),有效地保證了成績數(shù)據(jù)的完整性與不可否認性,進一步提高了成績管理的安全性。
關(guān)鍵詞:XML數(shù)字簽名成績管理JAVA安全
1.引言
目前各高等院校都廣泛應(yīng)用基于校園網(wǎng)的綜合教務(wù)系統(tǒng)進行各項教學(xué)教務(wù)管理,大大提高了管理水平與效率。其中,成績管理是一項非常重要而繁瑣的工作。目前的操作流程一般是:(1)任課教師通過自己的用戶名和密碼登陸“教務(wù)管理系統(tǒng)”。(2)進入“成績錄入”,通過輸入相應(yīng)課程的成績錄入密碼,選擇所授班級,系統(tǒng)自動生成該課程該班級的學(xué)生成績表。(3)在學(xué)生成績表中錄入成績,完成并成功提交后,數(shù)據(jù)保存到相應(yīng)的數(shù)據(jù)庫中。(4)任課教師打印成績單,并手工簽名后上交教務(wù)處和相關(guān)學(xué)院,供核查與存檔備案。這樣的操作過程提高了成績管理的效率與水平,方便了學(xué)生查詢自己的成績。但安全性比較脆弱,一是采用口令方式存在的安全隱患,二是當(dāng)出現(xiàn)成績單與數(shù)據(jù)庫中的成績不一致時,如何確認成績的有效性與真實性問題。為此,在現(xiàn)有的綜合教務(wù)管理系統(tǒng)中,本文設(shè)計了基于XML安全的高校成績數(shù)字簽名,給出了基于Java的XML數(shù)字簽名與驗證的具體實現(xiàn),提高了成績管理的安全性。
2.數(shù)字簽名
數(shù)字簽名是在信息的傳輸過程中,為了保證數(shù)據(jù)的有效性、完整性,嚴防用戶惡意篡改消息、偽造消息以及否認所發(fā)送消息的一種安全協(xié)議。一般來說,數(shù)字簽名有兩個步驟:第一步是哈希運算,對于一個消息,使用哈希函數(shù)進行簽名,返回哈希值,其中消息采用比特模式,長度可以任意,而哈希值具有固定長度;第二步是對第一步生成的哈希值使用私鑰和簽名算法進行簽名,產(chǎn)生簽名值,從而使得具有公鑰的人可以方便驗證。在具體的驗證過程中,首先使用相同的哈希函數(shù)對于收到的消息進行哈希運算,得到哈希值。然后,將計算得到的哈希值、收到的簽名值以及發(fā)送方所公布的公鑰一起傳遞給簽名算法,對簽名值進行驗證。如果計算得到的哈希值與簽名哈希值相匹配,則簽名有效。如果這兩個哈希值不匹配,則表明數(shù)據(jù)或簽名已經(jīng)更改。
3.XML數(shù)字簽名規(guī)范
XML是W3C專門為Web設(shè)計的一種標記語言。由于XML具有自我描述性、良好的可擴展性、平臺無關(guān)性等特點,使得它在Internet上得到廣泛的推廣與應(yīng)用,已成為數(shù)據(jù)表示和數(shù)據(jù)交換的事實標準。與標準的數(shù)字簽名相比,XML數(shù)字簽名規(guī)范具有兩個特點:
(1)簽名數(shù)據(jù)需要采用XML文檔來表示。
(2)可以對整個XML文檔、XML文檔的一部分內(nèi)容進行簽名。
3.1XML簽名過程
XML數(shù)字簽名需要選擇摘要算法、簽名算法,使用私鑰對給定的XML文檔進行簽名操作,產(chǎn)生簽名文件。如果需要,可以通過時間服務(wù)器給已簽名的文檔加上時間戳,規(guī)定文檔的有效期。XML數(shù)字簽名過程如圖1所示。