通用公文加密系統(tǒng)

隨著互聯(lián)網(wǎng)應(yīng)用的逐步普及和電子政務(wù)建設(shè)的深入開(kāi)展,政府信息安全的問(wèn)題已經(jīng)日益突出。因此,為保證電子政務(wù)系統(tǒng)中信息傳輸?shù)陌踩?,必須引入通用公文加密系統(tǒng),對(duì)重要的數(shù)據(jù)在應(yīng)用層上進(jìn)行加密,并通過(guò)數(shù)字簽名及認(rèn)證技術(shù)來(lái)保證數(shù)據(jù)在網(wǎng)上傳輸?shù)恼鎸?shí)性、機(jī)密性、可靠性及完整性。

一、通用公文加密系統(tǒng)

通用公文加密是政府機(jī)關(guān)和下級(jí)機(jī)關(guān)之間、政府機(jī)關(guān)內(nèi)部部門(mén)與部門(mén)之間傳輸公文時(shí),公文通常采取明文的形式。明文的數(shù)據(jù)在網(wǎng)絡(luò)上傳輸時(shí)可能被外界截獲或篡改,給公文的安全和保密帶來(lái)極大的威脅。為保證信息的安全傳輸,我們?cè)O(shè)計(jì)了通用公文加密系統(tǒng)。

1、通用公文加密系統(tǒng)的加密原理

該系統(tǒng)所采用的加密技術(shù)是對(duì)稱密鑰加密。系統(tǒng)中的每一個(gè)終端都有一個(gè)唯一標(biāo)識(shí)自己真實(shí)身份的主機(jī)密鑰。終端需要傳輸數(shù)據(jù)時(shí),必須得向密鑰管理中心動(dòng)態(tài)申請(qǐng)一對(duì)加密密鑰,管理中心在客戶端代理程序申請(qǐng)加密密鑰時(shí)為每一個(gè)客戶代理申請(qǐng)產(chǎn)生一對(duì)加密密鑰。加密密鑰是管理中心調(diào)用中心加密卡API函數(shù)生成的一個(gè)128位的隨機(jī)敦,管理中心使用申請(qǐng)者的通訊實(shí)體的主機(jī)密鑰和申請(qǐng)者所指定的接收方通訊實(shí)體的主機(jī)密鑰,并調(diào)用中心加密卡的API函數(shù)分別對(duì)加密密鑰進(jìn)行加密,生成的加密密鑰是一對(duì)密鑰,而且密鑰是對(duì)稱的。代理程序在得到申請(qǐng)者和接收者的密態(tài)的加密舒鑰(發(fā)送方加密密鑰,接收方加密密鑰)之后,代理程序使用自身的主機(jī)密鑰將發(fā)送方加密密鑰解密,得到細(xì)密密鑰明文口代理程序使用明文加密密鑰加密會(huì)話密鑰(由加密卡生成的隨機(jī)數(shù),用來(lái)加密數(shù)據(jù))。然后,代理程序使用明文會(huì)譎密鑰加密數(shù)據(jù),代理程序特接收方的密態(tài)加密密切也寫(xiě)入數(shù)據(jù)包,這樣,接收方就可以使用自己的主機(jī)密鑰密加密密鑰,從而解密會(huì)話解密密鑰,最終解密數(shù)據(jù)。由于只有接收方才擁有解密加密密鑰的鑰匙——接收方的主機(jī)密鑰,因此只有接收方才能得到解密會(huì)話密鑰的鑰匙,從而進(jìn)一步得到解密數(shù)據(jù)的鑰匙——通用加密系統(tǒng)的這種多層次密鑰保護(hù)機(jī)制保證了,即使教據(jù)在傳輸過(guò)程中杖截獲,截獲者由于沒(méi)有解密的鑰匙而無(wú)法得到明文數(shù)據(jù)。

為確保公文在網(wǎng)上傳輸?shù)恼鎸?shí)性和完整性,通用加密系統(tǒng)采用了消息撓要算法。對(duì)客戶端耍發(fā)送的公文密文使用消息摘要算法得到一個(gè)散列值,并用會(huì)話密鑰加密后,與公文密文一起發(fā)送給接收方接收端對(duì)接收到的公文密文也使用消息摘要算法得到一個(gè)散列值,并解密接收到的密態(tài)散列值,接收端比較兩個(gè)散列值就能知道公文在傳輸中是否被改動(dòng)過(guò)。

2、通用公文加密系統(tǒng)的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

(1)公文加密系統(tǒng)結(jié)構(gòu)

通用公文加密系統(tǒng)由一個(gè)硬件加密卡系統(tǒng)與一個(gè)管理密鑰和加密公文數(shù)據(jù)的軟件系統(tǒng)組成。硬件加密卡系統(tǒng)是由加密卡(PCI接口或USB接口)、IC卡機(jī)和IC卡組成。而軟件系統(tǒng)是由管理中心和客戶代理組成,其中臂理中心又分為管理界膏和密鑰分發(fā)程序。管理中心安裝在系統(tǒng)里的管理服務(wù)器由系統(tǒng)或網(wǎng)絡(luò)管理員使用,管理員可以在管理中心為網(wǎng)絡(luò)通訊定義一組安全加密策略??蛻舸沓绦虬惭b在通訊實(shí)體(在通用公文加密系統(tǒng)中,通訊實(shí)體被定義為一個(gè)安裝了加密卡和公文加密系統(tǒng)的用戶終端。通訊實(shí)體的信息包括:姓名、所屬單位、IP地址、主機(jī)密鑰、主機(jī)密鑰有效期等等)的計(jì)算機(jī)上,代理程序?qū)崿F(xiàn)數(shù)據(jù)的加解密和密鑰的獲取。

(2)公文加密體系結(jié)構(gòu)圖

如圖1所示

(3)系統(tǒng)的體系結(jié)構(gòu)及組成部分的實(shí)現(xiàn)方法

通用公文加密系統(tǒng)采用客戶機(jī)服務(wù)器的體系結(jié)構(gòu),由管理中心和客戶代理兩大部分組成,如圖2所示。管理中心負(fù)責(zé)管理系統(tǒng)內(nèi)所有通訊實(shí)體。接收客戶端請(qǐng)求、分發(fā)加密密鈳、產(chǎn)生日志記錄??蛻舸碡?fù)責(zé)向管理中心申請(qǐng)加密密鑰、加密解密數(shù)據(jù)、管理加密。

管理中心由兩個(gè)獨(dú)立的應(yīng)用程序組成,一個(gè)是系統(tǒng)管理程序,另外一個(gè)是密鑰分發(fā)程序。系統(tǒng)管理程序是在WindowsNT和Windows2000下開(kāi)發(fā)的CUI程序。系統(tǒng)管理員通過(guò)系統(tǒng)管理程序完成加密系統(tǒng)的初蛤化工作,并將所有的通訊實(shí)體和管理中心的主機(jī)密鑰保存在數(shù)據(jù)庫(kù)中。

密鑰分發(fā)程序是一個(gè)典型的基于TCP/IP之上的Socket服務(wù)器程序。該服務(wù)器程序存特定的端口(如,6000)上監(jiān)聽(tīng)來(lái)自客戶代理的請(qǐng)求,并能夠并發(fā)地處理多個(gè)來(lái)自客戶端的請(qǐng)求。

客戶端和服務(wù)端均為層狀結(jié)構(gòu),便于采用面向?qū)ο蟮姆椒ㄔO(shè)計(jì)和實(shí)現(xiàn)。在加密系統(tǒng)中,數(shù)據(jù)存儲(chǔ)分別采用Access數(shù)據(jù)庫(kù)(管理中心端)和文件系統(tǒng)(客戶代理端)。數(shù)據(jù)庫(kù)連接采用高技簡(jiǎn)潔的ADO,文件系統(tǒng)采用XML格式存儲(chǔ)(配置文件)的方式。通訊服務(wù)層采用基于TCP的Socket實(shí)現(xiàn)。

3、通用加密系統(tǒng)的安全性分析

通用加密系統(tǒng)的安全性依賴于對(duì)稱密鑰加密機(jī)制、密鑰本身的安全、硬件加密卡的加密算法和消息摘要算法。

在通用公文加密系統(tǒng)中,由于加密密鑰是由硬件加密卡產(chǎn)生的128位長(zhǎng)的密鑰,并實(shí)時(shí)分發(fā),這樣就保征了加密密鑰本身的不可攻破性。

通用公文加密系統(tǒng)采用通過(guò)國(guó)家權(quán)威安全機(jī)構(gòu)鑒定的硬件“普密”加密系統(tǒng)來(lái)保證公文的安全。本系統(tǒng)由支持128位硬件加密的加密卡(PCI接口或USB接口)、IC卡機(jī)和智能IC卡組成。核心加密算法動(dòng)態(tài)解密加密,板卡DSP程序動(dòng)態(tài)解密動(dòng)態(tài)運(yùn)行,保證了安全可靠性和防職蹤性。另外,系統(tǒng)采用智能IC卡進(jìn)行身份識(shí)別,并對(duì)加密卡進(jìn)行保護(hù)隔離。

對(duì)于消息摘要算法,單向散列函散的設(shè)計(jì)已經(jīng)十分成熟。市場(chǎng)上廣泛使用的MD5、SHA算法的教列值分別為128、160位,足以阻止所有的窮舉攻擊的企臣。由此看來(lái),通用加密系統(tǒng)能夠保證公文傳輸?shù)目煽啃?、完整性和安全性。但通用公文加密系統(tǒng)在公文附件和OLE對(duì)象的加密、解密,公文印簟管理,以及艉決對(duì)稱加密自身的固有缺陷等方面還需要進(jìn)一步完善和提高。

小知識(shí)之ADO一種程序?qū)ο?,用于表示用戶?shù)據(jù)庫(kù)中的數(shù)據(jù)結(jié)構(gòu)和所包含的數(shù)據(jù)。在Microsoft Visual Basic編輯器中,可以使用ADO對(duì)象以及ADO的附加組件(稱為Microsoft ADO Extensions for DLL and Security(ADOX))來(lái)創(chuàng)建或修改表和查詢、檢驗(yàn)數(shù)據(jù)庫(kù)、或者訪問(wèn)外部數(shù)據(jù)源。還可在代碼中使用ADO來(lái)操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)。