ElGamal签名方案的分析与改进

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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]张少武,《安全认证理论与技术》。

相关文档
最新文档