密码学是如何保护区块链的?

作者:媒体转发 时间:2018-03-14 09:19

字号
沙龙活动 | 3月31日 京东、微博实战专家与你共同探讨容器技术实践!

本文摘自Logan Brutsche的图书《The Layman's Guide to Bitcoin》

密码学是应用数学函数以保证数据安全性的科学。

许多风靡的影视作品都在向人们暗示:只要有足够厉害的黑客,任何系统都可以被攻破。这种“好莱坞式黑客攻击”并不是真实世界的场景——黑客必须发现系统暴露的漏洞,例如未上锁的服务器机房、易于猜测的密码、未受保护的网络端口或者内部安装的“后门”,以进而实现未经授权的访问。

虽然我们的确永远无法确保一个系统没有任何漏洞——毕竟系统都是由不完美的人类所完成的,但是“任何系统都可以被攻破”这一观点却是错误的。自90年代初以来,我们利用密码技术已经可以实现完全免受黑客攻击。但这一技术在应用时有时会留下被黑客利用的空间。

密码学本身并不会被黑客攻破以生成伪造的数字签名(马上会给出定义),就像数学不能被黑客攻击而使得2+2=5一样——虽然密码学和数学都可能被错误地使用。如果一个使用密码学的系统被攻破,那只可能是因为设计者错误地应用了密码学。这不是因为密码学不起作用,也不是因为有人“破解”了密码学——就像你的银行错误地处理了你的账户时不是数学的错误、你的妈妈下载不熟悉的附件而感染计算机病毒时不是电子邮件的错误一样。这是一个很重要的特点,因为比特币是一个非常直接的密码学应用。

密码学并不是一种未经考验的新技术。比特币所使用的所有密码学技术自互联网诞生以来一直都在使用着,是每天使用的许多常见互联网协议的重要部分。计算机科学家认为密码学是可靠和必要的,就像NASA(美国国家航空航天局)认为宇航科学是可靠和必要的一样。

公私钥对:密码学的基石

公私钥对是区块链所使用密码学的基石。公私钥对包含两部分:私钥和公钥。这两个密钥实际上只不过是具有特定数学关系的大整数,用于代替密码和用户名。

密码学是如何保护区块链的?


你会拥有一个公钥,就像你的名字或用户名一样:在大多数情况下,你可以向任意请求者分享你的公钥,而拥有它的人可以用它来引用或联系你。它与你的名声(或者比特币中你的交易历史)绑定,所以你可能会有多个公钥(因此有多个公私钥对)用于不同的目的。公钥可用于引用或查看帐户,但它自身并不能对该帐户作任何操作。

私钥应该像密码一样:不应向任何人分享,它用于验证某些操作,例如发送BTC(比特币)。

但是私钥和密码之间存在重要的区别。要使用密码,你必须将其发送给某个人或服务器,以便其对密码进行验证。你需要相信密码在发送后会被负责任地处理。相比之下,私钥可用于证明自己的身份而无需将其发送给任何人。它曾经存储或直接使用过的唯一场所就是在你的本地设备上。

这一点很重要,因为如果你可以在不向任何人发送你的秘密信息的情况下对自己进行身份认证,则可以保证完全控制其安全性——你不易受其他系统的安全漏洞影响。这是使比特币不可撼动的重要组成部分。比特币本身并没有存储可能泄露给攻击者的密码或私钥,但用户仍然可以对交易进行验证。

但是,如果你从来不曾向任何人发送私钥,那么如何使用私钥来验证交易呢?答案与私钥和公钥之间的数学关系有关:数字签名。

数字签名

有许多种不同的生成和验证数字签名的技术,支撑它们工作的数学原理远远超出了本文的范畴。对于那些不熟悉密码学的人来说,这里所描述的过程最初听起来可能令人难以置信。我很清楚地记得,当我四年前刚开始研究比特币的时候就有过这样的感觉。

现在我将再次简要提到,这些技术被用于许多常见的互联网协议中,并且是信息科学的既有组成部分。

想象有Alice和Bob两个人,他们已经在私下交换了公钥。Alice想给Bob发送一条消息,但Bob是一个非常多疑的人,除非他能够以数学的方式进行确定性地证明,否则他不相信该消息确实来自Alice。为了便于证明,他们同意使用数字签名。

为了生成签名,Alice使用她计算机中的签名生成算法,该算法将她的私钥和完整的消息作为输入,生成一个数字签名。然后,她将这个消息/签名组合发送给Bob——但重要的是,她不会发送她的私钥。

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>密码学 漏洞 黑客
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接