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