数字签名:互联网世界的公章

在上一篇文章「基于数学的互联网信任」里我们阐述了如何基于数学(加密算法)构建互联网信任,本文将更进一步,阐述如何基于加密算法实现互联网世界的防篡改和防抵赖。

现实世界我们是通过合同的方式防止对方篡改和抵赖,双方都会在合同上盖章,人手至少一份,如果事后有纠纷,就根据合同条款打官司,通常这个过程非常冗长。那么互联网世界是否存在更便捷的方式呢?答案是有的,就是数字签名,也叫电子签名或数字签章等。

在阐述数字签名之前,我们得先简单了解下哈希算法。

哈希算法

哈希算法用于信息压缩,它的特点是不管原始输入多大,输出的长度都是统一的。它的计算速度很快,而且基本可以保证只要输出不一样,输入也不一样。另外它是不可逆的,也就是说想通过输出推导出输入,基本不可能。比较著名的哈希算法有MD5和SHA,注意:在当前计算机性能的基础上,MD5和SHA1算法已经不够安全,至少要使用SHA256算法。

数字签名和验签机制

数字签名并不是传统笔迹签名的电子版本,而是利用哈希算法和非对称加密算法技术实现实现的一种身份认证技术,原理如下图所示:

上图展示了数字签名和验签机制,具体过程如下:

1.对原文进行哈希计算获得摘要;

2.用A的私钥对摘要进行加密获得数字签名;

3.A将数字签名和原文一起发给B;

4.B用A的公钥将数字签名解密,获得摘要;

5.B对原文进行哈希计算又获得摘要;

6.B将步骤4和5获得的两份摘要进行比对,如果一致说明是A发送的,中间没有篡改。

上面的验签过程仍然也要结合数字证书,因为B在用A的公钥解密时,仍然需要CA认证中心证明A就是A。

区块链如何做到交易防抵赖?

区块链就是利用数字签名做到交易的防抵赖,如上图所示:交易创建者使用自己的私钥在每个属于自己交易后面附上数字签名,其他人只要用交易创建者的公钥解密他的数字签名即可证明这个交易属于谁的。另一方面,交易创建者一旦在区块链里发起了交易,就无法抵赖,因为他的公钥是公开的,任何人都可以利用他的公钥证明这个交易是他发起的,这也是区块链里的数据不可篡改和可追踪的根本原因。

未完待续,关注我的公众号可获取后续文章:

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180409G0O2GZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券