首页>安全资讯>数字签名的工作原理

数字签名的工作原理

数字签名是公钥基础结构的基础部分。当我们说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、除了签名外,还可以添加时间戳以指示签名时间。

数字签名的工作原理 第1张

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

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

好的,接下来我们讨论一下如何读取和认证签名。

二、工作原理:阅读数字签名

我们已经知道了创建数字签名的过程,随着要来进行数字签名验证。主要过程有以下步骤:

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

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

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

数字签名的工作原理 第2张

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

防伪造:数字签名中的私钥具有唯一性,除签名者之外都不能伪造签名,并防止被假冒。

完整性:由于数字签名中包含hash算法,对签名文档的任何未经授权的修改将立即被显见。

身份标识:证书颁发机构可以对证书的持有者的身份进行识别和验证,可信的CA机构签发的证书可以用于做身份标识。

时间戳:知道文档签署的时间是非常重要的,数字签名可以盖上指示创建签名时间的时间戳。

防抵赖:数字签名不仅可以成为身份识别的依据,同时它也是签名者进行签名操作的有效证据,防止签名方对其产生的行为进行抵赖。

除了要点之外,数字签名的应用会越来越广泛,如今连电子发票和电子合同都加入了数字签名的应用行列,所以它的重要性可以预见。

最新资讯

沃通SSL证书OCSP本地化部署,为HTTPS加密提速

20%的恶意网站未列入黑名单,用户如何防范?

警惕东京奥运会门票虚假倒卖网站,用EV SSL证书反钓鱼

2019年电子邮件攻击造成17亿美元损失

Poloniex加密货币交换泄露数据,建议数据安全从SSL证书做起

标签推荐:数字证书申请 | 域名ssl证书 | https证书申请| 数字证书过期| 网站证书安装| 可靠的ssl证书| 小程序证书| ca认证电子签名| 微软代码签名| android数字签名| java代码签名| ssl证书部署| 时间戳技术| 电子签名技术| https证书配置| 谷歌浏览器证书| tomcat数字证书| openssl漏洞| ECC加密算法| 服务器SSL证书| 链路层劫持| 物联网安全技术| 火狐插件签名证书