区块链是一个安全话题吗?

再一次,我们需要理解系统和业务如何协同工作,并坦诚地面对两者是否匹配。
865 位读者喜欢这篇文章。
How OpenChain can transform the supply chain

互联网档案馆书籍图像。 由 Opensource.com 修改。 CC BY-SA 4.0

目前,区块链是热门话题。 有会议、初创公司、展览、开源项目(事实上,几乎所有区块链的东西都是开源的——看看以太坊、Zcash 和比特币作为例子);我们现在只需要由潮人经营的区块链主题咖啡馆。1如果您正在寻找初步概述,您可以参考 维基百科条目——但这并不是这篇文章的目的。

在我们进一步深入之前,了解许多区块链项目的一个有用的事情是,它们并不是真正的区块链。 它们更准确地说是分布式账本。4 然而,现在让我们把区块链和分布式账本技术混为一谈,并假设我们在谈论同一件事:现在这样做会更容易,而且在大多数情况下,对于我们的讨论来说,差异并不重要。

我并不打算在这里深入探讨基本知识,但我们应该简单地谈谈密码学和区块链之间的主要联系,那就是区块本身。 为了构建一个区块——一组要放入区块链的交易——然后将其链接到区块链中,使用了加密哈希。 这是各种区块链与密码学之间最明显的关系。

然而,还有另一个同样重要的关系,那就是关于身份。5 现在,对于许多基于区块链的加密货币来说,使用它们的一个主要目的就是身份在一个层面上并不重要。 在加密货币中有许多参与者,他们可能彼此传递极小或令人瞠目结舌的大量资金,他们不需要知道彼此的身份才能进行交易。

更清楚地说,每个参与者的唯一性绝对重要——我想确保我将钱发送给刚刚为我提供服务的实体——但能够将该唯一身份与特定的人 IRL6 联系起来不是必需的。 用专业术语来说,这样的系统是匿名的。 现在,如果匿名性是系统的关键部分,那么保护该属性可能对用户很重要。 加密货币在不同程度上成功地做到了这一点。 这里的教训是,如果您计划使用加密货币,并且此属性对您很重要,那么您应该认真阅读和研究。

另一方面,有许多区块链/分布式账本技术不需要匿名性,甚至可能是不需要的。 从专业的角度来看,我通常对这些类型的系统最感兴趣。

特别是,我对许可区块链感兴趣。 无需许可(或非许可)区块链是指您不需要任何人的许可即可参与的区块链。 您可以明白为什么匿名性和无需许可的区块链今天可以很好地结合在一起:大多数(全部?)加密货币都是无需许可的。 然而,许可区块链是另一回事,它们是许多企业现在正在关注的。 在这些情况下,您知道将要参与的人或实体——或者,如果您现在不知道,您需要在他们加入您的区块链(或分布式账本)之前检查他们和他们的身份。 这就是区块链在业务中很有趣的原因。7 这不仅仅是因为身份很有趣,尽管它确实很有趣,因为如何将特定实体与身份联系起来,并确保这种绑定在系统的整个生命周期内都不会被欺骗是困难、困难、难上加难8——但这不仅仅是这些。

真正有趣的是,如果您正在考虑迁移到具有许可参与者的许可区块链或分布式账本,那么您将需要花一些时间思考 信任。 您不太可能使用工作量证明系统来制作区块——在许可系统中几乎没有意义——那么谁来决定什么构成系统其余部分应该同意的“有效”区块? 好吧,您可以轮流选择一些(或全部)实体,或者您可以进行随机选择,或者您可以选择少数几个超级信任的实体。 这些方案的组合也可能有效。

如果这些实体都存在于您控制的一个信任域中,那很好,但如果它们是分销商、客户、合作伙伴、其他银行、制造商、半自治无人机或商业车队中的车辆呢? 您真的需要确保您编码到您的实施/部署中的信任关系真正反映了您与系统中代表的实体之间的法律和 IRL 信任关系。

问题是,一旦您部署了该系统,就可能很难回溯、调整或重置您设计的信任关系。 如果您不考虑我上面提到的关于身份长期绑定的问题,那么当发生以下情况时,您将会遇到一些严重的问题:

  • 实体被欺骗
  • 实体破产
  • 实体被另一个实体收购(收购、兼并等)
  • 实体迁入不同的司法管辖区
  • 立法或法规发生变化。

这些问题都可以在现有的法律框架内得到很好的解决(第一个问题可能除外),但在我们通常在本文中关注的系统类型中,这些问题更难以管理。

请不要将上面提到的问题与如何将法律协议映射到区块链/分布式账本系统中的所谓“智能合约”的问题混淆。 这是另一个棘手(而且,说实话,并非不相关)的问题,但这个问题直接触及系统本身是什么的核心,这也是人们在采用最新流行语技术时需要认真思考他们真正想要实现的目标的原因。 再一次,我们需要理解系统和业务如何协同工作,并坦诚地面对两者是否匹配。


1 如果你遇到其中一个,请告诉我。 在评论中放一张照片或类似的东西。2

2 更好的是——自己开一个。 确保我收到开幕邀请。3

3 而且一切免费。

4 有人在网上就此争吵过。 我不参与。

5 还有其他的,但我会留到以后再说。

6 IRL = "in real life"(在现实生活中)。 我太老派了。

7 对我来说。 如果您已经读到文章的这里,我希望您也有同样的机会。

8 我将此作为留给读者的练习。 看一下它,以及它所基于的 电视剧。 除非你不喜欢说脏话,在这种情况下不要看任何一个。

本文最初发表在 Alice, Eve, and Bob—a security blog 并经许可重新发布。

User profile image.
我自 1997 年左右以来一直从事开源工作,并且自那时起一直在家庭和工作中将 (GNU) Linux 作为我的主要桌面:并非总是那么容易...... 我是一名安全专家和架构师,Enarx 项目的联合创始人,目前是一家初创公司的 CEO

4 条评论

我想从一个大胆的声明开始:如果您的用例是许可的,那么_您描述的那种区块链是错误的工具,无论是否采用工作量证明。_

中本聪的白皮书非常出色,因为它解决了一个长期存在的问题:在无需许可的环境中对异步网络达成分布式共识。

在许可环境中对同步和半同步网络达成分布式共识早已得到解决 - Paxos、Raft 和许多其他协议占据了这个领域。 其中一些 - 例如拜占庭 Paxos - 提供比中本聪的系统_更严格_的弹性保证。

最近,异步网络也得到了解决,Andrew Miller 的 Honey Badger BFT 协议脱颖而出 [1] [2]

因此,“_许可_环境中的分布式共识”领域有很多选择 - 而且,_这些选择比您描述的具有更好的属性_。

您描述了一个协议系统,您_必须_选择某个参与者,一旦做出选择,您就会陷入他们添加的内容的后果。 简而言之:选出一个独裁者,他只能在下次选举前制定一项法律。

但是,我描述的所有协议都是_适当的共识协议_ - 为了使转换有效(即“将区块添加到链中”,尽管这仅仅是人们可能选择的_一种表示_),必须有法定数量的参与者同意。 在这里,该组验证_更改_,直接对法律进行投票,而不是选择独裁者。 一旦将条目添加到账本中,它就立即有效。

中本聪式区块链的赢家通吃性质迫使人们采用_更弱_的一致性概念 - 在这种概念中,链的最新区块只是暂时有效,并且随着它们被其后继区块覆盖,对它们的信任度会增加。_在许可环境中,这是不必要的_。

然而,您提出的几乎所有担忧都_深深地基于_这种有缺陷的模型 - 一种导致信任问题、效率低下以及对更改何时持久存在不确定的模型。 用更好的模型取代它比为不应该做出的选择而苦恼要干净得多。

此外,使用默克尔化链表(即区块链)本身就是一种_次优表示_的账本 - 对安全日志的研究已经提供了更好的结构,这些结构可以抵抗默克尔化链表无法抵抗的攻击(例如截断),并且支持更高效的验证,占用空间也更小。[3]

[1] https://eprint.iacr.org/2016/199
[2] https://github.com/amiller/HoneyBadgerBFT
[3] https://eprint.iacr.org/2017/949

非常有帮助和周到的回复:非常感谢。

回复 ,作者是 Alex Elsayed (未验证)

Mike,非常好的文章。您说的很对,要使许可链(permissioned blockchain)成功,您必须事先做好关于信任的功课。我在全球活动中撰写过供应商和分销协议,必须仔细考虑各方潜在变化的细节。

在一个较小的方面,我认为文章中的一个词可能错了(我自己可能也错了)。请注意这句话“在这些情况下,你知道将要参与的人员或实体——或者,如果你现在不知道,你需要在他们加入你的区块链(或分布式账本)之前检查他们及其身份。”我认为您指的是“know”而不是“now”。

我也写了一篇关于区块链的文章,并且一直在寻找错别字。

谢谢,Ron。采取书面协议的方法很有意义,并且听起来是一种迫使人们考虑可能发生哪些变化的好方法。

关于你的第二点,我_确实_打算将“now”与“know”一起使用。我打算表达的意思是“如果你现在这一刻不知道,那么...”。希望这有帮助。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

找到完美的开源工具

项目管理、商业智能、报告等等。 查看这些热门项目。

© . All rights reserved.