数字签名听起来很抽象,它究竟如何生成?

by | Jan 2, 2019 | 区块链, 智能合约, 最新快讯 | 0 comments

在人类历史中,人们一直致力于寻求一种可以长久保存且不易被篡改的凭证,而到了现代,合约或者契约等的发明,证明了时代的进步;在传统的合约或契约当中,签名及盖章等则作为具有唯一性的信任背书,成为这些凭证产生效力的关键,而且具有法律效力。然而,这些所谓的凭证,在需要进行验证的时候,只能够根据签名来确认一致性,但是,这些都是实物,就难免会遇到遗失、人为损毁、造假甚至天灾等问题。

如今,随着科技越是发达,也因为互联网的诞生,越来越多的信息都迁移到网络之上,于是,有了智能合约,而数字签名也应运而生。什么是数字签名?听起来很抽象吧?其实,就是在互联网中加入“签名”的机制,类似于现实世界中的盖章和签名,但数字签名并不是将签名扫描成数码图像或者用触摸板获取签名,而是一种在互联网世界中,实现的一个技术。

数字签名是由签名算法去生成的,签名算法的输入有两个,一个是私钥,另一个是被签署的文件,输出的一个字符串就是数字签名了。简单而言。公钥(Public Key)与私钥(Private Key)是通过一种算法,得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。

基于数字签名的通信机制工作原理,发送方用一个哈希函数(Hash Function)从报文文本中生成文件摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为报文的数字签名和报文一起发送给接收方。接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公钥来对报文附加的数字签名进行解密,如果得到的明文相同,那么接收方就能确认传输的文件并未受到篡改,是安全可信的。

数字签名主要采用了私钥加密,公钥解密的方式,文件签署者用私钥签署文件,就表示他认可了这个文件的内容。而要验证数字签名,只需要签名人公布自己的公钥即可,其他人通过验证数字签名即可验证文件是私钥签署的,换句话说,签署人是不需要暴露自己的私钥,就可以间接证明自己拥有私钥。

数字签名有三大作用,第一个是认证,第二个是防止抵赖,第三个是保证文件完整性,也就是没有被篡改过。

首先,确认签署人身份,这个跟纸笔签名的作用是一致的;防止抵赖,同样也是纸笔签名也拥有的特性,一份合同签署了,白纸黑字,就是要承担责任;而最后一个作用也是数字签名的最大保障,就是能保证文件没有被篡改过,而这种在一般现实世界里,用纸和笔签名很难保证,比如签名只签署了最后一页,那么如果有人想悄悄换掉了前几页的内容,签名本身是阻止不了的;但是数字签名就可以,因为数字签名是由两个输入运算得出的,一个是私钥,另一个就是文件,所以如果在验证过程中,文件有一丁点的改动,验证也会失败。

总结而言,数字签名在制作时,私钥是自己独有的;在签署数字签名时,签署人只能用自己的私钥进行签名,别人无法使用;对数字签名有任何改动,通过签名验证极为容易发现;通过对数据电文,再次进行签名操作来比对数据原文是否遭到改动也相当容易。

更多文章:智能合约,效率提升之余优化无纸时代!发掘区块链与分布式账本技术(DLT) 的不同之处