当前位置:文档之家› 数字签名

数字签名


仲裁数字签名
• 解决直接数字签名的问题,可在通信双方的基础上引入第 三方仲裁者的参与,过程如下: ① 从发送方到接收方的所有签名消息先送到仲裁者 ② 仲裁者将消息及其数字签名进行一系列测试,检查其内 容和来源 ③ 仲裁者将消息加上时间戳 ④ 仲裁者将已被验证通过的数字签名一起发送给接收方。
下面介绍几个具体的仲裁数字签名方案。 方案中,S表示发送方,R表示接收方,A是仲裁者,M是传 送的消息。
仲裁数字签名方案一
方案一:对称加密,仲裁者可以看到消息内容 具体过程如下: (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将消息解密后,结果保存 以备后用。
• 算法描述
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。
A收到S的消息,用S的公钥对ES的私钥[IDs||ER的公钥[ES的私钥[M]]] 进行解密,验证S的身份信息IDs。之后, A将S的身份IDs和 S对消息M的签名加上T,再用自己的私钥KRA进行签名后发 往R。
仲裁数字签名方案三
方案三的优点: ① 在方案执行以前,各方都不必有共享的信息,避免合谋 行为 ② 只要仲裁者的私钥不被泄露,任何人包括发送方就不能 重放消息 ③ 对任何第三方(包括A),S发往R的消息都是保密的。
直接进行数字签名
• 直接数字签名的几种形式 (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的私钥签名提供认 证。
手写签名和数字签名的对比
• 手写签名和数字签名的主要差别 ① 所签文件方面的不同。手写签名是文件的物理部分,而 数字签名不是,还要设法把签名“捆绑”到文件上。 ② 验证方面的不同。手写签名是通过与真实的手写签名比 较进行验证,手写签名容易伪造,不易鉴别。数字签名 通过密码技术实现,难以伪造,并通过一个公开的算法 进行验证,这样“任何人”都能验证数字签名。 ③ “复制”方面的不同。手写签名不易复制,复制后的签 名容易与原文件区别。相对而言,数字签名容易复制, 复制后与原文件一样。
6月5日交。
EIGamal数字签名方案
• EIGamal数字签名方案是T. EIGamal在1985年发表关 于EIGamal公开密钥密码时给出的两个方案之一 (另外一个用于加密)。 • EIGamal数字签名方案有很多变体,其中最重要的 有美国NIST于1991年公布的数字签名标准(DSS) 中使用的数字签名算法DSA。
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
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。
直接进行数字签名
直接数字签名的缺点 该方法的有效性依赖于发送方私钥的安全性: 发送方如果要抵赖签名,可能会声称其私钥丢失或被窃。 通常需要采用与私钥安全性相关的行政管理控制手段来制 止或至少是削弱这种情况,但威胁在某种程度上依然存在。 例如:可以要求被签名的信息包含一个时间戳(日期与时 间),以及要求将已泄密的密钥立即报告给管理中心。 但攻击依然存在,因时间戳也可以伪造。例如X的私钥在 时间T被窃取,攻击者可以伪造X的签名并附上时间T之前 的时间戳。
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一起发 送给接收方。
例如,接受者可以获得消息发送者的公钥,发送者 用自己的私钥对整个消息或者消息散列码进行签 名来形成数字签名。 特点: 仅涉及通信双方 有效性依赖发方密钥的安全性
直接进行数字签名
• 直接数字签名的几种形式 (1) A→B:EA的私钥[M] 提供了认证签名: 只有A具有私钥进行加密; 传输中无法被篡改; 任何第三方可以用A的公钥验证签名。
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对签名的验证。
数字签名
数字签名应用的一个实例
例:用户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后。
五元组{M,S,K,sig,ver}称为一个签名方案(算法)。
• 数字签名的一个实例(公钥密码算法签名):
数字签名的执行方式
数字签名的执行方式
数字签名的执行方式有两类: • 直接进行数字签名 • 利用仲裁的参与进行数字签名
直接进行数字签名
直接数字签名过程只有通信双方参与,并假定双 方有共享的秘密密钥,或者接收一方知道发送方 的公开密钥。
仲裁数字签名方案一
方案一的仲裁 仲裁者A起着关键作用,要求: ① 发送S必须确信仲裁A不会泄露他们的共享密钥。 ② 接收方R必须确信冲裁A只有在对发送方S的消息验证通过 后才发送给自己。 ③ 通信双方必须确信A能公平地解决争端。 只有遵循上述要求,签名才不能伪造和否认。 方案中消息以明文方式发送,未提供机密性保护。
仲裁数字签名方案二
方案二:对称加密,仲裁者不能看到消息内容 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。 如果发生争议,解决方法与方案一相同。
相关主题