第十讲 数字签名.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3.2 RSA的乘法特性(续)
例 子 2(续) 假定攻击者想伪造消息m的签名。对n和m R(m) m 2t
m w应用扩展Euclidean算法。在每次应用扩展Euclidean算法时,
都会得到整数x,y,和r满足x n + y m r。从这里可以看出,在某
次可能存在y和r满足 | y | n/w和 r n/w的情况。如果y 0,构造整数
m2 r w 和 m3 y w。如果y 0,构造整数m2 r w和m3 y w。 在每种情况下,m2和m3都符合冗余的规则。如果可以从合法签名者 获得签名s2 m2d (mod n) 和s3 m3d (mod n),则攻击者可以计算对m的 签名如下:
如果 y 0,计算 s2 s3
在 211/p 56 到 (211 + 28 )/p 62之间任选择一个素数q。
q的可能选择为59和 61。如果选择q = 59,则 n 37 59 2183, 二进制表示为100010000111。如果选择q 61,则n 37 61 2257,二进制表示为100011010001。
1.4.1分块问题(续)
(3) (续) 对模 n的这一选择并不能完全解决不正确解 密问题,但是可使出现不正确解密情况的概率可以
忽略。假定nA是模并且s mdA (mod nA )是对消息m 的签名。进一步假定s在最高的k +1比特位中有一位 为1,而不是首位。由于s应该小于nA,s的最高必须 为0,因此,s小于一般形式模产生的结果。在s最高 的k +1比特位中首位为1的概率不超过(1/ 2)k。当k选 择100的时候,这一概率可以忽略。
1.3.2 RSA的乘法特性
RSA签名方案具有如下的乘法特性,有时候也称其为
同态特性。如果 s1 m1d (mod n) 和s2 m2d (mod n)分别 是对消息m1和 m2的签名,则s s1 s2 (mod n) 有特性 s (m1 m2 )d (mod n)。如果m m1 m2也具有正确的冗余 特性则s就是对消息m的合法签名。因此,冗余函数R 应该不具有乘法特性,也就是,对于基本上所有的对
1.1 算法描述(续)
评 述 .冗余函数R和它的逆函数R1公开选择产生。这个 冗余函数可以部分降低攻击者通过随机选择数字产生 合法签名的可能性。
签 名 认 证 正 确 性 证 明如. 果s是对消息m的一个签名,则 s m d (mod n),这里 m R(m)。由于e d 1(mod φ),se m ed m (mod n)。最终,R1(m) = R1(R(m)) m。
1.3 RSA 签名的可能攻击 1.3.1 整数分解
如果一个攻击者可以分解某个实体A的公开模n, 那么攻击者就可以计算φ,并进而使用扩展 Euclidean算法通过解同余式e d 1(mod φ)得到 秘密密钥d 。这一方法就完全使签名系统崩溃。 为了阻止这一攻击,A 必须选择p 和q使得分解n 在计算上不可能。
选择一个t/ 2比特的素数p,在 2t1 / p 到 2t1 + 2tk1 / p 区间
内找一个素数q,这样n p q 就具有需要的形式。 例 子 4假定希望找到一个12比特的模n,满足最高位为1接 下来连续k 3位为0。开始任意选择一个6比特的素数p 37。
数字签名有很多应用,包括:认证,数据
真实性,和不可否认。数字签名的一个非 常重要应用是在大规模网络上的公钥数字 证书。数字证书是可信第三方将用户身份 与其的公开密钥绑定的方法,在此之后, 其它实体认证公开密钥的时候都不需要可 信第三方的协助。
数字签名的概念和用途在实用数字签名技
术产生之前就为人们所认识。第一个数字 签名方法是RSA数字签名方案,它至今仍 然是最为实用数字签名技术。后续的研究 也给出非常丰富的各种数字签名方法。这 些技术常常在功能性和执行性方面提供了 相当大的改进。
1.1 算法描述(续)
算 法 2RSA签名产生和认证 摘要:实体A对一条消息m签名。任何实体B 可以验证 A的签名并从签名中恢复出消息m。 签 名 产 生 .A 做如下步骤: (1) 计算 m R(m),这里 m是区间[0,n 1]上的整数。 (2) 计算s m d (mod n)。 (3) s就是A对m的签名。 认 证 .为了认证A的签名s 并恢复出消息m,B 做如下步骤: (1) 得到A的真实公开密钥(n,e)。 (2) 计算 m se (mod n)。 (3)认证 m,如果非法,拒绝签名s。 (4) 恢复消息m = R1(m )。
m2d m3d
r y
w w
d
r y
d
m d (mod n);
如果y 0,计算 s2 s3
m2d (m3 )d
dBaidu Nhomakorabea
r y
w w
d
r y
m d (mod n)。
1.4 RSA 签名的执行 1.4.1 分块问题
1.4.2 短消息与长消息
由于签名和消息的规模相当,这在消息长的情 况下非常不利。为了解决这一问题,通常采用 hash函数。签名方案只作用于消息的hash函数 值,而不是消息的本身。在这种情况下,使用 冗余函数R保障签名方案安全就不再需要。
1.4.2 短消息与长消息 (续)
假定 n是RSA用于算 法 2的2 k比特的模,算法用于签名k比特 的消息。假定实体A期望签名k t比特的消息。一种办法就是将 消息分成k比特的分组m m1 || m2 |||| mt,然后分别对每一块 进行签名。这样产生的签名数据是2 k t比特。另一种办法是 A对消息m进行hash计算得到比特长度为l k 的hash值,再对 hash值签名。这样产生的签名数据是k t+2 k比特,这里k t是 原始消息的长度。由于在t 2时,k t+2 k 2 k t,最有效的 办法是使用RSA数字签名对hash值签名。而当消息的长度小于 k比特时,不使用hash的RSA数字签名更好。
1.4.1分块问题(续)
(2) 每个实体两个模。每个实体把用于签名的模和加密 的模分开。如果每个实体的签名的模都小于系统中所有 用来加密的模,则不正确解密的情况将不再会发生。这 种方法可以通过要求加密的模使用t +1比特的数,而签名 模使用t比特的数来实现。
1.4.1分块问题(续)
(3) 预先设定模的形式。这种方法是仔细选择素数p和q, 以使它们的乘积n 具有特殊的形式:最高位为1接下来的 连续 k位都是0。具有这种形式的t比特的模n可以这样产生。 对于n具有需要形式应该满足2t1 n 2t1 + 2tk1。随机
一种对RSA的常用方法是签名一条消息再对签名 结果加密。必须考虑在执行这一过程时两个模的 长度。假定A希望签名再加密一条消息给B。假定 (nA,eA ) 和(nB,eB )分别是A和B的公开密钥。如果 nA nB,则B有可能不能正确恢复出消息。
1.4.1分块问题(续)
例 子 3 令 nA 8387 7499 62894113,eA 5,和d A 37726937; 以及nB 55465219,eB 5,dB = 44360237。注意 nA nB. 假定消息 m 1368797符合冗余规则,先用A的秘密密钥签名再用B的公开 密钥加密。A 计算的过程为:
1.4.1分块问题(续)
有几种方法可以克服分块问题。 (1) 调换顺序。如果先做小模操作再做大模操作,不正 确解密的问题将不会出现。也就是说,如果nA nB,则 实体A应该先使用B的公开密钥加密消息,再用自己的 秘密密钥签名加密的消息。当然,最好的操作顺序通 常是先签名消息再加密签名,原因是如果A 先加密再 签名,攻击者可以移除该签名而换上自己的签名。虽 然攻击者并不知道具体签名的内容,这仍然是对攻击 者十分有利的情形。因此,调换顺序并不是最好的解 决方法。
1.4.3 签名产生和认证的执行特征
令n p q 是2 k比特的RSA模,这里 p和 q都是k比特的素数。 对消息m 计算一个签名s md (mod n),需要O(k 3)次比特操作。 如果认证操作选择小的公开指数,那么认证操作将明显快于
本讲提要
RSA签名方案 ElGamal族签名方案 生日攻击
1 RSA数字签名方案
1.1 算法描述
算 法 1 RSA数字签名方案的密钥产生 摘要:每个实体产生一个RSA公开密钥和对应的秘密密钥。 每个实体A做如下步骤: (1) 产生两个大的不同随机素数p和q,两个素数规模大约相 同。 (2) 计算n p q和φ ( p 1)(q 1)。 (3) 选择一个随机整数e,1 e φ,满足(e,φ) 1。 (4) 使用扩展Euclidean算法计算唯一一个整数d,1 d φ, 满足e d 1(modφ)。 (5) A的公开密钥是(n,e);A的秘密密钥是d。
a,b,R(a b) R(a) R(b)。对R的这一条件是必须的, 但满足这一条件并不一定就是安全的。
1.3.2 RSA的乘法特性(续) 例 子 2令 n为 RSA的模,d为秘密密钥。令k log2n
是n的比特长度,并且令t 是一个固定长度的正整数, 满足t k/2。令w 2t 并令消息m为在区间[1,n 2t 1] 上的整数。冗余函数定义为R(m) = m 2t (R(m)的二进 制表示的最末t比特全为0)。在绝大多数的模n下,R 将都不具有乘法特性。
(1) s mdA (mod nA ) 136879737726937 (mod 62894113) 59847900。 (2) c seB (mod nB ) 598479005 (mod55465219) 38842235。 为了恢复消息并认证签名,B 做如下计算:
(1) sˆ cdB (mod nB ) 3884223544360237 (mod55465219) 4382681。 (2) mˆ sˆeA (mod nA ) 43826815 (mod 62894113) 54383568。 注意m mˆ 。发生这个问题的原因是s大于nB。
1.2 例子
例子1 密 钥 产 生 .实体A选择素数p 7927,q 6997,并且计算 n p q 55465219和φ = 7926 6996 55450296。A 选择 e 5 并且解e d 5 d 1(mod55450296),得到d 44360237。A的公开密钥是(n 55465219,e 5);A的秘密 密钥是 d 44360237。 签 名 产 生 .为了简单,假设冗余函数R是一个单位映射 R(m) m。为了签名消息m 31229978,A 计算m R(m) 31229978,并且计算签名s m d (mod n ) 3122997844360237 (mod55465219) 30729435。 签 名 认 证 .B计算m se (mod n ) 307294355 (mod55465219) 31229978。最终,由于m 符合冗余函数要求,B 接受签名并 可以恢复消息m R1(m ) 31229978。
第十讲 数字签名
这一讲考虑设计用于模拟手写签名的数字签
名技术。一条消息的数字签名是一个依赖于 仅签名者知晓的秘密而产生的数字,并需附 加被签名的消息。数字签名必须可以被验证: 如果任何一方对文件的签名的真实性产生争 议(导致的原因可能是不诚实的签名者想否认 自己产生的签名,或者是认证者提出欺诈的 权利要求),一个公正的第三方就可以公平的 解决这一问题,而不需要获得签名者的秘密 (秘密密钥)。