数字签名技术与应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈希函数·
1.什么是哈希函数
哈希(Hash)函数在中文中有很多译名,有些 人根据Hash的英文原意译为“散列函数”或 “杂凑函数”,有些人干脆把它音译为“哈希函 数”,还有些人根据Hash函数的功能译为“压 缩函数”、“消息摘要函数”、“指纹函数”、 “单向散列函数”等等。
Hash算法是把任意长度的输入数据经过算法压 缩,输出一个尺寸小了很多的固定长度的数据, 即哈希值。哈希值也称为输入数据的数字指纹 (Digital Fingerprint)或消息摘要(Message Digest)等。 Hash函数具备以下的性质: 1给定输入数据,很容易计算出它的哈希值; 2反过来,给定哈希值,倒推出输入数据则很难, 计算上不可行。这就是哈希函数的单向性,在 技术上称为抗原像攻击性;
解答:哈希函数+数字签名
黄裳用哈希算法生成九阴真经的摘要,用自己 的私钥加密摘要 把加密的摘要和九阴真经(明文)发给我 用黄裳的公钥解密摘要,恢复摘要 对收到九阴真经采用相同算法创建一个新摘要 比较两个摘要: 如果摘要匹配,发送者是作者;明文在发送过 程中没有被改动。
数字签名及验证过程
发信者在发信前使用哈希算法求出待发信息的 数字摘要,然后用私钥对这个数字摘要,而不 是待发信息本身,进行加密而形成一段信息, 这段信息称为数字签名。 发信时将这个数字签名信息附在待发信息后面, 一起发送过去。 收信者收到信息后,一方面用发信者的公钥对 数字签名解密,得到一个摘要H;另一方面把收 到的信息本身用哈希算法求出另一个摘要H’, 再把H和H’相比较,看看两者是否相同。
4.3ElGamal签名
2.签名过程 给定消息M,发送端用户进行下述工作 (1)选择秘密随机数 k属于Z; k r g mod p (2)计算压缩值H(M),并计算
s ( H (M ) xr)k 1 mod(p 1)
(3)将 Sig( M , k ) =(M,r,s)作为签名, 将(M,r,s)
4.2RSA签名
安全参数:令n=qp,p和q是大素数,选e并计 算出d,使 ed 1mod(p 1)(q 1) ,公开n和e,将p、 q和d保密。则所有的RSA参数 为 K (n, p, q, e, d ) 。 数字签名:对消息M属于Z,定义 对M的签名: S Sig(M ) M d modn 签名验证:对给定的M,S可按下式验证: 设 M ' S e modn ,如果M’=M,则签名为真, 否则,不接受签名。
4.2RSA签名
RSA是是完整的加密系统,它支持公钥/私钥对 的生成、加密以及数字签名。 Carol为了机密消息以发送给Bob,Bob首先生 成一个密钥对,并和Carol共享公钥。 公钥由两个数字组成:模数n和公共指数e。私 钥也由两个数字组成:相同的模数n和私有指数 d。 通过随机选择两个大的质数p和q,并把他们一 起相乘,就可以创建模数。
数字签名与加密的区别
消息签名与消息加密有所不同,消息加密和解 密可能是一次性的,它要求在解密之前是安全 的。 而一个签名的消息可能作为一个法律上的文件 (如合同等),很可能在对消息签署多年之后才验 证其签名,且可能需要多次验征此签名。 因此,签名的安全性和防伪造的要求会更高, 且要求证实速度比签名速度要快些。特别是联 机在线时进行实时验证。
政治、军事、外交等领域的文件、命令和条 约,商业中的契约,以及个人之间的书信等, 传统上都采用手书签名或印章,以便在法律上 能认证、核准和生效。随着计算机通信网的发 展,人们希望通过电子设备实现快速、远距离 的交易,数字(或电子)签名法便应运而生, 并开始用于商业通信系统,如电子邮递、电子 转账和办公自动化等系统中。
4.2RSA签名
第一步Bob选择大的质数p和q,并使他们相乘, 从而得到n; 第二步Bob选择一个公共质数e,它与(p-1)(q-1) 是互质数; 第三步Bob计算私有质数d=e-1 mod [(p-1) (q-1)]; 第四步Bob与Carol共享公钥,数字n和e; 第五步Bob使用C=Me mod n把M加密成C,并 把C发送给Bob; 第六步Bob使用M=Cd mod n把C解密成M
根据哈希函数的特性,我们可以让简短的摘要 来“代表”信息本身,如果两个摘要H和H’完全 符合,证明信息是完整的;如果不符合,就说 明信息被人篡改了。 哈希函数的安全性直接关系到数字签名的安全 性,如果哈希函数被攻破,数字签名的有效性 就会受到质疑。 目前,已经发明的Hash函数有多种,如Snefru、 N-Hash、LOKI、AR、GOST、MD、SHA等。 它们在数学上实现的方法各有不同,安全性也 各有不同。目前比较常用的Hash函数是MD5和 SHA-1。
4.3ElGamal签名
该体制由T.ElGamal在1985年给出。其修正形 式已被美国NIST作为数字签名标准(DSS), 它是Rabin体制的一种变型。 此体制专门为签名用而设计,方案的安全性基 于求离散对数的困难性。 可以看出,它是一种非确定性的双钥体制,即 对同一明文消息,由于随机参数选择的不同而 有不同的签名。
但是,任何一种算法都有其漏洞和局限性。 任何一个哈希函数都会存在碰撞——即在一些 特定情况下,两个不同的文件或信息会指向同 一个数字摘要。在一般情况下,类似碰撞只能 尽可能地减少,而不能完全避免。从理论上讲, 没有攻不破的密码。随着密码科学的发展,也 许会找到攻破某一种密码算法的途径。
数字签名的产生
数字签名的引入---网络传经
我要接受来自黄裳的九阴真经 安全的要求:
我能确保经文来自黄裳 我能确保经文在因特网上传输 没有别人能够看到经文,因为那是发送给我 的,这样就防止了经文被窃 黄裳事后不能否认发送了经文给我
发送过程
把九阴真经发给我
解决方法
发信息的人用自己的私钥对所发信息进行 加密( Encryption ) 接收信息者用发信者的公钥来解密 ( Decryption ) 可以保证信息的真实性、完整性和不可否 认性。
6.2RSA签名
现在Bob的公钥就是数对(3,55),其私钥就是数 对(27,55)。Bob把自己的公钥发送给Carol。 Carol的消息M=25。它把该消息加密成密文 C=25的3次幂mod55=15625mod55=5。Carol 把结果发送给Bob。 Bob使用M=5的27次幂 mod55=7450580596923828125mod55=25对 密文进行解密,这就是Carol的原始消息。
4、给定哈希值,想要找出能够产生同样的哈希 值的两个不同的输入数据,(这种情况称为碰撞, Collision),这很难,计算上不可行,在技术上 称为抗碰撞攻击性; 5、哈希值不表达任何关于输入数据的信息。
哈希函数用于消息验证
密码学中使用的哈希算法都被设计为具有某些 特殊的性质: 你无法反向执行哈希算法来恢复出哪怕是一 点儿最初的明文。 得到的摘要不会告诉你任何关于最初明文的 信息。 创建/发现哈希值为某个特定值的明文,这 在计算上是不可行的。 这使得攻击者无法在替换文件的同时确保哈 希值仍然匹配。
4.2RSA签名
所选择的指数e必须与(p-1)和(q-1)互质(也 就是说,e与(p-1)和(q-1)这个数必须不具有 相同的因数。 质数d必须满足等式d*emod[(p-1)(q-1)]=1。 然后,如果Carol的明文是M,那么,他就能够 通过计算C=Me mod n把它加密成密文C。 Bob通过计算M=Cd mod n就可以恢复明文。
6.3ElGamal签名
3.验证过程 收信人收到(M,r,s),先计算H (M),并按下式验证签名 y r r s g H ( M ) mod p 这是因为 y r r s g rx g sk g (rs sk ) mod p ,由上式 有 (rx sk ) H (M ) mod(p 1) r s H (M ) y r g mod p 故有 在此方案中,对同一消息M,由于随机数 K不同而有不同的签名(M,r,s)。
4.3ElGamal签名
1.体制参数 P:一个大素数,可使Zp,中求解离散对数为 困难问题; g:是Zp中乘群Zpn的一个生成元或本原元素; M消息空间为为Zp*Zp-1; X:用户密钥,X属于Z,公钥为y=g x mod p 安全参数为:k=(p,g,x,y),其中p,g,y为 公钥,x为秘密钥。
数字签名与手书签名的区别
数字签名与手书签名的区别在于,手书签名是 模拟的,且因人而异。数字签名是0和1的数字 串,因消息而异。 数字签名与消息认证的区别在于,消息认证使 收方能验证消息发送者及所发消息内容是否被 纂改过。 当收发者之间没有利害冲突时,这对于防止第 三者的破坏来说是足够了。 但当收者和发者之间有利害冲突时,单纯用消 息认证技术就无法解决他们之间的纠纷,此时 须借助满足前述要求的数字签名技术
问题还没解决
要发的信息可能很长,非对称密码又比较复杂, 运算量大 。 私钥通常保存在USB Key或IC卡中,加密运算 也是在Key或卡中进行 加密所用的时间就会很长而导致无法实用 黑客用自己的私钥加密葵花宝典 用它替换掉黄裳给我的经文并发给我 我需要以某种方式来认证该经文的确来自黄裳 并且没有被黑客修改或者替换
数字签名的要求
类似于手书签名,数字鉴名也应满足以下要求: (1)收方能够确认或证实发方的签名,但不能伪 造。 (2)发方发出签名的消息送收方后,就不能再否 认他所签发的消息: (3)收方对已收到的签名消息不能否认,即有收 到认证。 (4)第三者可以确认收发双方之间的消息传送, 但不能伪造这一过程。
Biblioteka Baidu
数字签名的使用模式
智慧卡 像信用卡的磁卡,存储有用户的数字签名信息 密码式 用户自己设定密码,由特定的设备写入计算机 生物测定 以使用者的身体特征为基础,用特殊的设备对 使用者的指纹、面部、视网膜或眼球进行数字 识别,从而确定对象是否与原使用者相同。
签名体制
一个签名体制一般含两个组成部分.即签名算 法和验证算法。 对M的签名可简记 Sig(M ) s 有时为了说明密钥k在签名中的作用,也可以将 签名写成 Sig(M , k ) 对s的证实简记为Ver(s0)={真,伪}={0,1}。 签名算法或签名密钥是秘密的,只有签名人掌 握。证实算法应当公开,以便于他人进行验证。
数字签名的分类
数字签名有两种
(1)一种是对整个消息的签名 (2)一种是对压缩消息的签名 它们都是附加在被签名消息之后或某一特定位 置上的一段签名图样。
数字签名的分类
若按明、密文的对应关系划分,每一种又可分 为两个子类 (1)一类是确定性数字签名。其明文与密文一一 对应,它对一特定消息的签名不变化(使用签名 者的密钥签名),如RSA、ElGamal等签名。 (2)另一类是随机化的或概率式数字签名。它对 同一消息的签名是随机变化的,取决于签名算 法中的随机参数和取值。
使用数字签名
随着计算机网络的发展,过去依赖于手书签名 的各种业务都可用这种电子化的数字签名代替。 它是实现电子贸易,电子支票、电子货币、电 子出版及知识产权保护等系统安全的重要保证 数字签名已经并将继续对人们如何共享和处理 网络上信息以及事务处理产生巨大的影响。 为电子形式为文档附上电子时间标签。 使用电子汇款系统的人可以利用电子鉴名 数字签名的使用已延伸到保护数据库的应用中
4.2RSA签名
这里有一个RSA加密的示例,同样为了简洁起见, 在这个例子中使用的数字都很小。 Bob选择了质数p=5和q=11,然后把这两个数字 相乘,从而得到模数n=55。 Bob计算出f(n)=(p-1)*(q-1)=4*10=40 Bob选择一个数字e,e与40是互质数。40的质因 数是2、2、2、5和1,所以Bob选择的私有指数 e=3。 Bob选择了一个公共指数d=3(-1)mod 40。这个 模数反函数实际上是非常困难的,但是对于所用 的这些小数字,可以看到 27*3mod40=81mod40=1。所以d=27。