给自己起一个英文名字,这种事情应该是所有在外企实习的同学都经历过。我当时因为当时是在银行做前台业务,每天对十几份文件都要进行签字,基本每页都要进行签字验证。所以中文名字签字太麻烦,英文名字的好处就体现出来了,我只在自己的姓后面加上Ke就变成英文名字,这样就可以快速签名了。签名是一种验证,也是一种责任。这种行为在区块链中也有应用,所以今天讨论加密货币中的数字签名问题。
01
什么是数字签名呢?先看看实际支付过程中的签名吧
下面这张图是我在刷卡后的签名。通过我的密码+签名,双重验证我是不是这笔财产的合法拥有人。但是真人签字很费事,不仅要道现场,还需字迹专家进行验证。所以数字签字的应用场景就应运而生了。
所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。
简单的说,数字签名就是签名人用自己的私钥对待签名数据的摘要进行加密得到的值就是签名值。
签证行为:软件自动使用自己(self)的私鈅去加密信息摘要,这个摘要(message digest)是Hash函数生成的。并且这个字符串自动附在文件下方。
签证的结果:可以对需要接收或证明这份文件真实性的人(例如,Pat)可以使用我的公钥把这个字符串转换为信息摘要,如果可以完成这个操作,证明这个签名就是我本人所为。
02
关于签名和加密的总结
数字签名的核心在于签名,在于证明这份数据是签名者发出的、不可抵赖的。待签名数据本身的保密不是数字签名方案要考虑的问题。
结合前面讲的公钥和私鈅,可以得结论是:对于加密来说(信息传播领域),公钥负责加密,私鈅负责解密;对于签名来说(真实性验证),私鈅负责签名,公钥负责验证。
领取专属 10元无门槛券
私享最新 技术干货