不可否认性保护--数字签名
本篇文章主要用于介绍书中数字签名部分的相关内容,主要是对一些符号、流程进行介绍,同时理清体系,便于密码学课程进一步学习。
本节体系图如下:
下面我们一一介绍
直接数字签名
使用RSA公钥密码体制
流程如下:
- 通过哈希函数抽取部分原文M’;
- 发送方使用**私钥加密M’**得到S;
- 发送方使用接收方公钥加密S为S’
- 之后接收方进行验证:先通过本身私钥解密S’,再通过别方公钥解密S得M’,最后通过相同哈希从M中得到M’进行比较即可。,再通过别方公钥解密S得M’,再通过别方公钥解密S得M’,再通过别方公钥解密S得M’
安全考虑:
此方案采取非对称密钥进行签名,其安全性完全依赖于密钥体制的安全性,会产生一些漏洞。
DSA数字签名标准
基本流程:
流程解释:
此方案分关键点在于DSA函数,此函数有4个参数:n(随机数)
、PKg(公钥)
、SKa(私钥)
、H(SHA生成的报文摘要)
;返回两个结果:s和r
。(这里的s和r就是发送者的签名)
而接收方验证则是将5个参数(如图)传入DSA函数并将得到的结果与r比较。
安全考虑:
此方案的安全性的计算基于离散对数的困难性即攻击者从r中恢复n或者从s恢复SKa在计算上不可行。
也就是说,攻击者在截取到X发送的报文时,可以获得s和r。但是此签名的生成有n和私钥参与,攻击者无法从已有的信息中反推这两个信息,也就无法伪造签名了。
有仲裁的数字签名
方案一:公钥对称密钥加密
基本流程如下:
符号说明:
- X:发送方 Y:接收方 A:仲裁机构
H(M) == 哈希函数值
,也就是从明文提取的报文段。|| == 链接
,即将前后双方连接在一起成为新的整体IDx == 为X的身份码
T == 时间戳
流程解释:
- 首先X与A共享一个密钥Exa,A与Y共享一个密钥Eax。(X、Y不知另外的密钥)
- 通信过程中发送的报文为明文M
安全考虑:
此方案建立在X和Y对A的高度信任之下,即:
- X相信A不会泄露密钥也不会伪造签名
- Y相信A的认证是可靠的
- X和Y相信在出现问题后A可以
方案二:对称密钥明文加密
基本流程如下:
流程解释:
与方案一比较一下,可知此方案改动的地方:将明文M进行加密。
安全考虑:
此方案可以为明文提供保密性,但是无法解决对仲裁者的约束。因为仲裁者仍然可以伪造签名、虚假认证,只是无法得到明文信息而已。
方案三:公开密钥加密
基本流程如下:
流程解释:
与方案二相比,这里引入公钥密码体制,使得仲裁方只能验证IDx而无法对之后的加密信息进行解密,这段信息只有Y可以解密。这样就保证A无法进行签名的伪造。
安全考虑:
方案三进一步约束了仲裁方,使得其无法与任何一方共谋。
认证协议实例–SET
在正式介绍之前,我们先说一下为什么要介绍SET。因为SET是对数字签名的实际应用,通过对其流程和原理的理解可以帮助我们深入了解数字签名的知识。同时也是为了提醒我们,密码学可以分为算法和应用两部分,前者不断更新,而依托在算法之上的应用也在不断迭代。所以在学习时对于这些应用不要固步自封,认为只有这些技术,我们现在学习的只是一些经典的应用而已。
万变不离其宗,先学习常用算法,之后再学习这些算法在经典场景下的具体应用,前者基本类别不会有太大变化,后者则是在不断更新中。
什么是SET呢?
安全电子交易( Secure Electronic Transaction, SET)协议是一种利用加密技术( cryptography),以确保信用卡消费者、销售商及金融机构在Intermet 上从事电子交易的安全性和隐私性的协议。
B to C 交易流程
SET便是为了保证上述交易过程中的安全性和隐私性。
关键技术1–数字信封
数字信封其实在前面已经介绍过了,这里只是给这个过程一个专业术语而已。其具体流程如下图,是使用公钥密钥体制解决密钥传送的安全性问题的应用。
原理很简单,利用接收方公钥对对称密钥加密并传输,而后接收方使用私钥解密得到对称密钥。
关键技术2–双重签名
双重签名是数字签名的扩展应用,其目的是为了让与有关角色无关的角色无法知道不应该知道的机密。
我们将上述黑体字放到实际的场景下:
银行不应该知道持卡人与商家之间交易的机密数据
商家不应该知道持卡人的账户数据
如何实现呢?使用双重签名技巧,其具体流程如下:
这个过程是比较复杂的,我们可以不关注具体的实现,从全局角度理解之。
需要继续学习。