首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链与密码学原理之:数字签名详解!

区块链技术有问题,兄弟来帮忙

作者:Mercina-zy

本文转载自区块链兄弟,区块链兄弟——技术专业问答先行者,区块链爱好者聚集地

本文约 1800字,阅读(观看)需要10分钟

今天和大家谈一下数字签名。区块链技术当中一个很重要的组成部分就是密码学,作为从事区块链研究的工程技术人员,应该对密码学有一定的了解。现我分享一些密码学的概念以供交流学习,大家共同学习,更加充实对区块链技术的理解。(于中阳Mercina-zy)

使用公开密钥密码系统对文件签名

之前介绍了利用对称密码系统和仲裁者对文件进行签名,我们也可以利用公开密钥密码系统进行文件签名。有几种公开密钥算法能用作数字签名。在某些算法当中,例如 RSA ,公开密钥和私钥都可以用作加密。用你的私钥进行加密文件从而获得安全的数字签名。

这里的基本协议很简单,我简述如下。

1)Alice 用她的私钥对文件进行加密,从而对文件签名。

2)Alice 将签名的文件传送给 Bob。

3)Bob 用 Alice 的公钥进行解密文件,从而验证签名。

这个协议是不是比上一节的算法更好呢,这里无需 Trent 去签名和验证。其只需要证明 Alice 的公钥的确是 Alice 本人的。甚至协议的双方都不需要 Trent 来解决争端,因为如果 Bob 无法完成第三步,那么 Bob 就可以确定这个签名是无效的。

而且这个协议同样也满足我们期待的特征。

1)签名是可信的。当 Bob 用 Alice 的公钥进行验证消息时,就可以判断出这是否确实是由 Alice 签名的。

2)签名是不可伪造的。只有 Alice本人知道她的私钥。

3)签名是不可重复的。签名是文件的函数,并且不可能转换成另外的文件。

4)被签名的文件是不可改变的。如果文件有任何改变,文件就不可能用 Alice 的公钥进行验证了。

5)签名是不可抵赖的。Bob 不用 Alice 的协作,就可用公钥自身完成验证 Alice 的签名,且公私钥是配对的。

文件签名中的时间标记(时间戳)

还有一点值得注意,那就是时间标记(时间戳)。我先举一个例子。

在什么情况下,Bob 可能把签名和文件一起重用,以欺骗 Alice 呢。

假如,Alice 交给 Bob 一张 10000 美元的签名数字支票,Bob 将支票拿到银行进行验证签名,验证成功后将钱转移至自己的账户。接下来,Bob 保存了数字支票的副本,过了一周又拿着数字支票去银行兑换。这里只要 Alice 不对支票本进行清账,这种行为就可能一直持续。

所以,数字签名里是应该包括时间标记的。将日期和时间的签名附在消息之中,并与消息中的其它部分一起签名。银行就会将时间标记存储在数据库当中了。这样的话,Bob 再想第二次兑换 Alice 的支票时,银行就会检查时间标记是否和数据库当中的一样,这样一来 Bob 的行为就无法得逞,并会为此付出代价。

热文推荐

区块链兄弟——技术专业问答先行者,区块链爱好者聚集地

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180105G109HO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券