密 码 学
南京农业大学信息学院
主讲:赵力
签名为什么如此引人注目呢?
签名是可信的;
签名不可伪造;
签名不可重用;
签名的文件不可改变;
签名不可抵赖。
而现实生活中,关于签名的这些
陈述没有一个是完全真实的。
现实生活中,签名能够被伪造,
签名能够从一篇文章盗用移到另一
篇文章中,文件在签名后能够被改
变。然而,我们之所以愿意与这些
问题纠缠在一起,是因为欺骗是困
难的,并且还要冒被发现的危险。
我们或许愿意在计算机上做这
种事情,但还存在一些问题。
计算机文件易于复制,即使某人的
签名难以伪造(例如,手写签名的
图形),但是从一个文件到另一个
文件剪裁和粘贴有效的签名都是很
容易的。这种签名没有什么意义。
文件在签名后也易于修改,并且不
会留下任何修改的痕迹。
但我们还是要解决
计算机签名的问题——数
字签名。
第十讲 数字签名
基于共享密钥的报文鉴别技术用于保护通
信双方,使其免受来自第三方的攻击。但却
无法防止通信双方之间的互相攻击,也不能
有效防止通信双方的欺骗和抵赖行为。
现代经济生活中,大量的交易可能通过网
络进行,因此,除报文鉴别技术以外,迫切
需要一种技术手段来防止通信中的抵赖和欺
骗行为。
数字签名的基本特性:
数字签名是对现实生活中笔迹签名的模拟。
它应该具有:
必须能够用来证实签名者和签名的时间;
必须能够对消息的内容进行鉴别;
签名应具有法律效力,必须能够被第三方
仲裁,以解决争端。
由此,归纳出数字签名的设计目标:
数字签名的设计目标(1)
签名必须是与消息相关的二进制位串。
签名必须使用发送方某些独有的消息,
以防伪造和否认。
产生数字签名比较容易。
识别和验证签名比较容易。
数字签名的设计目标(2)
伪造数字签名在计算上是不可行的。
•无论是从给定的数字签名伪造消息,
•还是从给定的消息伪造数字签名,
•在计算上都是不可行的。
保存数字签名的拷贝是可行的。
目前,已经有多种数字签名的
解决方案和数字签名计算函数。按
照其技术特点,这些方案可分为两
类:
直接数字签名
基于仲裁的数字签名
直接数字签名
在技术上仅涉及通信双方,即源点X和终点Y。
终点Y需要了解源点X的公开密钥KUx。
发送方X可以使用其私有密钥KRx对
•整个消息报文进行加密来生成数字签名;
•消息报文的散列码进行加密来形成数字签名
(更好的方法)。
〖〖11〗〗计算消息计算消息MM的散列码:的散列码:
HH((MM))
〖〖22〗〗使用使用XX的私人密钥的私人密钥KKRxRx对对HH((MM))进行加密,形成:进行加密,形成:
EEKKRxRx(H(M))(H(M))
〖〖33〗〗使用使用YY的公开密钥的公开密钥KKUyUy对对MM和和EEKKRxRx(H(M))(H(M))进行加进行加
密,形成:密,形成:
EEKKUyUy(M||E(M||EKKRxRx(H(M)))(H(M)))
〖〖44〗〗将将EEKKUyUy(M||E(M||EKKRxRx(H(M)))(H(M)))发送给发送给YY。。
直接数字签名举例-发送方X
接收方Y收到EKUy(M||EKRx(H(M))),Y将
〖〖11〗〗使用自己的私人密钥使用自己的私人密钥KKRyRy对对EEKKUyUy(M||E(M||EKKRxRx(H(M)))(H(M)))
进行解密,得到:进行解密,得到:
MM和和EEKKRxRx(H(M))(H(M))
〖〖22〗〗使用使用XX的公钥对的公钥对EEKKRxRx(H(M))(H(M))进行解密,得到:进行解密,得到:
HH((MM))
〖〖33〗〗计算计算MM的散列码的散列码
HH((MM)’)’
〖〖44〗〗比较比较HH((MM))与与HH((MM)’)’,如果相等,可证实消息确实,如果相等,可证实消息确实
来自来自XX。。
直接数字签名举例-接收方Y
数字签名生成后,可对整个报文和签名
进行进一步加密以增强数据通信的保密性。
加密可以是基于公开密钥方式,也可以
是基于对称密钥方式。
报文及签名可以保存在存储介质中,以
备解决争端时使用。
在这种情况下,第三方必须掌握解密密
钥才能查看报文和签名。
对直接数字签名的讨论
直接数字签名方案在安全性上存在一个
共同的弱点:方案的安全性依赖于发送方X私
有密钥的安全性。
发送方可以声称自己的私有密钥丢失或
被盗用,而否认其发送过某个报文。
若对私有密钥引入额外的管理控制,将
限制给签名方案的适用范围。
解决的方案:引入第三方作为仲裁
基于仲裁的数字签名
每个从X发往Y的签名报文
• 首先被送给仲裁者A,
• A检验该报文及其签名的出处和内容,
• 然后对报文注明日期,并附加一个“仲裁
证实”的标记发给Y。
基于仲裁的数字签名
仲裁者A的引入解决了直接签名方案所面临的
发送者的否认行为带来的难题。
在这种方案中,仲裁的地位非常关键和敏感,
它必须是一个所有通信方都能充分信任的仲
裁机构;也就是说,仲裁者A必须是一个可信
的系统。
基于仲裁的数字签名方案一
——传统加密,A能阅读消息
Y可以存储报文M及签名。
解决争端
当发生争执时,例如,X否认他自己的行为时,
Y可向A发出报文。
那么,仲裁A就可
• 用用KKayay恢复出恢复出IDIDxx、、MM及签名,及签名,
• 用用KKaxax对签名解密并验证其散列码,对签名解密并验证其散列码,
• 这样就可断定报文这样就可断定报文MM是否是是否是XX发送的。发送的。
方案特点
报文内容M以明文方式传送给仲裁者A,有
可能被窃听。
X和Y对A是高度信任的
• XX确信确信AA不会泄漏密钥不会泄漏密钥KKaxax,因此不会产生伪造的,因此不会产生伪造的
签名;签名;
• YY也确信也确信AA发来的报文发来的报文MM是经过验证的、确实来是经过验证的、确实来
自自X;X;
• XX、、YY确信确信AA能公平地解决争端。能公平地解决争端。
基于仲裁的数字签名方案二
——传统加密,A不能阅读消息
尽管A无法阅读消息报文M中的内容,但它仍
能防止X和Y中某一方不诚实。
但仲裁A仍可能与X或Y勾结来否认签名报文,
或伪造发送方的签名。
基于仲裁的数字签名方案三
——公钥加密,A不能阅读消息
在通信前,通信各方没有任何共享的信息,
可防止各方相互进行结盟欺骗。
X发给Y的报文内容对其他人都是保密的,包
括A在内。
数字签名的其它应用
不可抵赖的数字签名
代理签名
团体(多重)签名
盲签名
选举(投票)签名
数字签名标准