
基于 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 双身份认证方案的设计