李金合 高定國 孫改新


摘要:信息安全是人們非常關注的熱點問題,對通用語言的字符加密是保證信息安全的重要手段之一。國內外非常注重信息加密的研究,但藏文等少數民族文字的信息加密尚待開墾。本文在分析RSA算法基本原理的基礎上,編程實現了RSA對藏文字符的加密,通過對藏文字符的加密與解密的測試,證明了RSA算法對藏文字符的適用性和正確性。
[關鍵詞]信息安全RSA算法藏文
1引言
加密技術由來已久,早在幾千年以前,人們便學會了用簡單的方法對信息進行加密。隨著時代的發展與科技的進步,在上世紀四十年代末香農發表了《保密系統的發展》后,信息安全學科得到了蓬勃發展,逐步形成了信息安全體系,并從最初的軍事、國防應用,延伸到生活的各個方面。因此,信息的保密性、完整性、可用性變得尤為重要,一旦國家或個人的信息遭到泄露,將會帶來嚴重的財產損失和安全隱患。據統計,全球每年因信息安全問題造成的經濟損失達幾十億美元,因此,信息安全保障體系的建設迫在眉睫,信息安全最核心問題是對信息的加密。
在目前最流行、最安全的公開密鑰加密算法中,最著名的當屬RSA加密算法。該算法是RonRivest、AdiShamir、LeonardAdleman三人于1977年聯合提出的,以大整數分解的難度保證其安全性,經受住了近幾十年的攻擊與分析。RSA算法的改進應用非常廣泛,在算法改進方面,提出了對素數構造及素性測試方法的改進和對算法自身步驟的改進兩個方面。在應用方面,首先許金玲在其碩士論文中提出了基于RSA和AES混合的加密系統,接著李寧在其碩士論文中提出了基于DES和RSA混合加密的安全傳輸系統,再趙贊也提出了RSA在FPGA(Filed-ProgrammableGateArray)動態重構系統安全方面的應用,還有二維碼的防偽技術等方面的應用。國內外對大語種的加密算法研究非常重視和廣泛,但藏文等少數民族語言的加密研究很少。只有2006年齊愛琴曾在碩士論文中提到的利用對稱加密和非對稱加密算法結合設計實現了一個藏漢文身份證信息系統和2007年普措才讓等人提出的基于藏文字符的置換加密算法。近十幾年對藏文字符的加密研究停滯不前,研究藏文字符的加密有很重要的意義。因此,本論文在分析RSA算法原理的基礎上,編程實現了RSA算法對藏文字符的加密。
2RSA算法的理論依據
公開密鑰加密算法起源于NP完全問題,其算法的安全性在于沒有一個確定的公式求解NP完全問題。RSA算法是第一個較完善的公開密鑰算法,其安全性得到了公認,并一直作為基礎算法供人們研究和使用。RSA算法運行過程主要分為四個部分:公鑰產生、私鑰產生、加密和解密。
2.1公鑰產生
首先隨機選取兩個長度相同、數值不同的大素數進行乘積運算得到公鑰n,目前一般采用1024位或2048位公鑰n以保證加密的安全性,然后利用歐拉定理三求得公式(1),再隨機選取加密密鑰e,使得滿足1 2.2私鑰產生 私鑰對由d和n組成,即(d,n)。。其中n為公共密鑰,在“公鑰產生”過程中求出,d則需要根據計算e對于φ(n)的模反元素,即利用歐幾里得算法(也稱輾轉相除法)進行求解。 2.3加密 加密時,根據“公鑰產生”過程求出的公鑰對(e,n),利用公式(2)對明文進行加密。 2.4解密 解密時,根據“私鑰產生”過程求出的私鑰對(d,n),利用公式3對密文進行解密。 基于,上述理論,加密和解密兩個階段實質上是一個互逆過程,利用公式(3)對密文進行解密就是對加密公式(2)的逆向推導,其合理性由公式(4)的推導進行了證明。 3RSA算法對藏文字符加密 3.1程序的總過程 RSA算法在編程實現時,主要分為兩部分:方法、主程序。方法包括獲取公鑰的方法、獲取私鑰的方法、公鑰加密的方法、私鑰解密的方法。為了適應計算機的局限性和保證編碼的正確性,還需要定義藏文字符編碼為“UTF-8”以及對數據分組。 在方法的實現中: (1)定義“UTF-8”編碼及“RSA”算法。(2)在獲取密鑰的方法中,先定義密鑰對的一個對象,并初始化密鑰長度,然后用KeyPair鍵對保持生成的密鑰對,再分別利用publicKey、privateKey的getEncoded()方法獲取公鑰和私鑰,再對得到的密鑰用Base64進行編碼后分別傳送給公鑰、私鑰字符串對象,最后用Hash編碼的HashMap集合實現Map接口。 (3)在獲取公鑰方法中,先對Base64編碼的公鑰進行解碼,再經X509編碼對公鑰進行規范,最后得到X509編碼的公鑰。 (4)在獲取私鑰的方法中,先對Base64編碼的私鑰進行解碼,再用PKCS8編碼對私鑰進行規范,最后得到PKCS8編碼的私鑰。 (5)在公鑰加密方法中,先用ENCRYPT_MODE初始化加密到加密模式的常數,然后調用分組加密方法對明文進行加密,并使用Base64編碼。 (6)在私鑰解密方法中,先用DECRYPT_MODE初始化解密到解密模式的常數,然后調用數據分組方法對Base64編碼的密文進行分組解密。 在主程序中,首先利用Map接口從密鑰工廠獲取1024位的公鑰n,然后利用keyMap.get方法分別獲取公鑰e和私鑰n,接下來需要從外部接收需要加密的明文,接收明文后利用公鑰加密方法對公鑰進行加密并形成密文,再對密文利用私鑰解密方法便可恢復出明文。 3.2加密 在加密過程中,首先需要接收到需要加密的明文,然后利用ENCRYPT_MODE對明文進行一個規范化處理,將明文的模式適合加密方法,然后將明文開始分組,再利用加密公式對明文分組進行加密,最后得到n個密文分組,再將密文分組連接起來,得到完整的密文,其加密流程圖如圖1。 3.3解密 在解密過程中,首先需要接收到加密的明文,然后利用DECRYPT_MODE對密文進行一個規范化處理,將密文的模式適合解密方法,然后將密文開始分組,再利用解密公式對密文分組進行解密,最后得到n個明文分組,再將明文分組連接起來,得到完整的明文,其解密流程圖如圖2。 4測試 本文在Windows10操作系統下的JDK1.8版本上利用Java語言對算法實現了編程,主要調用了Java內部的security包、io包、util包、crypto和外部阿帕奇的org.apache.commons.codec.binary.Base64、org.apache.commons.io.IOUtils的jar包。程序運行后,首先在console上打印公鑰和私鑰,然后開始輸入明文進行加密,加密后輸出密文并同時對密文進行解密輸出明文。 本次測試利用的藏文文本如圖3所示。以上藏文文本加密后的密文如圖4所示。程序對以,上密文進行解密后藏文明文如圖5所示。 經比較,加密前數據與解密后的數據完全一致,證明了RSA算法對藏文字符加密和解密的適用性和正確性。 5結束語 加密是信息安全的主要手段,而RSA是加密中性能和安全性都較好的算法。隨著信息技術的發展,RSA算法在各個方面廣泛應用,但沒有人應用在藏文字符等少數民族信息的加密中。本文實現了RSA算法對藏文字符的加密,希望以后有更多的先進加密算法應用到藏文等少數民族信息安全中,推動少數民族信息安全的研究。 參考文獻 [1]方關寶,信息安全[J].通信技術,1994(01):64-77. [2]AlfredJ.Menezes,PaulC.vanOorschot,ScottA.Vanstone著,胡磊等譯,應用密碼學手冊,[M].北京:電子工業出版社.2005. [3]趙陽,數據加密技術在計算機網絡安全中的應用價值研究[J].網絡安全技術與應用,2018(12):32-33. [4]周利榮,胡天磊。基于萊梅素數判定定理的安全素數構造算法[J].計算機工程與應用,2016,52(13):152-156+182. [5]李云飛,柳青,郝林,周保林。一種有效的RSA算法改進方案[J].計算機應用,2010,30(09):2393-2397. [6]許金玲。基于RSA與AES混合加密系統的算法研究[D].燕山大學,2006. [7]李寧,基于DES-RSA混合加密算法的安全傳輸系統設計和實現[D].國防科學技術大學,2007. [8]趙贊.RSA加密技術在FPGA動態重構系統安全方面的應用[D].大連理工大學,2013. [9]齊愛琴。基于加密技術的藏漢文身份證信息系統的設計與實現[D].蘭州大學,2006. [10]WilliamStallings著,王張宜等譯,密碼編碼學與網絡安全——原理與實踐[M].北京:電子工業出版社.2012:192. [11]普措才仁,夏吾才讓,藏文在通信網絡加秘技術中的應用[J].西北民族大學學報(自然科學版),2007(01):36-39. [12]MichaelWelschenbach著,杜瑞穎等譯,密碼學[M].北京:機械工業出版社,2016:241. [13]潘承洞,潘承彪.初等數論[M].北京:北京大學出版社,2013:144. [14]BruceSchneier.應用密碼學:協議、算法與C源程序[M].北京:機械工業出版社,2014:334