首页 理论教育 RSA签名方案优化

RSA签名方案优化

时间:2023-07-02 理论教育 版权反馈
【摘要】:RSA密码体制既可用于加密又可用于数字签名。RSA数字签名方案是现有签名方案中最容易理解和实现的签名方案,它的安全性依赖于大整数因子分解的困难性。 在RSA数字签名方案中,已知两个素数分别是p=5,q=17,取e=5,设待签名的消息为x=10时,计算签名y并验证签名的有效性。RSA数字签名的弱点表现在以下几个方面:1)任何人都可以伪造某签名者对于随机消息x的签名y。

RSA签名方案优化

1978年,Rivest、Shamir和Adleman联合提出了目前应用最广泛的RSA公钥密码体制。RSA密码体制既可用于加密又可用于数字签名。RSA数字签名方案是现有签名方案中最容易理解和实现的签名方案,它的安全性依赖于大整数因子分解的困难性。

1.RSA签名的生成与验证算法

(1)参数定义和密钥生成

●选两个大素数pq;(pq保密)

●计算n=p×qφn)=(p-1)×(q-1);(n公开,φn)保密)

●随机选一整数e,满足1<eφn),且gcd(φn),e)=1;(e公开)

●计算d,满足

d×e≡1(mod φn))

de在模φn)下的乘法逆元,因eφn)互素,由模运算可知,它的乘法逆元一定存在,(d保密)。则公钥为k1=(ne);私钥为k2=(pqd)。

(2)签名算法

设待签名的消息为xM,私有密钥dK,经过签名算法后得到y,且yA,即

(3)验证算法

签名接收者收到签名(yx)时,可用

验证签名是否有效。

若等式成立,则y是发送者对x的有效签名。由于y是用发送者使用他的私钥经过签名算法所得,别人做不出这样的签名,可有效防止发送者的抵赖行为。

【例6-1】 在RSA数字签名方案中,已知两个素数分别是p=5,q=17,取e=5,设待签名的消息为x=10时,计算签名y并验证签名的有效性。

【解析】 发送者A首先计算

n=p×q=5×17=85

φn)=(p-1)×(q-1)=4×16=64

e=5,满足

gcd(64,5)=1

得知公钥为(ne)=(85,5)

求出私钥d,满足

d×e≡1(mod φn))

de-1(mod φn))≡5-1(mod 64)≡13

由于待签名的消息x=10,计算签名得

yxd(mod n)≡1013(mod n)≡45(mod 85)

接收者B收到(45,10)后,验证

ye(mod n)≡455(mod n)≡10(mod 85)≡x

说明发送者A发过来的签名是真实有效的。

2.RSA签名方案的安全性

RSA数字签名方案的安全性依赖于n=p×q分解的困难性。密码分析者可以采用穷举攻击、数学攻击、计时攻击等手段来攻击和破解。签名方案的使用者,可以通过大密钥空间即增加ed的位数抵抗攻击,不过这样就会使密钥的产生、签名、验证过程的计算量增大,系统运行速度变慢。

RSA数字签名的弱点表现在以下几个方面:

1)任何人都可以伪造某签名者对于随机消息x的签名y。其方法是先选取y,用某签名者的公钥(ne),计算出xye(mod n),y就是某签名者对消息x的签名。(www.xing528.com)

2)若攻击者掌握某签名者对消息x1x2的签名y1y2,则攻击者可以伪造x1·x2,这是因为,(y1·y2e=ye1·ye2x1·x2(mod n)。

3)当对较长的消息采用分组链接结构时,需对每个分组分别进行签名,这样运算量就很大,而且对于分组的丢失也不敏感。

为了增强RSA数字签名方案的安全性,当对大容量消息签名前,发送者可使用一个安全的Hash函数h来产生消息摘要hx),再用签名算法计算签名

y=Sigkx)≡(hx))d(mod n

接收者收到签名后,在验证签名时,先计算hx),再检验等式

hx)≡ye(mod n

若等式成立,则y是发送者对x的有效签名;否则,签名无效。

3.签名和加密的组合

由于在RSA数字签名方案中,任何人都可以用发送者的公钥解出x,与原来的消息x进行比对,所以通常的做法是:不仅要认证签名,还要加密明文,不让合法接收者以外的其他人看到明文x,这就要进行双重“加密”。如发送者A给接收者B发送消息x,有以下两种方案。

(1)先加密再签名

发送者A先使用接收者B的公开加密函数EB加密得

z=EBx

A再用他的签名算法签名得

y=SigAz)=SigAEBx))

并将(zy)传送给B。

接收者B收到(zy)后,解密

x=DBz

再用验证算法验证

VerAzy)=TRUE

是否成立。

这种方案的不安全之处在于如果窃听者C收到(zy),它可以用自己的密文z′=EBx′)替代z,并对z′作自己的签名:SigCz′)=y′,再用y′代替y。而B收到(z′y′)后,可能会误解发送者是C,因为用C的公钥(eCn′)能够证明签名VerCz′y′)的有效性,从而相信了C发来的密文x′

(2)先签名再加密

对于消息x,发送者A先计算他的签名

y=SigAx

再使用接收者B的公开加密函数EB加密得

z=EBxy

A将z发送给B,B收到z后先解密

xy)=DBz

得到签名,再用验证算法进行验证

VerAxy)=TRUE

是否成立。

这种方案中,窃听者C即使收到z,也因无法知道A的私钥而不能获得更多有效的内容,所以相对于第(1)种方案来说这种方案要安全一些。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈