本篇文章主要用于介绍书中数字签名部分的相关内容,主要是对一些符号、流程进行介绍,同时理清体系,便于密码学课程进一步学习。

本节体系图如下:

下面我们一一介绍

直接数字签名

使用RSA公钥密码体制

流程如下

  1. 通过哈希函数抽取部分原文M’;
  2. 发送方使用**私钥加密M’**得到S;
  3. 发送方使用接收方公钥加密S为S’
  4. 之后接收方进行验证:先通过本身私钥解密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 == 时间戳

流程解释

  1. 首先X与A共享一个密钥Exa,A与Y共享一个密钥Eax。(X、Y不知另外的密钥)
  2. 通信过程中发送的报文为明文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–双重签名

双重签名是数字签名的扩展应用,其目的是为了让与有关角色无关的角色无法知道不应该知道的机密

我们将上述黑体字放到实际的场景下:

  • 银行不应该知道持卡人与商家之间交易的机密数据

  • 商家不应该知道持卡人的账户数据

如何实现呢?使用双重签名技巧,其具体流程如下:


这个过程是比较复杂的,我们可以不关注具体的实现,从全局角度理解之。


需要继续学习。