数字签名
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直接进行数字签名
直接数字签名的缺点 该方法的有效性依赖于发送方私钥的安全性: 发送方如果要抵赖签名,可能会声称其私钥丢失或被窃。 通常需要采用与私钥安全性相关的行政管理控制手段来制 止或至少是削弱这种情况,但威胁在某种程度上依然存在。 例如:可以要求被签名的信息包含一个时间戳(日期与时 间),以及要求将已泄密的密钥立即报告给管理中心。 但攻击依然存在,因时间戳也可以伪造。例如X的私钥在 时间T被窃取,攻击者可以伪造X的签名并附上时间T之前 的时间戳。
RSA数字签名方案
• 基本算法如下: 3.签名验证过程 假设用户B要验证用户A对消息M的签名,用户计算 M’=SAe mod n 其中e为公钥,通过判断M与M’是否相等来确认签名是否确是 A所产生,如果不是,拒绝该签名消息。
RSA数字签名方案
• 关于签名方案的几个问题: ① 方案对整个消息签名,因RSA速度比较慢,当消息比较长 时,签名与验证过程也比较慢。 ② 可先对消息进行散列计算,在对散列值进行签名以提高 速度。 ③ 安全性基于RSA算法自身的安全性,因d私钥,签名不可 伪造 ④ 如果消息M1和M2的签名分别是S1和S2,可以证明 Sig(M1M2)=Sig(M1) Sig(M2),则只要知道M1,M2,S1,S2,就可 伪造M1M2(乘积)的签名S1S2。
EIGamal数字签名方案
• 例,设素数p=11,a=2是Z11*上的本原根,用户A选择私钥x=8, 消息M的散列码H(M)=5,用户A选择的签名随机数k=9,计 算A用EIGamal数字签名算法对消息M的签名以及用户B对 签名的验证。 (1)用户A计算公钥y。 y=ax mod p=28 mod 11=3,并把公钥y=3公开。 (2)用户A计算消息M的签名。 因k=9,φ(11)=10,gcd(9,10)=1,所以9模10的逆存在,利用欧几 里得算法计算: k-1 mod (p-1)=9-1 mod 10=9。 用户A计算: r=ak mod p=29 mod 11=6; s=(H(M)-xr)k-1 mod (p-1)=(5-8×6)×9 mod 10=3
仲裁数字签名方案二
方案二对消息M提供了保密性,但是与方案一仍存在相同 的问题如下: (1)A和S可以合谋来否认曾经发送过某个消息。 (2)A和R也可以合谋来伪造S的签名。 采用基于公钥密码体制的签名方案可解决这一问题。
仲裁数字签名方案三
方案三:公钥加密,仲裁者不能看到消息内容 过程如下: (1)S→A:IDs||ES的私钥[IDs||ER的公钥[ES的私钥[M]]] S用私钥对M加密实现签名,用R的公钥加密实现机密性,任 何第三方,包括A都不知消息的内容。 (2)A→R:EA的私钥[IDs||ER的公钥[ES的私钥[M]]||T]
直接进行数字签名
• 直接数字签名的几种形式 (2) A→B:M||EA的私钥[H(M)] 提供了认证签名: H(M) 受到密码算法的保护; 只有 A 能够生成 EA的私钥[H(M)]。
直接进行数字签名
• 直接数字签名的几种形式 (3) A→B:EB的公钥[EA的私钥(M)] B的公钥加密提供了保密性、A的私钥签名提供认证 (4) A→B:EK[M||EA的私钥[H(M)]] 密钥K对称加密提供了保密性、 A的私钥签名提供认 证。
例如,接受者可以获得消息发送者的公钥,发送者 用自己的私钥对整个消息或者消息散列码进行签 名来形成数字签名。 特点: 仅涉及通信双方 有效性依赖发方密钥的安全性
直接进行数字签名
• 直接数字签名的几种形式 (1) A→B:EA的私钥[M] 提供了认证签名: 只有A具有私钥进行加密; 传输中无法被篡改; 任何第三方可以用A的公钥验证签名。
仲裁数字签名方案一
方案一:对称加密,仲裁者可以看到消息内容 具体过程如下: (1)S→A:M||ES与A的对称密钥[IDs||H(M)] 其中,IDs是S的身份标识。S以ES与A的对称密钥[IDs||H(M)]作为对M 的签名,将M及签名发往A。 (2)A→R:EA与R的对称密钥[IDs||M||ES与A的对称密钥[IDs||H(M)]||T] A对ES与A的对称密钥[IDs||H(M)]解密后验证S的签名,验证完后加上 IDs、时间戳T一起加密后发往R。R将消息解密后,结果保存 以备后用。
数字签名
数字签名应用的一个实例
例:用户A通过网络发送一条消息,要求银行从用户 A的账户上给用户B支付5000元。 ① 银行如何确认消息确是A发送的(身份认证)? ② 事后,如果A否认发送过该消息,如何认证? (消息认证-抗抵赖) ③ A否认要求银行支付的是5000元,而说是1000元, 银行如何确认?(消息认证-抗抵赖) ④ 银行如何向公证机关提供证据? 以上问题可通过一种安全机制——数字签名实现。
基于公钥密码体制的 典型数字签名方案
RSA数字签名方案
RSA数字签名方案在许多安全标准中得到广泛应用。 ISO/IEC9796和ANSI X9.30-199x以及美国联邦信息 处理标准FIPS 186-2将RSA作为推荐的数字签名标 准算法之一。
RSA数字签名方案
• 基本算法如下: 1.系统初始化过程 ① 产生两个大素数p,q,计算n=pq; ② 随机选取一个与φ(n)互素的整数e作为公钥,私钥d满足 ed=1 mod φ(n)。 用户A公开公钥e,n,保密d,p和q。 2.签名产生过程 用户A对消息M∈Zn进行签名,计算 SA=Sig(M)=Md mod n 并将SA附在消息M后。
仲裁数字签名方案一
方案一的仲裁 仲裁者A起着关键作用,要求: ① 发送S必须确信仲裁A不会泄露他们的共享密钥。 ② 接收方R必须确信冲裁A只有在对发送方S的消息验证通过 后才发送给自己。 ③ 通信双方必须确信A能公平地解决争端。 只有遵循上述要求,签名才不能伪造和否认。 方案中消息以明文方式发送,未提供机密性保护。
五元组{M,S,K,sig,ver}称为一个签名方案(算法)。
• 数字签名的一个实例(公钥密码算法签名):
数字签名的执行方式
数字签名的执行方式
数字签名的执行方式有两类: • 直接进行数字签名 • 利用仲裁的参与进行数字签名
直接进行数字签名
直接数字签名过程只有通信双方参与,并假定双 方有共享的秘密密钥,或者接收一方知道发送方 的公开密钥。
仲裁数字签名方案一
方案一的仲裁 ① 如果出现争议,R可声称自己收到的M的确来自S,并将 EA与R的对称密钥[IDs||M||ES与A的对称密钥[IDs||H(M)]||T]发给A, 由A仲裁。 ② A对EA与R的对称密钥[IDs||M||ES与A的对称密钥[IDs||H(M)]||T]解 密,再对ES与A的对称密钥[IDs||H(M)]进行解密,并通过H(M) 和IDs来判断是不是S的签名。
仲裁数字签名方案二
方案二:对称加密,仲裁者不能看到消息内容 S与A、R与A有共享密钥,S与R之间也有共享密钥。过程如下 (1)S→A:IDs|| EKSR[M] ||EKSA[IDs||H(EKSR[M])] S把EKSA[IDs||H(EKSR[M])]作为签名和M的加密一起发送给A。 (2)A→R:EKAR[IDs||EKSR[M]||EKSA[IDs||H(EKSR[M])]||T] A对EKSA[IDs||H(EKSR[M])]解密后验证S的签名(A始终不见明文 M)。A验证完后,加上时间戳T,再用KAR加密后发往R。 如果发生争议,解决方法与方案一相同。
• 算法描述
EIGamal数字签名方案
• 对EIGamal数字签名算法的正确性进行验证 定理1:若(r,s)为合法用户采用EIGamal数字签名算法对消息M 进行的签名,则有yrrs=aH(M) mod p。 证明 由于yrrs=(ax)r(ak)s=axraks=axr+ks mod p;又由 s=(H(M)-xr)k-1 mod (p-1); 所以有 sk+xr=H(M) mod (p-1); 由模运算的性质(xy=x(y mod φ(p)) mod p,其中φ(p)=p-1)有: axr+ks=aH(M) mod p 所以有 yrrs=aH(M) mod p。 验证算法表述如下: Ver(M,(r,s))=(yrrs mod p=aH(M) mod p)? True: false。
RSA数字签名方案
• 关于签名方案的几个问题: ⑤ 公钥e公开,则针对某个Y ∈Zn ,计算得M=Ye mod n,可 声称Y是用户A对M的签名,因sig(M)=Md=(Ye)d=Y mod n。 此种情况实际威胁小,因M不是任意的。
• 作业: 设用户A的公钥为(NA=33,eA=17),用户 B的公钥为(NB=55,eB=23),用户A应用 RSA算法向用户B传送消息M=10时,求A发 送的带签名的信息以及用户B对签名的验证。
EIGamal数字签名wenku.baidu.com案
• 算法描述 1.系统初始化 对系统公共参数和用户的密钥进行设置。 (1)系统公共参数 选择大素数p,使得Zp中的离散对数问题为困难问题; 选择Zp*上的一个本原根a (2)用户选择密钥 每个用户选择一个随机数x,且1≤x<p-1,计算y=ax mod p。 x作为私钥用于签名,y作为公钥用于验证。 公开p、a、y,保密私钥x。
仲裁数字签名
• 解决直接数字签名的问题,可在通信双方的基础上引入第 三方仲裁者的参与,过程如下: ① 从发送方到接收方的所有签名消息先送到仲裁者 ② 仲裁者将消息及其数字签名进行一系列测试,检查其内 容和来源 ③ 仲裁者将消息加上时间戳 ④ 仲裁者将已被验证通过的数字签名一起发送给接收方。
下面介绍几个具体的仲裁数字签名方案。 方案中,S表示发送方,R表示接收方,A是仲裁者,M是传 送的消息。
手写签名和数字签名的对比
• 手写签名和数字签名的主要差别 ① 所签文件方面的不同。手写签名是文件的物理部分,而 数字签名不是,还要设法把签名“捆绑”到文件上。 ② 验证方面的不同。手写签名是通过与真实的手写签名比 较进行验证,手写签名容易伪造,不易鉴别。数字签名 通过密码技术实现,难以伪造,并通过一个公开的算法 进行验证,这样“任何人”都能验证数字签名。 ③ “复制”方面的不同。手写签名不易复制,复制后的签 名容易与原文件区别。相对而言,数字签名容易复制, 复制后与原文件一样。
6月5日交。
EIGamal数字签名方案
• EIGamal数字签名方案是T. EIGamal在1985年发表关 于EIGamal公开密钥密码时给出的两个方案之一 (另外一个用于加密)。 • EIGamal数字签名方案有很多变体,其中最重要的 有美国NIST于1991年公布的数字签名标准(DSS) 中使用的数字签名算法DSA。
EIGamal数字签名方案
• 算法描述 3.验证签名过程 接收方B在收到消息M与签名(r,s)后进行验证。 (1)计算消息M的散列码H(M); (2)计算yrrs mod p和aH(M) mod p; 其中y为签名方A的公钥。若yrrs≡aH(M) mod p,则确认签名有 效,否则签名无效。
EIGamal数字签名方案
EIGamal数字签名方案
• 算法描述 2.签名过程 (1)选择与p-1互素的随机数k,k∈Zp*; (2)签名方先对消息M进行散列压缩得到散列码H(M),并 计算 r=ak mod p s=(H(M)-xr)k-1 mod (p-1) 其中x为私钥。 (3)用户A将(r,s)作为对消息M的数字签名,与消息M一起发 送给接收方。
数字签名方案的构成
由两部分组成:带有陷门的数字签名算法和验证算法。 设M是消息的有限集合,S是签名的有限集合,K是密钥的有 限集合: 数字签名算法是一个映射 sig:M×K→S,s=sigk(m) 验证算法也是一个映射 ver:M×S→{True,False}
True, s sig k m verm, s False, s sig k m
A收到S的消息,用S的公钥对ES的私钥[IDs||ER的公钥[ES的私钥[M]]] 进行解密,验证S的身份信息IDs。之后, A将S的身份IDs和 S对消息M的签名加上T,再用自己的私钥KRA进行签名后发 往R。
仲裁数字签名方案三
方案三的优点: ① 在方案执行以前,各方都不必有共享的信息,避免合谋 行为 ② 只要仲裁者的私钥不被泄露,任何人包括发送方就不能 重放消息 ③ 对任何第三方(包括A),S发往R的消息都是保密的。