RSA算法在藏文字符加密中的应用

2019-07-16 11:55李金合高定国孙改新
电子技术与软件工程 2019年8期
关键词:明文藏文私钥

李金合 高定国 孙改新

摘要:信息安全是人们非常关注的热点问题,对通用语言的字符加密是保证信息安全的重要手段之一。国内外非常注重信息加密的研究,但藏文等少数民族文字的信息加密尚待开垦。本文在分析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

猜你喜欢
明文藏文私钥
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
西藏大批珍贵藏文古籍实现“云阅读”
黑水城和额济纳出土藏文文献简介
一种基于虚拟私钥的OpenSSL与CSP交互方案
奇怪的处罚
藏文音节字的频次统计
现代语境下的藏文报刊