基于证书的RSA签名系统的设计与实现
2011-05-22刘嘉勇
赵 新, 刘嘉勇
(四川大学 电子信息学院,四川 成都 610064)
0 引言
办公自动化OA(Office Automatization)从最初的以大规模采用复印机等办公设备为标志的初级阶段,发展到今天的以运用网络和计算机为标志的现阶段,对企业办公方式的改变和效率的提高起到了极大的促进作用。该系统采用了独立的RSA算法[1-2]确保了办公过程中公文流转的真实性和有效性。
1 RSA算法及数字证书
1.1 RSA算法[3]简介
(1)密钥的生成
密钥的生成过程:
①选择两个大素数p,q,(p,q为互异素数,需要保密);
②计算 n = p×q,ϕ(n)= (p-1)×(q-1);
③选择整数 e 使 (ϕ(n),e)=1, 1<e< ϕ(n);
④计算d,使d = e-1mod ϕ(n), 得到:公钥KU={e,n};私钥KR={d,n}。
(2)加密用(e,n)
加密用(e,n):明文:M < n,密文C = Me(mod n)。
(3)解密用(d,n)
解密用(d,n):密文C,明文M = Cd(mod n)。
1.2 数字证书
数字证书是一个经证书授权中心签名的包含公开密钥拥有者及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的签名。一般情况下证书还包含密钥的有效时间,发证机关,该证书的序列号等信息。
2 系统分析与设计
2.1 系统的工作原理
(1)签名过程
对要签名的文档,首先进行散列运算(SHA1或MD5)得到文档摘要,从证书中得到要签名的私钥,然后对获取到的散列值进行签名。
(2)验证过程
验证过程是签名过程的逆。当验收者收到签名文件时,首先用指明的散列函数对原始文件进行散列,然后导入签名者的公钥对签名值进行 RSA解密,最后对该解密值与散列值进行比较。
2.2 模块设计
软件系统主要有证书生成模块、摘要处理模块、签名模块和验证模块组成。
证书生成模块:负责提供签名所需的密钥,用两个 txt文件保存,一个用于保存公钥,一个用于保存私钥;
摘要处理模块:对要签名的文档生成散列的摘要,该系统提供生成 16个字节的 MD5算法,和生成 20个字节的SHA1算法;
签名模块:通过 RSA算法对对文档摘要进行签名,将签名后的结果以txt文档保存;
验证模块:用RSA算法对签名后的txt文档进行验证,并返回验证结果。
2.3 系统流程
系统具体流程如图1所示。
3 系统实现
据软件功能模块设计,系统定义了三个公共类:MDE5散列算法类(MD5_CTX)、哈希类(CHash)、RSA算法类(CRsa)。
系统中主要有的函数有:
Encrypt(char *OutFile,char *InFile,char *RsaKeyStr,char*RsaModStr):根据摘要生成签名;
Decrypt(char *InFile,char *RsaKeyStr,char *RsaModStr):根据签名还原出摘要;
OnSHA1Hash():对选定的文件进行SHA1算法;
OnMD5Hash():对选定的文件进行MD5运算。
4 安全性的分析
RSA算法所用的密钥来自生成的证书,当申请者填入相关信息后生成两个txt文件,一个存放私钥,一个存放公钥。其中私钥用口令加密了,保证了私钥的安全。公钥文件,进行了自签名,这样就保证了其完整性。密钥的管理也更加方便。
图1 系统流程
5 结语
这里系统经过测试系统具有良好的运行效率,引入了证书来保存相关的密钥信息。解决了以前的一些签名系统密钥的管理问题,并且满足了系统安全的基本要求。方便易用并具有一定的安全强度,有效防止了文件传输过程中的破坏和篡改。
[1]DONG XIAOLEI, QIAN HAIFENG, CAO ZHENFU. Provably Secure RSA Type Signature based on Conic Curve[J].Wireless Communications and Mobile Computing,2009(02):217-225.
[2]XU QIU-LIANG, CHEN TZER-SHYONG. An Efficient Threshold RSA Digital Signature Scheme[J].Applied Mathematics and Computation,2005(06):25-34.
[3]TANG SHAOHUA. Simple Secret Sharing and Threshold RSA Signature Schemes[J]. Journal of Information and Computational Science,2004(01):256-262.