隨著Internet的飛速發(fā)展和計算機技術的廣泛應用,信息的安全問題日益突出,以數(shù)據(jù)加密技術為核心的信息安全技術也得到了很大的發(fā)展,數(shù)據(jù)加密技術不僅能對數(shù)據(jù)進行加解密,而且還能夠?qū)崿F(xiàn)數(shù)字簽名、認證和鑒別等多種功能,從而保障了在網(wǎng)絡上傳輸數(shù)據(jù)的機密性、完整性和確認性,本文結(jié)合了DES算法和RSA算法的優(yōu)點,設計了一個數(shù)據(jù)加密系統(tǒng),同時利用Java安全軟件包實現(xiàn)數(shù)字簽名。
1 數(shù)據(jù)加密技術
數(shù)據(jù)加密技術是以加密算法為核心的,根據(jù)密碼算法所使用的加密密鑰和解密密鑰是否相同、能否由加密過程推導出解密過程等因素,可將密碼體制分為對稱密鑰加密體制和非對稱密鑰加密體制。
1.1對稱密鑰加密體制
對稱密鑰加密體制又稱單密鑰加密體制,在這種加密方法中,信息的加密和解密都使用相同的密鑰,或者說從一個密鑰可以很容易地推導出另一個密鑰,該機制優(yōu)點是簡單,通信雙方只需交換彼此密鑰,即可實現(xiàn)加解密過程,對稱加密體制的算法實現(xiàn)速度極快,軟件實現(xiàn)速度達到了每秒數(shù)兆或數(shù)十兆比特,但是,對稱密碼算法存在下面的問題:密鑰不能秘密地分配;缺乏自動檢測密鑰泄露的能力;假設網(wǎng)絡中每對用戶使用不同的密鑰,那么密鑰總數(shù)隨著用戶數(shù)的增加而迅速增多;無法解決消息確認問題。
對稱加密算法中最著名的是美國數(shù)據(jù)加密標準DES、高級加密標準AES和歐洲數(shù)據(jù)加密標準IDEA。
1.2非對稱密鑰加密體制
非對稱密鑰加密體制又稱公鑰加密體制,該體制的特性是,從公鑰推導出私鑰幾乎不可能,用公鑰密鑰對明文進行加密,只能用私鑰密鑰對其進行解密,公開密鑰都是在某些數(shù)學上的難解的問題上發(fā)展而來的,公開密鑰加密體制的優(yōu)點有:加密密鑰是公開的,用戶之間不需要傳遞私鑰;能夠很容易地實現(xiàn)數(shù)字簽名,保證交易過程的機密性、身份確認性、數(shù)據(jù)完整性和不可否認性,因此最適合電子商務的應用需要,由于公鑰加密系統(tǒng)是基于尖端的數(shù)學難題,它的缺點就是計算復雜,實現(xiàn)速度遠遠趕不上對稱加密系統(tǒng)。
根據(jù)所基于的數(shù)學難題來分類,有整數(shù)因子分解系統(tǒng)(代表性的有RSA)、離散對數(shù)系統(tǒng)(代表性的有DSA)、橢圓曲線離散對數(shù)系統(tǒng)(ECC)。
2 數(shù)字簽名技術
數(shù)字簽名技術是以公鑰密碼技術為基礎,主要用來保證信息傳輸過程中信息的完整性和認證信息發(fā)送者的身份,數(shù)字簽名的算法很多,應用最為廣泛的三種是:HaSh簽名、DES簽名、RSA簽名,這三種算法可單獨使用,也可綜合在一起使用。
數(shù)字簽名如果用對稱算法實現(xiàn),需要第三方認證,較麻煩;如果采用公鑰加密算法實現(xiàn),可以避免上述的麻煩,采用公鑰加密算法實現(xiàn)數(shù)字簽名和驗證過程如下:
1)發(fā)送方首先用公開的單向函數(shù)對報文進行一次變換,得到數(shù)字簽名,然后利用私有密鑰對數(shù)字簽名進行加密后附在報文之后一同發(fā)出。
2)接收方用發(fā)送方的公開密鑰對數(shù)字簽名進行解密交換,得到一個數(shù)字簽名的明文,發(fā)送方的公鑰可以由一個可信賴的技術管理機構(gòu)即認證中心(CA)發(fā)布,接收方將得到的明文通過單向函數(shù)進行計算,同樣得到一個數(shù)字簽名,再將兩個數(shù)字簽名進行對比,如果相同,則證明簽名有效,否則無效。
這種方法使任何擁有發(fā)送方公開密鑰的人都可以驗證數(shù)字簽名的正確性。
3 數(shù)據(jù)加密系統(tǒng)的設計與實現(xiàn)
3.1數(shù)據(jù)加密模塊的設計與實現(xiàn)
數(shù)據(jù)加密系統(tǒng)采用混合加密體制,充分利用了對稱密碼算法的加密速度快、加密強度高、對大量數(shù)據(jù)的高效的加解密;利用公鑰密碼算法加密強度高,密鑰便于管理,實現(xiàn)對明文的密鑰進行加密,以彌補傳統(tǒng)密碼算法中的密鑰不便于傳遞的缺點,兩者結(jié)合,以達到數(shù)據(jù)傳輸?shù)陌踩浴?/P>
3.1.1 3DES算法的設計與實現(xiàn)
雖然目前DES的應用范圍很廣且能方便地從公開渠道獲得,但是由于DES的密鑰長度只有56位,易于攻擊,加密強度已不能滿足現(xiàn)代安全需要,故使用兩個56位的密鑰混合加解密,密鑰長度達112位,加密強度大大增加,這就是3DES,3DES算法原理圖如圖1所示,其中的密鑰K1、K2隨機產(chǎn)生。
圖1 3DES算法原理圖
三重DES算法的實現(xiàn)主要包含兩個類:DES類和THREE類。
DES類的主要函數(shù):
3.1.2 RSA算法的設計與實現(xiàn)
RSA的安全性依賴于大數(shù)分解,公鑰和私鑰都是兩個大素數(shù)(大于100個十進制位)的函數(shù),RSA算法的實現(xiàn)主要包括密鑰的生成、加密數(shù)據(jù)、解密數(shù)據(jù),下面是RSA算法的實現(xiàn)過程:
1)定義變量:使用Java中的大數(shù)BigInteger()來定義p、q、n、e、d、t。
2)生成密鑰:使用public b∞lean gener—atePQNTED(String e)來生成密鑰。
3)加密過程:使用public String Encrypt(String msg,BigInteger pbkey,BigInteger n)完成,加密中用到了一個轉(zhuǎn)換函數(shù)copyBytes(),用它將要加密數(shù)據(jù)的字節(jié)數(shù)組進行分組。
4)解密過程:使用之前產(chǎn)生的私鑰d和公鑰n來對數(shù)據(jù)進行加密,將要解密的數(shù)據(jù)、私鑰d和公鑰n作為參數(shù)傳遞給加密函數(shù):public String Decrypt(String msg,BigIntegERPrikey,BigInteger n)
RSA必須基于大數(shù)運算,這樣算法的實現(xiàn)就要執(zhí)行大量的大數(shù)加、減、乘、除及模冪、模逆運算,這導致RSA實現(xiàn)效率相比于其他尤其是對稱密鑰算法(比如:DES)顯得十分低下,這種速度上的差異也是本文設計的系統(tǒng)中用RSA來交換生成的DES密鑰的原因。
3.2數(shù)字簽名的設計與實現(xiàn)
實現(xiàn)數(shù)字簽名,主要包括密鑰的生成、簽名的產(chǎn)生、簽名的核實和密鑰的管理的過程,可以使用Java中定義好的類創(chuàng)建RSA的公鑰和私鑰。
1)密鑰的生成:Java的KeyPair&nerator類提供了一些方法來創(chuàng)建密鑰對,以便用于非對稱加密,密鑰對創(chuàng)建好后封裝在KeyPair類型的對象中,在KeyPair類中提供了獲取公鑰和私鑰的方法。
2)使用SHA生成數(shù)字摘要:從得到的私鑰文件prikey.txt中,以此對文件中的信息進行簽名,簽名將保存在文件nleSSdig.rsa中.Javax.se—curity包中的MessageDigest類提供了產(chǎn)生數(shù)字摘要的方法。
3)使用RSA進行數(shù)字簽名:在進行了上述操作之后,將生成的數(shù)字摘要進行RSA簽名認證。
4)使用公鑰驗證數(shù)字簽名:當接收者接收到發(fā)送者發(fā)來的密文及其簽名meSsdig-rSa后,可以對其進行驗證,前提是接收者擁有發(fā)送者的公鑰,使用iN.txt和pubkey.txt對收到的密文及其簽名文件進行驗證,確保原文未被修改過,并且確實是發(fā)送者發(fā)來的。
Javax.security包中的Signature類除了用于簽名外,還可用于驗證數(shù)字簽名.Signature對象的initverfy()方法傳入公鑰,執(zhí)行其verify()方法,用其參數(shù)中的簽名信息驗證原始數(shù)據(jù)。
3.3數(shù)據(jù)加密系統(tǒng)的通信模型設計與實現(xiàn)
本系統(tǒng)采用3DES算法對明文信息加密,通過RSA算法傳送該算法的數(shù)據(jù)加密密鑰,并用SHA單向散列函數(shù)實現(xiàn)數(shù)字簽名,達到保密數(shù)據(jù)安全通信的要求,系統(tǒng)的保密通信模型如圖2所示。
圖2數(shù)據(jù)加密系統(tǒng)的通信模型
為了實現(xiàn)網(wǎng)絡通信系統(tǒng)中加密文件在網(wǎng)絡間的傳輸,本系統(tǒng)使用了windows Socket編程,在WindowS XP操作系統(tǒng)平臺之上,基于TCP/IP協(xié)議,使用Java中的Socket編程實現(xiàn)了文件傳輸,本系統(tǒng)的通信主界面如圖3所示。
圖3 數(shù)據(jù)加密系統(tǒng)的主界面
4 結(jié)論
本文設計的數(shù)據(jù)加密系統(tǒng),綜合利用了數(shù)據(jù)加密技術和數(shù)字簽名技術,既解決了密鑰管理問題,又保證了數(shù)據(jù)的完整性、不可否認性,同時給出了該系統(tǒng)網(wǎng)絡通信的界面設計和程序設計方法,本系統(tǒng)將幾種主要加密算法封裝成類,增強了代碼的簡潔性、高效性、可移植性、可擴展性,便于二次開發(fā)。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標題:數(shù)據(jù)加密系統(tǒng)的設計與實現(xiàn)
本文網(wǎng)址:http://www.oesoe.com/html/support/1112158459.html