基于RSA算法的动态双身份认证的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于 RSA 算法的动态双身份认证的设计与实现
摘要:针对网络通信中相互身份认证困难的问题,提出一种基于 RSA 算法的动态双身份认证方案,比其他基于公钥体制的身份认证方案相比,具有安全性更高、方便简洁、认证时间少等优点,并通过 VC++实现了基于该方案的系统
关键词:密码体制;RSA 算法;身份认证;公
1、RSA 加密算法及身份认证
目前网络通信主要提供五种安全服务,即身份认证服务、访问控制服务、机密性服务、完整性服务和抗否认性服务。
其中,身份认证作为安全应用系统的第一道防线,是最重要的安全服务,所有其它的安全服务都依赖于该服务,它的失败可能导致整个系统的失败
网络应用系统中通信双方的身份认证问题,传统的做法是采用用户名加口令来验证登录用户的身份,但是由于口令在使用过程中很容易被窃取、暴力攻击和猜测,存在较大的安全隐患;另外这种认证方式只能完成单方面的身份认证,即只能解决服务器验证客户端身份的问题,无法解决客户端验证服务器身份的问题,因此不能完全满足互联网业务应用的需要。
公钥加密算法的安全性主要是基于复杂的数学难题。
目前比较流行的主要有两类[2] :一类是基于大整数因子分解系统,以 RSA 为典型代表,它是目前被研究和应用得最为广泛的公钥算法,经过长年的攻击考验,该算法已被普遍认为是目前最优秀的公钥方案之一
2、RSA 工作原理[1]如下:
(1)任意选取两个不同的大质数 p 和 q,计算乘积 r=p*q
(2)任意选取一个大整数 e,e 与(p-1)*(q-1)互质,整数 e 用做加密密钥。
注意 e 的选
取是很容易的,例如所有大于 p 和q 的质数都可用.
(3)确定解密密钥 d,由d*e=1 mod((p-1)*(q-1)),根据 e,p 和q 可以容易地计算出 d
(4)公开整数 r 和 e,但是不公开 d
(5)将明文 P(假设 P 是一个小于 r 的整数)加密为密文 C,计算方法为 C=Pe mod r
(6)将密文 C 解密为明文 P,计算方法为 P=cd mod r
然而,只根据 r 和 e(不是 p 和 q)要计算出 d 是不可能的,因此,任何人都可对明文进行
加密,但只有授权用户(知道 d)才可对密文解密。
为了保证 RSA 的有效性,通常找两个非
常的大质数 p 和q
3、基于 RSA 双身份认证方案的设
为了实现信息的网络化管理,系统采用 结合 SQL Server2000 数据库的解决方案,即将用户数字证书等有关信息存放在 SQL Server 数据库中。
Windows2000 中包括一个完整的 PKI 系统,文献 [3]给出了具体的设计及部署的过程
3.1方案体系结
系统采用 B/S/D(Browser/Server)三层体系结构,即表示层(Browser)、功能层(Web Service)和数据服务层(DataBase Service); 通过 访问数据库。
对数据库的访问在 Web 服务器端完成,客户端通过浏览器访问 Web 服务器并运行其程序
3.2方案的实现过
3.2.1建立数字证
选取两个大素数 p 和q,并且两数的长度相等,以获取最大程度的安全性。
计算两数的乘积 n=p*q;随机选取加密密钥 d,为满足 ed=1 mod(p-1)(q-1),则d=e-1 mod((p-1)(q- 1)),d 和n 也互素;e 是公钥,d 是私钥,n 是公开的。
两个素数 p 和q 不再需要,可以
被舍弃,但决不能泄露。
假设生成了用户 A 的密钥对(eA,dA)和用户 B 的密钥对(eB,dB)。
用户将私钥 d 秘密保存,公钥 e 交给一个管理仲裁机构认证中心,获得自己的数字证书
,然后将数字证书保存在自己的机器上,同时认证中心将合法用户的数字证书保存在数据库中,以便用户查询。
用户当与网络上某个用户通信需要进行身份认证时,将自己的数字证书发送给通信的对方。
对方收到数字证书后,首先通过认证中心验证其合法性。
如果是合法的,就可以从证书中获得需要的用户公钥,然后利用该公钥验证对方的身份;如果不合法,就可以终止通信
3.2.2进行身份认
第一步:用户 A 对用户 B 的认
第二步:用户 B 对用户 A 的认
A 与
B 相互认证过程如图 1 所示:
图
3.3方案的实
3.3.1运行环境:硬件与网络环境:服务器能运行 Windows XP、Windows NT
4.0+Service Pack6 及以上操作系统,建议使用 586 或以上的计算机
系统软件:操作系统 Windows 2000、XP 及以上版本,SQL Server2000
运行环境:Microsoft Visual C++6.0,浏览器使用 IE5.5 及以上版本
3.3.2代码实现:在认证过程使用的加密和解密算法相同,已利用 VisualC++6.0 实现,另外签名和验证的算法也和加密算法相同,只是每次利用的秘钥不同,这也是利用 RSA 算法进行认证的优势
4、结
RSA 算法自公布以来经过 20 多年的发展和考验,除了其速度稍慢之外至今尚未找到其它的缺陷,因此 RSA 算法的应用越来越广泛。
本文设计的是一种基于 RSA,并通过 VC++实现了基于该方案的系统,有效解决了身份认证困难复杂的问题,对具有该加密的身份认证系统类需求的应用有一定的实用价值
参考文献
[1] 郭拯危,缪亮. 一种改进的 RSA 算法的研究与实现.河南大学学报,2006,36(1)
:98~9
[2]王建兵.PKI 数字证书在 WEB 系统中的安全应用.信息技术,2005,(1):40~4
[3]高蕾,郑建德.基于 PKI 的高校安全教务管理研究.厦门大学学报,2006,5 月:305~30
[4]Matrix Security.200
[5]吕丽平.一种组合加密算法的设计与实现.青岛科技大学硕士论文,200。