区块链背后的密码学和力学
区块链的使用依赖于密码学。数字密码术可以被认为是最近的发明,过去的密码依赖于单词对单词和字母对字母的交换。正如我们将看到的,现代密码学是保护通信安全的非常强大的工具,对于我们的主题非常重要的是,它可以确定数字签名的来源和数字资产的真实性。
本章将涵盖以下主题:
- 安全原则
- 历史视角–经典密码学
- 加密签名
- 散列法
安全原则
密码学保障信息安全的三大原则,可以通过助记器中央情报局 ( CIA )记住:
-
保密性:确保信息与相关方共享,并且敏感信息(例如,医疗信息、一些财务数据)仅在相关方同意的情况下共享。
-
Integ rity :确保只有授权方才能更改数据,并且(取决于应用程序)所做的更改不会威胁到数据的准确性或真实性。这一原则可以说是最适用于整个区块链,尤其是区块链公众的。
-
可用性:确保授权用户(例如令牌持有者)在需要或想要数据或资源时能够使用它们。区块链的分散和去中心化性质对此有很大帮助。
区块链和加密货币的相关性是显而易见的:例如,如果区块链不提供完整性,就无法确定用户是否拥有他们试图消费的资金或代币。对于区块链的典型应用,其中该链可能持有房地产或证券的所有权链,数据完整性确实非常重要。在这一章中,我们将讨论这些原则与区块链的相关性,以及诸如完整性之类的东西是如何通过加密来保证的。
历史视角–经典密码学
密码学是用于保护信息或通信安全的任何方法或技术的术语,专门用于研究安全通信的方法和协议。在过去,密码学被用来指代加密,这个术语指的是用于对信息进行编码的技术。
在最基本的情况下,加密可能采取替代密码的形式,根据双方事先共享的代码,用消息中的字母或单词替换其他字母或单词。一个经典的例子是凯撒密码,在这种密码中,单个字母被索引到它们在字母表中的位置,并向前移动给定数量的字符。例如,字母 A 可能会变成字母 N,,键为 13。
这种特殊形式的凯撒密码被称为ROTT2 13,它很可能是唯一一种继续被常规使用的替代密码——它为用户提供了一种在静态网站上隐藏诅咒语或谜题答案的简单可逆的方法(当然,这也可以非常简单地用 JavaScript 实现)。
这个非常简单的例子引入了两个重要的概念。第一个是算法,它是具有可预测、确定性结果的特定计算的正式描述。获取消息中的每个字符,并将其在字母表中向前移动 n 个位置。第二个是一个密钥:该算法中的 n 是 13。这种情况下的密钥是一个预先共享的秘密,一个双方(或多方)都同意的代码,但是,正如我们将看到的,这不是唯一的密钥类型。
密码术的类型
密码学主要分为对称加密和非对称加密。对称加密是指密钥预先共享或协商的加密。AES、DES 和 Blowfish 是对称加密中使用的算法示例。
对称密码术
大多数精明的电脑用户都熟悉 WEP、WPA 或 WPA2,它们是 Wi-Fi 连接中使用的安全协议。这些协议的存在是为了防止通过无线连接传输的数据被截取和操纵(或者,换句话说,为无线用户提供保密性和完整性)。现在路由器上通常印有无线密码,这是预共享密钥的一个非常真实的例子。
对称加密中使用的算法通常非常快,与不对称加密相比,生成新密钥(或用它加密/解密数据)所需的计算能力相对有限。
非对称(公钥)密码术
非对称加密(也称为公钥加密)使用两个密钥:可以广泛共享的公钥和保密的私钥。公钥用于加密传输给私钥持有者的数据。然后,私钥用于解密。
公钥加密技术的发展使得电子商务、网上银行等业务得以发展,并补充了经济中非常大的部分。它允许电子邮件具有一定程度的保密性,并使财务报表可以通过门户网站获得。它还使电子传输纳税申报表成为可能,它使我们有可能秘密地与可能完全陌生的人分享我们最亲密的秘密——你可能会说它使整个世界更加紧密地联系在一起。
由于公钥不需要保密,它允许诸如认证机构和 PGP 密钥服务器之类的机构发布用于加密的密钥,并且只有私钥的持有者能够解密用该发布的密钥加密的数据。用户甚至可以发布加密文本,这种方法将享受一定的匿名性——将加密文本放在新闻组、电子邮件列表或社交媒体上的群组中会导致它被许多人接收,任何窃听者都无法确定预期的接收者。这种方法在区块链世界也会很有意思——成千上万的节点镜像一个没有已知接收者的密码文本,也许是永远的,不可逆转的,并且接收者一方绝对否认。
公钥加密在计算上比对称加密更昂贵,部分原因是使用的密钥非常大。NSA 目前要求商业应用中的密钥大小为 3,072 位或更大,用于密钥建立,这是公钥加密的主要用途。相比之下,128 位加密通常被认为足以满足大多数加密应用,256 位是 NSA 的保密标准。
在大多数情况下,尽管可以单独使用公钥算法,但公钥加密最常见的用途是为会话的剩余部分协商一个对称密钥。在大多数实现中,对称密钥是不传输的,因此,如果攻击者获得一个或两个私钥,他们将无法访问实际的通信。这种特性被称为前向保密性。
一些协议,如用于远程访问计算机的 SSH,非常具有攻击性。在会话过程中,SSH 会定期更改密钥。SSH 还展示了公钥加密的基本属性——可以将您的公钥放在远程服务器上进行身份验证,而没有任何固有的保密性问题。
考虑到极大的(或无限的)计算资源,今天使用的大多数加密技术都不是不可破解的。然而,在需要保密的情况下,适合于保护数据任务的算法据说在计算上是不可能的——也就是说,破解加密的计算资源不存在,并且预计在不久的将来也不会存在。
签名
值得注意的是,虽然当加密数据以将其发送给给定的接收者时,私钥被用于解密,但是通常可以反过来进行。对于加密签名,私钥用于生成可以用为给定用户发布的公钥解密(验证)的签名。公钥加密的这种反向使用允许用户以明文形式发布消息,并高度确信签名者就是消息的作者。这再次引发了完整性的概念——如果用用户的私钥签名,消息(或交易)可以被认为是可信的。通常,在涉及区块链的情况下,当用户希望转移代币时,他们用钱包的私钥签署交易。然后,用户广播该交易。
现在,多签名钱包也相当普遍,在这种情况下,一项交易通常由多个用户签名,然后在托管钱包服务的 web 界面或本地客户端进行广播。对于分布式团队的软件项目来说,这是一个相当常见的用例。
散列法
与加密概念不同的是散列法(它存在于密码学中使用的许多机制中,如加密签名和身份验证),散列法是指一种确定性算法,用于将数据映射到固定大小的字符串。除了确定性之外,加密哈希算法还必须表现出其他几个特征,这将在本节中讨论。
正如我们将在下一节中看到的,散列函数必须是难以逆转的。大多数读过高中代数的读者都会记得因式分解的痛苦。乘法是一种很容易完成,但很难逆转的运算——找到一个大数的公因数要比把这个数作为乘法的乘积来计算要花费更多的努力。这个简单的例子实际上有实际应用。RSA 是一种广泛使用的公钥密码算法,它采用了两个素数相乘的适当大数,称为半素数或(不太常见的)双素数。
RSA 是公钥加密的黄金标准,支持 SSH、SSL 和 PGP 等电子邮件加密系统。建立在这样的运算基础上——一种方式很容易,另一种方式却很难——使得加密技术如此强大。
雪崩效应
健壮散列算法的一个理想特性被称为雪崩效应。输入的微小变化会导致输出的巨大变化。以下面三个使用输出重定向和大多数 Linux 发行版中都有的 GNU md5sum
实用程序的例子为例:
$ echo "Hills Like White Elephants by Ernest Hemingway" | md5sum
86db7865e5b6b8be7557c5f1c3391d7a -
$ echo "Bills Like White Elephants by Ernest Hemingway" | md5sum
ccba501e321315c265fe2fa9ed00495c -
$ echo "Bills Like White Buffalo by Ernest Hemingway"| md5sum
37b7556b27b12b55303743bf8ba3c612 -
将一个单词更改为完全不同的单词与更改单个字母的结果相同:每个哈希都完全不同。在密码散列的情况下,这是一个非常理想的属性。恶意黑客无法让它足够接近,然后尝试类似密码的排列。然而,我们将在下面的章节中看到,散列并不完美。
碰撞
理想的哈希函数没有冲突。冲突是两个输入产生相同输出的情况。冲突会削弱哈希算法,因为有可能用错误的输入得到预期的结果。由于哈希算法用于根证书的数字签名、密码存储和区块链签名中,具有许多冲突的哈希函数可能会允许恶意黑客从密码哈希中检索密码,从而访问其他帐户。充斥着冲突的脆弱哈希算法可能会帮助中间人攻击,使攻击者能够完美地伪造安全套接字层 ( SSL )证书。
上述示例中使用的算法 MD5 被认为不适用于加密哈希。谢天谢地,区块链在很大程度上使用了更安全散列函数,如 SHA-256 和 RIPEMD-160。
散列块
在 PoW 系统中,区块链的新条目需要计算散列。在比特币中,矿工必须计算区块中当前交易的两个 SHA-256 哈希,其中包括前一个区块的哈希。
这对于哈希算法来说非常简单。让我们简单重申一下:理想的哈希函数接受预期的输入,然后输出唯一的哈希。它是确定性的。只有一个可能的输出,并且不可能(或在计算上不可能)用不同的输入实现该输出。这些属性确保挖掘器可以处理一个块,并且每个挖掘器可以返回相同的结果。正是通过散列,区块链获得了对其采用和当前流行至关重要的两个属性:去中心化和不变性。
将当前块链接到前一个块和后一个块在某种程度上使得区块链成为一个不断增长的事务链表(为其提供了不变性的属性),并且哈希算法的确定性使得每个节点可以毫无问题地获得相同的结果(为其提供了去中心化)。
散列外部功率
除了工作证明之外,PoS 和 dpo 也利用散列,并且主要用于相同的目的。大量的讨论致力于 PoS 是否会取代电力,并防止我们运行数千台计算机进行兆瓦级的繁琐哈希运算,产生巨大的碳足迹。
PoW 系统似乎持续存在,尽管有相当困难的散列操作的功耗和环境影响。可以说,这种情况的原因非常简单:矿商有动力通过计算哈希值来验证交易,因为他们可以从系统中获得一定份额的新令牌。用于股权证明或分布式股权证明的更复杂的令牌组学方案通常无法通过气味测试。
以股票照片区块链项目的想法为例——我们称之为硬币罐。用户将照片贡献给一个库存照片网站,作为回报,他们会收到代币。代币也用于从网站购买股票照片,并且代币在交易所交易。
这似乎是可行的,这是一个完整的市场——can nister coin 已经确定了买家和卖家,并有一个匹配他们的机制——但它可能不是一个功能市场。这里的准入门槛很高:买家可以使用任何普通的股票照片网站,并使用他们的信用卡或银行账户。在这种模式下,买家需要注册一个交易所,并发送加密货币来换取令牌。
要做到真正的去中心化,这种经济模式缺少了一大块——也就是这种激励制度。什么激励见证人或验证人运行他们的机器并验证交易?
你可以给他们一些代币,但为什么他们中的许多人不立即出售代币以收回运行机器的成本呢?可以合理地预期,持续的抛售压力压低了许多 appcoin 加密货币的代币价格,这是一种耻辱。就处理能力而言,stake 系统的证明通常更好(以不太好的经济模型为代价)。
利害关系证明(或另一种机制)可能仍然会占据世界,但是,无论如何,你可以放心地期待密码世界做大量的散列。
摘要
区块链和加密货币的世界之所以存在,很大程度上要归功于上个世纪密码学的创新。我们已经介绍了加密技术在概念上是如何工作的,以及加密操作(特别是哈希)是如何构成区块链中幕后发生的大部分事情的。
在下一章,我们将在此基础上介绍比特币,这是第一个(也是最著名的)区块链应用。