数字签名的工作原理
环度小编:

数字签名是公钥基础结构的基础部分。当我们说 PKI 时,一般想到的是数字证书,证书颁发机构(CA),银行使用的 Key,以及SSL通信等等。


数字证书,一般都是成对存在的,包含证书的公钥,和证书对应的私钥,公钥本身有一定的身份标识功能(如ssl证书中的域名信息,邮件客户端证书的邮箱地址等),对于数字证书的应用比较广泛,但其基本原理简单来说就是公钥用来加密,私钥用来解密。私钥用来签名,公钥用来验证签名。
那么,在我们了解数字签名的技术原理之前,我们先要明白一个和数字签名密切相关的算法:Hash 算法。
hash 算法是一种散列(密码杂凑)算法。简单来说这个算法有几个很的特性:
1. 易压缩性,可以很容易的将任何长度的数据映射到固定长度的输出。
2. 单向性,它是一种单向密码体制,根据源数据计算一个哈希值很容易,但是要根据计算出的结果得出源数据是不可能的。
3. 高灵敏性,就是对于输入数据的变化较灵敏,即使很小的变化都会输出差异性很大的结果。
4. 抗碰撞性,对于不同的数据块,其 hash 值相同的可能性较小;对于一个数据块,找到和它 hash 值相同的数据块较为困难。
由于具有这些特性,所以它较适合用来做数据完整性和文件完整性的校验。目前应用较为广泛的哈希算法主要有 sha1,sha256,sha384 等,而我们国密与之相对应的是 SM3 算法,其安全性也是递增的。几年前 Google 就对 SHA-1 碰撞实验,就是为了验证其安全性。现在随着科技的飞速的发展和计算能力的提升,sha1 也即将要退出历史舞台。

工作原理:创建数字签名


现在,让我们逐步了解一下数字签名的过程:

1、将要签名的文件进行 hash 计算。


2、用私钥将文件的 hash 值进行签名。


3、除了签名外,还可以添加时间戳以指示签名时间。

创建数字签名


这个就是数字签名的主要过程,总的来说就是先对文档进行哈希处理,然后签名者用自己的私钥对文件生成的哈希值进行签名,使用时将原文件和签名数据一起发送。


值得注意的是,数字签名并没有对整个文件进行签名,而是对文件的 hash 值进行了签名。这样的不仅节约了资源而且提高了效率。


好的,接下来我们讨论一下如何读取和认证签名。
工作原理:验证数字签名
我们已经知道了创建数字签名的过程,随着要来进行数字签名验证。主要过程有以下步骤:


1、将原文件进行 hash 计算得到 hash 值。


2、将签名的公钥从签名数据中计算出签名数据中的 hash 值。


3、将步骤 1 中得到的 hash 值和步骤 2 得到的 hash 值进行对比,如果对比结果一致则验证通过,反之验证失败。

验证数字签名

为什么我们要对所有内容进行数字签名?(数字签名的优势)


ü  防伪造:数字签名中的私钥具有性,除签名者之外都不能伪造签名,并防止被假冒。
ü  完整性:由于数字签名中包含 hash 算法,对签名文档的任何未经授权的修改将立即被显见。
ü  身份标识:证书颁发机构可以对证书的持有者的身份进行识别和验证,可信的CA机构签发的证书可以用于做身份标识。
ü  时间戳:知道文档签署的时间是较重要的,数字签名可以盖上指示创建签名时间的时间戳。
ü  防抵赖:数字签名不仅可以成为身份识别的依据,同时它也是签名者进行签名操作的有效证据,防止签名方对其产生的行为进行抵赖。
除了要点之外,数字签名的应用会越来越广泛,如今连电子发票和电子合同都加入了数字签名的应用行列,所以它的重要性可以预见。

(文章转自国密应用研究院)


文章关键词: 数字签名
  • 扫一扫二维码可分享朋友或朋友圈

400-9989-115
24小时客服热线

电话7x24小时值班

多项服务供您筛选
适合个人小微中大型单位

安全签章