


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