摘要:本文提出并實(shí)現(xiàn)了一種基于u盤和網(wǎng)絡(luò)的加密解密系統(tǒng),介紹了系統(tǒng)的功能和組成。整個(gè)系統(tǒng)由相對(duì)獨(dú)立的加密系統(tǒng)、解密系統(tǒng)和校核系統(tǒng)三個(gè)部分組成,利用成熟的加密算法和數(shù)字簽名等技術(shù)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密、解密和校驗(yàn)。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)極大的提高了數(shù)據(jù)的保密性和安全性。
關(guān)鍵詞:信息安全技術(shù);加密;解密;數(shù)據(jù)安全
中圖分類號(hào):TP393.09 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.3969/j.issn.1003 6970.2016.05.011
本文著錄格式:許永正.基于u盤和網(wǎng)絡(luò)的加密解密系統(tǒng).軟件,2016,37(5):38-44
0.引言
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展和Internet的普及,病毒、木馬、黑客等問題日益威脅著計(jì)算機(jī)和網(wǎng)絡(luò)的正常使用,信息安全技術(shù)越來越受到人們的重視,尤其是在商業(yè)、軍事等對(duì)數(shù)據(jù)的保密性、安全性要求很高的領(lǐng)域。
在日常工作中,網(wǎng)絡(luò)由于數(shù)據(jù)傳輸方便快捷,u盤等可讀寫的移動(dòng)存儲(chǔ)介質(zhì)由于攜帶方便、可重復(fù)使用等特點(diǎn),已經(jīng)成為人們傳輸數(shù)據(jù)的主要手段和工具,但是網(wǎng)絡(luò)數(shù)據(jù)傳輸容易被他人截取,移動(dòng)存儲(chǔ)介質(zhì)上的數(shù)據(jù)一般都是明文存儲(chǔ),他人可以直接讀取,數(shù)據(jù)的保密性和安全性很低。
本文實(shí)現(xiàn)的加密解密系統(tǒng)不管是通過網(wǎng)絡(luò)還是U盤傳輸數(shù)據(jù),都可以方便的對(duì)數(shù)據(jù)進(jìn)行加密和解密,極大的提高了數(shù)據(jù)保密性和安全性。
1.定義
1.1加密算法
加密解密系統(tǒng)的技術(shù)難點(diǎn)在于加密算法,如何選擇合適加密算法,產(chǎn)生強(qiáng)固的密鑰,提升系統(tǒng)安全性可靠性,是所有加密系統(tǒng)都要仔細(xì)考慮的。目前流行的加密算法分為單向散列算法、公開密鑰算法、對(duì)稱算法三類。
1.2單項(xiàng)散列算法
單項(xiàng)散列函數(shù)算法也稱為Hash算法,是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度(消息摘要)的函數(shù)(不可逆過程)。Hash函數(shù)主要用于數(shù)字簽名、消息的完整性檢測(cè)、消息起源的認(rèn)證檢測(cè)等。常見的散列算法有MD5、SHA、N-hash、PIPI-MD、HAVAL等。
1.3公開密鑰算法
公開密鑰算法也稱為非對(duì)稱算法,用作加密的密鑰不同于用作解密的密鑰,而且解密密鑰不能根據(jù)加密密鑰計(jì)算出來。加密密鑰可以公開,即陌生人能用加密密鑰加密信息,但只有用相應(yīng)的解密密鑰才能解密。加密密鑰叫公鑰,解密密鑰稱為私鑰。公開密鑰算法的安全性都是基于復(fù)雜的數(shù)學(xué)難題,根據(jù)所基于的數(shù)學(xué)難題分類,以下三類系統(tǒng)目前被認(rèn)為是安全有效的:大整數(shù)因子分解系統(tǒng)(代表性的有RSA算法)、離散對(duì)數(shù)系統(tǒng)(代表性的有DSA、EIGamal算法)和橢圓曲線離散對(duì)數(shù)系統(tǒng)(ECC算法)。公鑰算法的主要局限在于,這種加密形式的速度相對(duì)較低。
1.4對(duì)稱算法
對(duì)稱加密算法的加密密鑰和解密密鑰完全相同,所以也稱為共享密鑰加密或機(jī)密密鑰加密。其安全性依賴于以下兩個(gè)因素:第一、加密算法必須是足夠強(qiáng),僅僅基于密文本身去解密信息在實(shí)踐中是不可能的;第二、加密數(shù)據(jù)的安全性依賴于密鑰的秘密性,而不是算法的秘密性。衡量對(duì)稱算法優(yōu)劣的主要尺度是其密鑰的長(zhǎng)度。密鑰越長(zhǎng),在找到解密數(shù)據(jù)所需的正確密鑰之前必須測(cè)試的密鑰數(shù)量就越多。需要測(cè)試的密鑰越多,破解這種算法就越困難。有了好的加密算法和足夠長(zhǎng)的密鑰,如果有人想在一段實(shí)際可行的時(shí)間內(nèi)逆轉(zhuǎn)轉(zhuǎn)換過程,并從暗文中推導(dǎo)出明文,從計(jì)算的角度來講,這種做法是行不通的。典型的對(duì)稱加密算法包括:DES、BlowFish等。
1.5數(shù)字簽名
對(duì)文件進(jìn)行加密只解決了傳送信息的保密問題,而防止他人對(duì)傳輸?shù)奈募M(jìn)行破壞,以及如何確定發(fā)信人的身份還需要采取其它的手段,這一手段就是數(shù)字簽名。在電子商務(wù)安全保密系統(tǒng)中,數(shù)字簽名技術(shù)有著特別重要的地位,在電子商務(wù)安全服務(wù)中的源鑒別、完整性服務(wù)、不可否認(rèn)服務(wù)中,都要用到數(shù)字簽名技術(shù)。在電子商務(wù)中,完善的數(shù)字簽名應(yīng)具備簽字方不能抵賴、他人不能偽造、在公證人面前能夠驗(yàn)證真?zhèn)蔚哪芰Α?/p>
電子商務(wù)中數(shù)據(jù)傳輸?shù)膸讉€(gè)安全性需求:
(1)數(shù)據(jù)的保密性:用于防止非法用戶進(jìn)入系統(tǒng)及合法用戶對(duì)系統(tǒng)資源的非法使用;通過對(duì)一些敏感的數(shù)據(jù)文件進(jìn)行加密來保護(hù)系統(tǒng)之間的數(shù)據(jù)交換,防止除接收方之外的第三方截獲數(shù)據(jù)及即使獲取文件也無法得到其內(nèi)容。如在電子交易中,避免遭到黑客的襲擊使信用卡信息丟失的問題。
(2)數(shù)據(jù)的完整性:防止非法用戶對(duì)進(jìn)行交換的數(shù)據(jù)進(jìn)行無意或惡意的修改、插入,防止交換的數(shù)據(jù)丟失等。
(3)數(shù)據(jù)的不可否認(rèn)性:對(duì)數(shù)據(jù)和信息的來源進(jìn)行驗(yàn)證,以確保數(shù)據(jù)由合法的用戶發(fā)出;防止數(shù)據(jù)發(fā)送方在發(fā)出數(shù)據(jù)后又加以否認(rèn);同時(shí)防止接收方在收到數(shù)據(jù)后又否認(rèn)曾收到過此數(shù)據(jù)及篡改數(shù)據(jù)。
上述需求對(duì)應(yīng)于防火墻、加密、數(shù)字簽名、身份認(rèn)證等技術(shù),但其關(guān)鍵在于數(shù)字簽名技術(shù)。
1.6密鑰管理體制
密碼系統(tǒng)的兩個(gè)基本要素是加密算法和密鑰管理。加密算法是一些公式和法則,它規(guī)定了明文和密文之間的變換方法。由于密碼系統(tǒng)的反復(fù)使用,僅靠加密算法已難以保證信息的安全了。事實(shí)上,加密信息的安全可靠依賴于密鑰系統(tǒng),密鑰是控制加密算法和解密算法的關(guān)鍵信息,它的產(chǎn)生、傳輸、存儲(chǔ)等工作是十分重要的。
2.概述
本文實(shí)現(xiàn)的系統(tǒng)由加密系統(tǒng)、解密系統(tǒng)和校核系統(tǒng)三個(gè)部分組成。加密系統(tǒng)負(fù)責(zé)對(duì)待加密文件進(jìn)行加密并產(chǎn)生密鑰,將加密后的數(shù)據(jù)按照自定義格式存入移動(dòng)存儲(chǔ)介質(zhì)(在本文中稱之為目標(biāo)卡),密鑰存入另一個(gè)移動(dòng)存儲(chǔ)介質(zhì)(在本文中稱之為解鎖卡)。同時(shí)加密系統(tǒng)還提供網(wǎng)絡(luò)接口,將目標(biāo)密文文件和解鎖文件傳輸給解密系統(tǒng),將待加密文件傳送給校核系統(tǒng);解密系統(tǒng)是加密系統(tǒng)的逆過程,它從網(wǎng)絡(luò)接口或者可移動(dòng)存儲(chǔ)介質(zhì)獲得目標(biāo)密文文件和密鑰,將目標(biāo)密文文件解密為明文,同時(shí)解密系統(tǒng)提供的網(wǎng)絡(luò)接口將解密后的明文發(fā)送給校核系統(tǒng);校核系統(tǒng)通過網(wǎng)絡(luò)接口或者移動(dòng)存儲(chǔ)介質(zhì)獲得待加密文件和明文,對(duì)二者進(jìn)行比對(duì)驗(yàn)證,并得出驗(yàn)證結(jié)果。三個(gè)系統(tǒng)分別安裝在三臺(tái)計(jì)算機(jī)上,它們通過預(yù)定義的接口進(jìn)行通信和數(shù)據(jù)交換。
系統(tǒng)流程圖如圖1所示。
由上述系統(tǒng)功能可見,加密數(shù)據(jù)安全性主要取決于解鎖卡,需要防止非法人員同時(shí)獲取解鎖卡和目標(biāo)卡后進(jìn)行破解,所以系統(tǒng)還要對(duì)解鎖卡中密鑰進(jìn)行二級(jí)加密,即采用所謂的二級(jí)密鑰管理體制。
在實(shí)際使用中,如果沒有校核系統(tǒng),為了保證解密后數(shù)據(jù)的正確性,需要采用數(shù)字簽名技術(shù),對(duì)加密數(shù)據(jù)和密鑰進(jìn)行簽名驗(yàn)證。這樣保證了解密時(shí)使用的密文數(shù)據(jù)與密鑰是由合法的加密系統(tǒng)產(chǎn)生的,并且沒有被修改或破壞,最終確保解密后數(shù)據(jù)的正確性。
同時(shí),解密系統(tǒng)需要加強(qiáng)密碼保護(hù)機(jī)制,因?yàn)槠渲杏杏糜隍?yàn)證簽名文件的密鑰文件,保護(hù)這些密鑰,成為保衛(wèi)系統(tǒng)安全的最后一道屏障。
由于三個(gè)系統(tǒng)之間需要交換數(shù)據(jù),它們之間的數(shù)據(jù)接口也容易成為攻破系統(tǒng)保密措施的一個(gè)弱點(diǎn)。因此需要合理設(shè)計(jì)數(shù)據(jù)接口,交換數(shù)據(jù)時(shí)采用安全的加密協(xié)議。
3.加密系統(tǒng)
加密系統(tǒng)的功能為選擇加密算法對(duì)原始數(shù)據(jù)進(jìn)行加密,并生成密鑰。然后將加密后的數(shù)據(jù)按照自定義格式存入目標(biāo)卡(防止別人直接讀取數(shù)據(jù)),密鑰存入解鎖卡。流程圖如圖2所示。
首先用戶選擇加密算法對(duì)原始數(shù)據(jù)進(jìn)行加密,所有的加密算法都封裝在DLL中,其優(yōu)點(diǎn)一是隱藏了算法的實(shí)現(xiàn)細(xì)節(jié),二是增強(qiáng)了系統(tǒng)的可維護(hù)性和擴(kuò)展性。原始數(shù)據(jù)加密后生成密文和主密鑰,密文和其簽名文件儲(chǔ)存到目標(biāo)卡,主密鑰進(jìn)行RSA加密生成工作密鑰,并對(duì)工作密鑰進(jìn)行數(shù)字簽名,然后再對(duì)RSA算法產(chǎn)生的私鑰s0進(jìn)行加密,最后將這些結(jié)果儲(chǔ)存到解鎖卡中。系統(tǒng)啟動(dòng)時(shí)調(diào)用RSA算法產(chǎn)生了一對(duì)安全的密鑰(公鑰GO和私鑰s0),利用公鑰GO對(duì)主密鑰加密,同時(shí)進(jìn)行簽名文件的加密(見1.1),另外也對(duì)私鑰s0進(jìn)行了加密(見1.2),增強(qiáng)系統(tǒng)的安全性。
加密時(shí),系統(tǒng)處理流程按以下步驟進(jìn)行:
(1)用戶輸入待加密原始數(shù)據(jù)文件(定義為OF),然后選擇加密算法。
(2)系統(tǒng)調(diào)用的加密算法程序(定義為DLL),選擇的算法序號(hào)為XH,生成“主密鑰”(定義為PK),并用PK和DLL對(duì)原始數(shù)據(jù)OF加密,生成密文文件(定義為SF)。
(3)系統(tǒng)調(diào)用RSA算法,生成密鑰對(duì)(公鑰GO,私鑰SO),該過程定義為WK。
(4)用GO對(duì)sF進(jìn)行數(shù)字簽名,生成簽名文件(定義為SSF)。
(5)將sF與SSF合并,生成合成為已加密目標(biāo)文件(定義為MSF),并保存到目標(biāo)卡中;
(6)用WK中的公鑰GO對(duì)PK加密,生成“工作密鑰”(定義為SPK)。
(7)用GO對(duì)SPK進(jìn)行數(shù)字簽名,生成簽名文件(定義為SSPK)。
(8)利用算法對(duì)WK中的私鑰s0進(jìn)行加密,生成“加密后內(nèi)容”(定義為SS0)。
(9)將XH、SS0、SPK、SSPK合并,生成合成解鎖文件(定義為MSPK),并保存到解鎖卡中。
3.1數(shù)字簽名及簽名文件加密處理流程
數(shù)字簽名及簽名文件處理完成兩個(gè)功能:數(shù)字簽名和簽名文件加密。簽名文件加密時(shí)采用加密系統(tǒng)產(chǎn)生的公鑰GO進(jìn)行加密,因?yàn)楣€GO是隨機(jī)產(chǎn)生的,安全性較高,并且解密用到的私鑰s0也經(jīng)過了加密。流程圖如圖3所示:
3.2私鑰SO加密處理流程
流程圖如圖4所示。
私鑰SO是一個(gè)相當(dāng)關(guān)鍵的密鑰,獲得它就能破解工作密鑰得到主密鑰。傳統(tǒng)的加密系統(tǒng)多采用人為方式來保證私鑰的安全性,這樣就降低了系統(tǒng)的安全性。為了增強(qiáng)系統(tǒng)的安全性,這里使用了一種策略,即對(duì)私鑰SO進(jìn)行加密。對(duì)私鑰加密采用固定密鑰對(duì),這些固定密鑰對(duì)是由RSA算法產(chǎn)生的安全密鑰對(duì)。每次私鑰SO加密時(shí),系統(tǒng)隨機(jī)提取一組密鑰對(duì)(公鑰G1和私鑰S1),利用公鑰Gl對(duì)私鑰SO進(jìn)行加密,然后將加密后的關(guān)鍵密鑰和密鑰對(duì)集合序號(hào)合并到解鎖文件中,私鑰Sl不作任何處理。
4.解密系統(tǒng)
解密系統(tǒng)通過讀取解鎖卡上的密鑰文件解密目標(biāo)卡上的數(shù)據(jù)文件,從而得到還原的數(shù)據(jù)。然后將還原的數(shù)據(jù)存儲(chǔ)到指定位置,并通過網(wǎng)絡(luò)接口發(fā)送給校核系統(tǒng)。流程圖如圖5所示。
解密系統(tǒng)還提供簽名驗(yàn)證功能(見2.1),用來確保密文的合法性,一旦密文遭到非法篡改,系統(tǒng)能夠及時(shí)發(fā)現(xiàn)。為解密出明文,系統(tǒng)要一步步獲得密鑰,首先根據(jù)關(guān)鍵密鑰和密鑰對(duì)集合序號(hào)解密出私鑰SO(見2.2),再根據(jù)私鑰s0和工作密鑰解密出主密鑰,最后才通過主密鑰、密文、加密算法編號(hào)解密出明文(見2.3)。
解密系統(tǒng)工作步驟為:
(1)將已加密目標(biāo)文件進(jìn)行分解,獲得密文簽名文件(SSF)和密文(SF)。
(2)對(duì)SSF進(jìn)行簽名驗(yàn)證,如果合法則繼續(xù)解密,若不合法則提示信息并結(jié)束解密。
(3)將解鎖文件進(jìn)行分解為密鑰對(duì)序列號(hào)(定義為KXH)、關(guān)鍵密鑰(定義為GK)、工作密鑰(SPK)、加密算法編號(hào)(XH)、工作密鑰簽名文件(SSPK)。
(4)將密鑰對(duì)序列號(hào)(KXH)和關(guān)鍵密鑰(GK)解密獲得私鑰SO。
(5)將私鑰s0和工作密鑰SPK解密獲得主密鑰(PK)。
(6)利用密文(SF)、主密鑰(PK)和加密算法編號(hào)(XH)解密出明文(OF)。
(7)提供網(wǎng)絡(luò)接口將明文發(fā)送給校核系統(tǒng)。
4.1簽名驗(yàn)證處理流程
簽名驗(yàn)證處理實(shí)現(xiàn)文件的合法性驗(yàn)證。如果簽名文件經(jīng)RSA算法解密的散列值1與被簽名文件經(jīng)過Hash變換后的散列值2一致,則表示驗(yàn)證成功,否則驗(yàn)證失敗。這里的Hash函數(shù)要和加密系統(tǒng)中數(shù)字簽名的Hash函數(shù)一致,這樣簽名驗(yàn)證才能正常工作。流程圖如圖6所示。
4.2解密私鑰SO處理流程
流程圖如圖7所示。
根據(jù)密鑰對(duì)序號(hào),系統(tǒng)從密鑰對(duì)集合中取出已加密的公鑰G1和已加密的私鑰S1,對(duì)已加密的Sl進(jìn)行解密得到私鑰Sl,再利用Sl將關(guān)鍵密鑰解密為私鑰SO。值的注意的是,解密系統(tǒng)中的密鑰對(duì)集合與加密系統(tǒng)中的密鑰對(duì)集合存在對(duì)應(yīng)關(guān)系不一致。實(shí)際上,解密系統(tǒng)中的密鑰對(duì)集合是經(jīng)過加密的,它使用了解密系統(tǒng)登錄密碼進(jìn)行對(duì)稱算法加密。有了這樣的策略,即使目標(biāo)卡、解鎖卡、解鎖軟件都被盜?。ń饷苘浖卿浢艽a未被盜取),盜取者仍然不能解密出明文,就算盜取者通過暴力手段跳過了密碼驗(yàn)證環(huán)節(jié),仍然解密不出明文,因?yàn)闆]有軟件登錄密碼就無法解密出私鑰S1,也就無法解密出明文。
4.3解密明文處理流程
首先系統(tǒng)根據(jù)加/解密算法編號(hào)確定加/解密算法,然后系統(tǒng)利用加/解密算法、密文、主密鑰解密出明文。其中解密系統(tǒng)用到的加,解密算法庫(kù)和加密系統(tǒng)使用的加,解密算法庫(kù)一致。流程圖如圖8所示:
5.校核系統(tǒng)
校核系統(tǒng)用來驗(yàn)證加密、解密的正確性和可靠性。原始數(shù)據(jù)和解密系統(tǒng)解密后的數(shù)據(jù)通過移動(dòng)存儲(chǔ)介質(zhì)或者網(wǎng)絡(luò)傳輸?shù)叫:讼到y(tǒng)進(jìn)行比對(duì),并生成驗(yàn)證報(bào)告。流程圖如圖9所示。
6.結(jié)論
以上設(shè)計(jì)充分考慮了系統(tǒng)各方面可能存在的漏洞,嚴(yán)密防范了各種可能攻擊,讓一般技術(shù)手段很難破解。首先,假設(shè)非法人員先獲取了目標(biāo)卡,顯然他是無法單靠目標(biāo)卡解密上面保存的加密數(shù)據(jù)的;那么他同時(shí)獲得了目標(biāo)卡和解鎖卡,同樣他還是無法獲得數(shù)據(jù),因?yàn)榻怄i卡上的密鑰是被加密的,而加密它們的密鑰保存在解密系統(tǒng)的密鑰對(duì)集合中,所以他還需要獲取解密系統(tǒng);如果他只是想通過修改或更換數(shù)據(jù),導(dǎo)致我們使用錯(cuò)誤的數(shù)據(jù),那么他還需要過數(shù)字簽名驗(yàn)證這關(guān),這同樣需要工作密鑰來解密簽名文件;解密系統(tǒng)安裝在艦船加固機(jī)上,我們可以通過各種硬件或軟件手段保證它的安全;然后我們?cè)偌僭O(shè)非法人員通過某種手段又獲得了解密系統(tǒng)的完整拷貝,那么現(xiàn)在他會(huì)碰到軟件密碼保護(hù)這個(gè)問題了,如果他沒有獲取到密碼,即使他通過軟件運(yùn)行跟蹤、修改跳轉(zhuǎn)指令等破解手段,他會(huì)發(fā)現(xiàn)沒有密碼還是無法獲取關(guān)鍵的工作密鑰,而通過散列值反推出密碼也是不可能的;最后,如何保證密碼安全,這就已經(jīng)不屬于技術(shù)范疇的問題了。當(dāng)然,以上種種分析都是建立在加密算法高強(qiáng)度的基礎(chǔ)上的,只有難以在有限時(shí)間內(nèi)解出的算法才能最終保護(hù)系統(tǒng)安全。