ElGamal签名方案的分析与改进
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ElG
签名方案的分析与改进
【作者】:
姓名:李周洲 学号:5342010023
【内容摘要】
通过对ElGamal 签名方案的描述,分析出ElGamal 签名体制的不安全怕,并可以使用伪造攻击方法对其进行攻击,提出使用该体制的几种失败可能。对其进行了一些改进,提高其安全性。
【关键词】:ElGamal 体制 ;ElGamal 签名方案;安全性分析;伪造攻击
【正文】:
一、ElGamal 算法理论基础: (1)背景
ElGamal 签名体制是由 ElGamal 在1985年提出的。是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名其修正形式已被美国NIST 作为数字签名标准DSS,同时它又是Rabin 体制的一种变形。 (2)算法定义 ElGamal 签名方案像ElGamal 公钥密码体制一样是非确定性的,这就意味着对任何给定的消息,有许多个有效的签名,验证算法必须能接受合法的有效签名中的任何一个,其安全性依赖于计算有限域上离散对数这一难题。在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K 。
(3)密钥生成
系统选取大素数*
,p p g Z ∈一个本原元,p 和g 公开。用户随机选取整数
x , 12k p ≤≤-,计算m od x y g p =。y 是公开的密钥,x 是保密的密钥。
(4)签名变换
设*p
m Z ∈等签名的消息,用户秘密随机选取一个整数k ,12k p ≤≤-,且k 与1p -互素,对消息m 的签名为*1()(,)p p Sig m r s Z Z -=∈⨯,其中m o d k r g p =, 1()mod(1)k s m xr p -=--。
(5)签名验证
对于*1(,)p
p r s Z Z -∈⨯,如果r s xr ks m y r g g g ==,则确认(,)r s 为用户对消息m 的有效签名。
二、ElGamal 签名方案的安全性分析 假设攻击者在不知道x 的情况下企图伪造一个给定消息m 的签名。如果攻击者选择一个值r ,然后企图找到相应的s ,他必须计算离散对数.另外,他如果首先选择s ,然后企图找到r ,他就试图“解”一个未知数r 的方程,这又是一个已知的没有可行解法的问题,如果攻击者选择r 和s ,然后企图解出m ,他将再次面临离散对数问题。因此, 攻击者利用这种方式不能签名一个“随机”消息,然而该方案不能排除某些特定的攻击方法。
伪造攻击
攻击者同时选择r ,s 和m 来签名一个随机消息:设i 和j (1,2)i j p ≤≤-是整数,且j 与1p -互素。
可以利用逐步搜索法完成下列计算: mod i i r g y p =
1mod(1)s rj p -=-- 1
m o d (1)x r i j p -=-- 这里1j -是用模1p -来计算的(所以我们需要j 与1p -互素)。由于: 111(m o d )()(m o d )(m o d )r s x r r j x r i i r j x r r i j y r g r p g g y p g g p ------=== 11(mod )(mod )(mod )xr rij xr rij x g g g p g p g p -----===
所以这对伪造的(,,)r s m 通过验证,成为合法的签名。
条件伪造攻击
(1)假设在签名时泄漏了随机数k,由于: 11()mod(1)()mod(1)()mod(1)s m xr k
p sk m xr p x x sk r p --=--⇔=--⇔=--
此时计算x 是简单的,一旦x 已知了,这个体制将被攻破攻击者能任意伪造签名。
(2)攻击者得到对1x 签名为11(,)r s ,对2x 签名为22(,)r s ,则由:
1()mod(1)k s m xr p -=--可以得到k s m x r =-,因为m o d k r g p =,所以可以得到12,k k ,即可以得到二元一次方程组,求到x 和m ,并可以任意伪造签名。
三、方案改进 签名过程
对于待签字的消息m ,签名者执行以下步骤:
1):计算m 的杂凑值()h m 。
2):随机选取*R p
k Z ∈计算m od k r g p =。 3):计算[(())]mod(1)s x h m r k p =+--。
签名者以(,(,))m s r 作为产生的数字签名发送给验证者。 验证过程
当验证者接收到签名者发送的消息m 和数字签名(,)r s 后,进行验证:
1):先计算()h m
2):验证()mod h m r s y rg p +=,如果成立,则说明签名正确,否则不正确。
四、总结 该方案在技术上存在一些限制,从而导致一致的安全隐患,如:会话密钥 k 不能暴露给任何人,其值必须随机选取,而且必须确保在签名不同的信息时会话密钥没有重复使用过;必须避免选择到“弱随机数k ”等。为了避免遭受代换攻击,必须使用单向Hash 函数其安全性。1991年8月,经ElGamal 演变而来的基于DSA 的DSS 签名方案被提出。
【参考文献】
[1]张少武,《安全认证理论与技术》。