文档详情

7、第七讲-数字签名

命****币
实名认证
店铺
PPT
353KB
约74页
文档ID:112316905
7、第七讲-数字签名_第1页
1/74

计算机安全保密 第七讲 数字签名 武汉大学计算机学院 2 第七讲 数字签名 n数字签名的基本概念 n数字签名的模型 n基于公钥密码的数字签名方案 nPGP n盲签名 一、数字签名的基本概念 ①在人们的工作和生活中,许多事物的处理 需要当事者签名 ②签名起到确认、核准、生效和负责任等多 种作用 ③签名是证明当事者的身份和数据真实性的 一种信息 ④签名可以用不同的形式来表示 一、数字签名的基本概念 ⑤在传统的以书面文件为基础的事物处理 中,采用书面签名的形式: 手签、印章、手印等 ⑥书面签名得到司法部门的支持 ⑦在以计算机文件为基础的现代事物处理 中,应采用电子形式的签名,即数字签名 (Digital Signature) ⑧数字签名已得到我国司法部门的支持 一、数字签名的基本概念 ⑨一种完善的签名应满足以下三个条件: · 签名者事后不能抵赖自己的签名; · 任何其他人不能伪造签名; · 如果当事的双方关于签名的真伪发生争执 ,能够在公正的仲裁者面前通过验证签名 来确认其真伪 一、数字签名的基本概念 · ⑩数字签名基于密码技术,其形式是多种 多样的: · 通用签名、仲裁签名、不可否认签名、 盲签名、群签名、门限签名等。

· 1994年月美国政府正式颁布了美国数字 签名标准DSS(Digital Signature Standard) · 1995年我国也制定了自己的数字签名标 准(GB15851-1995) 数字签名(Digital Signature)可解决手写签 名中的签字人否认签字或其他人伪造签 字等问题因此,被广泛用于银行的信 用卡系统、电子商务系统、电子邮件以 及其他需要验证、核对信息真伪的系统 中 一、数字签名的基本概念 n手工签名是模拟的,因人而异,而数字签名数 字式的(0、1数字串),因信息而异 n数字签名的功能: ü收方能够确认发方的签名,但不能伪造; ü发方发出签过名的信息后,不能再否认; ü收方对收到的签名信息也不能否认; ü一旦收发方出现争执,仲裁者可有充足的证据 进行评判 一、数字签名的基本概念 二、数字签名的模型 · 一个数字签名体制包括两个方面的处理: 施加签名和验证签名 · 设施加签名的算法为SIG,产生签名的密 钥为K,被签名的数据为M,产生的签名 信息为S,则有 SIG (M,K)=S 二、数字签名的模型 · 设验证签名的算法为 VER ,用VER对签 名S进行验证,可鉴别 S的真假。

即 真,当S=SIG (M,K); 假,当S≠SIG (M,K) VERVER(( S S ,, K K ))== 二、数字签名的模型 · 签名函数必须满足以下条件,否则文件内 容及签名被篡改或冒充均无法发现: ① 当M’≠M时,有SIG (M’,K) ≠SIG (M,K) · 条件①要求签名S至少和被签名的数据M一样长 当M较长时,应用很不方便 · 将条件①改为:虽然当M’≠M时,存在S=S’, 但对于给定的M或S,要找出相应的M’在计算上 是不可能的 二、数字签名的模型 ② 签名 S 只能由签名者产生,否则别人便 可伪造,于是签名者也就可以抵赖 ③ 收信者可以验证签名S的真伪这使得当 签名S为假时收信者不致上当 ④ 签名者也应有办法鉴别收信者所出示的 签名是否是自己的签名这就给签名者以 自卫的能力 三、利用公钥密码实现数字签名 1、一般方法: · 如果E(D(M,Kd),Ke)=M,则可确 保数据的真实性 · 凡是能够确保数据的真实性的公开密钥密 码都可用来实现数字签名,例如RSA密码 、ELGamal密码、椭圆曲线密码等都可 以实现数字签名 三、利用公钥密码实现数字签名 1、一般方法: · 为了实现数字签名,应成立管理机构; 制定规章制度, 统一技术问题, 用户登记注册, 纠纷的仲裁等。

三、利用公钥密码实现数字签名 1、一般方法: · 签名通信协议: ① A用自己的解密钥 KdA对数据 M进行签名: SA =D(M,KdA) ②如果不需要保密,则 A直接将 SA 发送给用户B ③如果需要保密,则A查到B的公开的加密钥KeB , 并用 KeB 对 SA 再加密,得到密文C, C=E(SA ,KeB) ④最后,A把 C发送给 B,并将 SA或 C留底 三、利用公钥密码实现数字签名 ⑤B收到后,若是不保密通信,则先查到A的公开 加密钥KeA ,然后用KeA 对签名进行验证: E(SA,KeA)=E(D(M,KdA),KeA)=M ⑥若是保密通信,则B先用自己的保密的解密钥KdB 对C解密,然后再查到A的公开加密钥KeA ,用KeA 对签名进行验证: D(C,KdB)=D(E(SA,KeB),KdB)= SA E(SA,KeA)=E(D(M,KdA),KeA)=M 如果能够恢复出正确的M,则说明SA是A的签名, 否则SA不是A的签名 KdA KeA 签名验证 AB MSSM 直接方式的数字签名 一个典型的由公开密钥密码体制实现的、 带有加密功能的数字签名过程如下图 KdB 加密 (E) KeB 解密 (D) C 信道 签 名 验 证 KdA KeA AB MSSM n数字签名的主要方式是:报文的发送方 利用单向散列函数从报文文本中生成一 个128位的散列值(或信息摘要)。

发 送方用自己的私人密钥对这个散列值进 行加密来形成发送方的数字签名然后 ,该数字签名将作为报文的附件和报文 一起发送给报文的接收方 Hash函数辅助数字签名 n报文的接收方首先从接收到的原始报文 中计算出128位的散列值(或信息摘要), 接着再用发送方的公开密钥来对报文附 加的数字签名进行解密得到原散列值 如果这两个散列值相同,则接收方就能 确认该数字签名是发送方的通过数字 签名能够实现对原始报文的鉴别 Hash函数辅助数字签名 n只有加入数字签名及验证才能真正实现信 息在公开网络上的安全传输加入数字签 名和验证的文件传输过程如下(见下图) n发送方首先用Hash函数从原报文中得到 数字签名,然后采用公开密钥算法用自己 的私有密钥对数字签名进行加密,并把加 密后的数字签名附加在要发送的报文后面 ; 数字签名过程 单向函数 明文 信息 摘要 签名后的 信息摘要 密文 签名后的 信息摘要 用A的私 钥签名 发送方A 明文 信息 摘要 签名后的 信息摘要 密文 签名后的 信息摘要 用A的公 钥验证 接收方B 信息 摘要 单向函数 比 较 数字签名和验证过程 数字签名过程 n发送方选择一个会话密钥对原报文进行加 密,并把加密后的文件通过网络传输到接 收方;再用接收方的公开密钥对会话密钥 进行加密,并通过网络把加密后会话密钥 传输到接收方; n接受方使用自己的私有密钥对会话密钥信 息进行解密,得到会话密钥的明文; n接收方再用会话密钥对加密了的报文进行 解密,得到原报文; n接收方用发送方的公开密钥对加密的数 字签名进行解密,得到数字签名的明文 ; n接收方再用得到的原报文和Hash函数重 新计算数字签名,并与解密后的数字签 名进行对比。

如果两个数字签名是相同 的,说明文件在传输过程中没有被破坏 ,信息完整 三、利用公钥密码实现数字签名 1、一般方法: · 签名通信协议安全分析: ① 因为只有A才拥有KdA ,而且由公开的KeA 在计 算上不能求出保密的解密钥KdA 因此 签名的操作只有A才能进行,任何其他人都不能 进行所以,KdA 就相当于A的印章或指纹,而 SA 就是A对M的签名对此A不能抵赖,任何 其他人不能伪造 三、利用公钥密码实现数字签名 1、一般方法: · 签名通信协议安全分析: ② 事后如果A和B关于签名的真伪发生争 执,则他们应向公正的仲裁者出示留底 的签名数据,由仲裁者当众验证签名, 解决纠纷 三、利用公钥密码实现数字签名 1、一般方法: · 签名通信协议的问题: ①验证签名的过程就是恢复明文的过程而B事 先并不知道明文M,否则就用不着通信了那 末B怎样判定恢复出的M是否正确呢? ②怎样阻止B或A用A以前发给B的签名数据,或 用A发给其他人的签名数据来冒充当前A发给B 的签名数据呢? · 仅仅靠签名本身并不能解决这些问题 三、利用公钥密码实现数字签名 1、一般方法: · 解决问题的一种办法: ①合理设计明文的数据格式: M= ②记 其中 H= 。

于是,A以 为最终报文发给B ,其中H为明文形式 发方标识 收方标识 报文序号 时间 数据 纠错码 三、利用公钥密码实现数字签名 1、一般方法: · 解决问题的一种办法: ③只要用A的公钥验证签名并恢复出正确的附加 信息H=,便可断定明文M是否正确 ④设附加信息 H= 的二进制长度为 l ,则错判概率 pe≤2-l 三、利用公钥密码实现数字签名 1、一般方法: · 解决问题的另一种办法:对HASH(M)签 名,而不直接对M签名 M= S= SIG(HASH(M),KdA) 传输格式: 发方标识 收方标识 报文序号 时间 数据 HASH码 三、利用公钥密码实现数字签名 1、利用RSA密码实现数字签名: · 对于RSA密码 D(E(M))=(Me)d =Med =(Md)e =E(D(M)) mod n , 所以RSA可同时确保数据的秘密性和真实性 · 因此利用RSA密码可以同时实现数字签名 和数据加密 三、利用公钥密码实现数字签名 1、利用RSA密码实现数字签名: · 设M为明文,KeA =是A的公开钥, KdA =是A的保密的私钥, 则A对的M签名过程是, SA = D(M,KdA)= (M d )mod n SA 便是A对M的签名。

· 验证签名的过程是, E(SA ,KeA)=(M d )e mod n = M 三、利用公钥密码实现数字签名 2、对RSA数字签名的攻击 ①一般攻击: · 设e和n是用户A的公开密钥,所以任何人都可以 获得并使用e和n攻击者可随意选择一个数据Y ,并用A的公钥计算 X=(Y)e mod n · 因为 Y=(X)d mod n ,于是可以用Y伪造A的 签名因为Y是A对X的一个有效签名 · 注意:这样的 X 往往无正确语义! 三、利用公钥密码实现数字签名 2、对RSA数字签名的攻击 ②利用已有的签名进行攻击: · 攻击者选择随机数据 M3,且M3=M1M2 mod n · 攻击者设法让A对M1和M2签名: S1=(M1)d mod n , S2=(M2)d mod n · 于是可以由S1和S2计算出A对M3的签名因为 (S1S2)=(M1)d(M2)d mod n =(M3)d mod n = S3 · 对策:A不对数据M签名,而是对HASH(M)签名 三、利用公钥密码实现数字签名 2、对RSA数字签名的攻击 ③攻击签名获得明文: · 攻击者截获C,C=(M)e mod n · 攻击者选择小的随机数r,计算:x = re mod n y=xC mod n , t=r-1 mod n · 攻击者让A对y签名,于是攻击者又获得: S=yd mod n · 攻击者计算tS=r-1yd=r-1xdCd=Cd =M mod n · 对策:A不对数据M签名,而是对HASH(M)签名 。

三、利用公钥密码实现数字签名 2、对RSA数字签名的攻击 ④攻击先加密后签名: · 设A发给B的数据为,(M eB mod nB)dA mod nA · 设B不诚实,B知道nB的因子分解,所以B能找出 满足:(M1)x =M mod nB 的x . · 于是B宣布新公钥为xeB,这时B可以用M1抵赖M · 原因:(M1xeB mod nB)dA mod nA = (M eB mod nB)dA mod nA · 对策:A不对数据M签名,而是对HASH(M)签名 三、利用公钥密码实现数字签名 2、对RSA数字签名的攻击 结论: · 不对数据M签名,而是对HASH(M)签名 · 使用时间。

下载提示
相似文档
正为您匹配相似的精品文档
相关文档