找回密码
 立即注册

扫一扫,登录网站

首页 自媒体 查看内容
  • 1517
  • 0
  • 分享到

译文 | 分散式公钥基础设施

2018-10-6 23:07

来源: zcblockchain

综述

当今的互联网把在线身份的控制权交给第三方。电子邮件地址、用户名和网站域名是通过DNS、X.509和社交网络借用或“租借”的。这导致了整个互联网范围内严峻的可用性和安全性问题。


本文描述了一种可能的替代方法,称为分散式公钥基础设施(DPKI),它将在线身份的控制权返还给所属的实体。通过这样做,DPKI解决了许多困扰传统公钥基础设施(PKI)的可用性和安全性问题。



以下为译文全文



摘要


当今的互联网把在线身份的控制权交给第三方。电子邮件地址、用户名和网站域名是通过DNS、X.509和社交网络借用或“租借”的。这导致了整个互联网范围内严峻的可用性和安全性问题。本文描述了一种可能的替代方法,称为分散式公钥基础设施(DPKI),它将在线身份的控制权返还给所属的实体。通过这样做,DPKI解决了许多困扰传统公钥基础设施(PKI)的可用性和安全性问题。DPKI在PKI生命周期的每个阶段都有优势。它使得在线身份无许可引导成为可能,并提供了更强大的SSL证书的简单创建。在使用中,它可以帮助“Johnny”最终加密,这要归功于公钥管理降级为安全的分散数据存储。最后,它还包括恢复丢失或受损标识符的机制。


1、简介——为什么是DPKI


互联网促进了全球个人之间的通信和交易,通过诸如电子邮件地址、域名和用户名等标识符进行的。但谁来控制这些标识符?如何管理?他们之间的安全通信是如何促进的?


当今,第三方机构(如DNS注册服务机构,ICANN,X.509证书颁发机构(CA)和社交媒体公司)负责创建和管理在线标识符以及它们之间的安全通信。不幸的是,这种设计显示出严重的可用性和安全缺陷。


1.1 在线标识符的控制和管理


在设计DNS和X.509PKIX时,互联网无法以可靠、分散的方式就注册管理机构(或数据库)的状态达成一致。因此这些系统指定可信第三方来管理标识符和公钥。几乎所有的互联网软件都依赖这些权威机构。因此,网站域名并不属于注册它们的组织(注意:它们属于第三方,如ICANN、域名注册机构、证书颁发机构以及任何能够影响、强制或入侵它们的任何人)。同样,网站上的用户名并不属于这些用户。


这些可信第三方(有时缩写为TTP)作为可破坏的中心故障点,每个都可能危及整个互联网的完整性和安全性。由于这些标识符的控制权被赋予TTP,因此其可用性也受到影响。这些与可靠性和可用性有关的问题会导致其他问题:


  • 一些公司花费大量资源来解决由行为不当的CA导致安全漏洞;

  • 许多网站仍然不支持HTTPS;

  • 对于大多数网民来说,真正安全和用户友好的交流仍然遥不可及。 [参考:“为什么约翰尼不能加密”


由于所有这些原因,DPKI的基本原则是身份属于它们所代表的实体。这就需要设计一个分散的基础设施,其中每个身份不是由可信第三方控制,而是由其主要所有者控制。


1.2 通信的安全性


通过安全传递公钥来保护通信安全。这些密钥对应于身份。这些身份所代表的实体(称为主体)使用相应的私钥来解密发送给它们的消息,并且证明他们发送了一条消息(通过用私钥对其进行签名)。


PKI系统负责公钥的安全传送。但是,常用的X.509 PKI、PKIX破坏了这些密钥的创建和安全传递。


1.2.1第三方面临的挑战:寻找“正确的密钥”


在X.509 PKIX中,通过创建由CA签署的密钥来保护Web服务。然而,在PKIX中生成和管理密钥和证书的复杂性导致网络托管公司自己管理这些密钥的创建和签署,而不是将其留给客户。这从一开始就产生了重大的安全问题,因为它导致私钥在CpoF(网络托管公司)的积累,使访问该密钥存储库的任何人都可能以几乎无法察觉的方式破坏与这些网站的连接的安全性。


X.509 PKIX的设计还允许世界各地约1200个CA模拟任何网站。CA的强制或危害的风险使情况进一步复杂化。由于这些危险,用户无法确定他们的通信是否会被允许进行MITM(中间人攻击)的欺诈证书所破坏。这些攻击非常难以发现; 像谷歌这样生产网页浏览器的公司有时可以识别自己网站上的攻击,但它们无法阻止对任意网站的攻击。



解决方法已经被提出。HPKP是一种IETF标准,它允许网站告诉访问者在一段时间内“扣住”他们收到的公钥(忽略任何其他密钥)。但是这种机制对于网站管理员来说很难使用,因此在实践中可能不会使用太多。HPKP容易受到“敌意锁定”的攻击,如果密钥需要被合法替换,则存在破坏网站的风险。更糟糕的是,HPKP的某些实现使第三方在没有用户同意的情况下覆盖任意指针的做法变得轻而易举。


1.3 PKI的可用性


即使可以信任权威第三方,目前的PKI系统也存在重大的可用性问题。 Brigham Young大学的一个小组调查了Mailvelope的可用性,Mailvelope是一种浏览器扩展,支持通过Gmail等第三方网站进行GPG加密通信。他们的研究表明参与者之间的安全通信尝试失败率高达90%。研究发现,公钥管理是用户无法正确使用软件的主要原因。


TextSecure / Signal - 由爱德华斯诺登认可的安全和信息易用性的安全邮件系统——由于无法顺利处理公钥更改而具有可用性问题。如果用户删除并重新安装应用程序,他们的朋友将被警告其公钥“指纹”已更改。这种情况与MITM攻击无法区分,很少有用户能够理解或费力去验证他们是否收到了正确的公钥。


1.3.1消息泄露的危险

 

由于传统PKI的可用性挑战,今天大多数网络交流都是未签名和未加密的。这在主要的社交网络上尤其明显。由于PKI的复杂性,社交网络不会以任何方式加密用户的通信,除了依靠PKIX通过HTTPS发送它们。由于消息未经过签名,因此无法确定用户是否真正说出他们所说的内容,或显示的文本是否是数据库泄露的结果。类似地,用户通信以能够访问这些数据库的任何人都可以读取的方式存储——损害用户隐私并增加具有巨大责任风险的社交网络。


2、DPKI解决网络信任问题


答案不是放弃PKI,而是寻找替代方案:DPKI,未来的分散式公钥基础设施标准。


DPKI的目标是确保与PKIX不同,没有任何一个第三方可以整体损害系统的完整性和安全性。通过技术使信任分散,使地理和政治上不同的实体能够就共享数据库的状态达成共识。DPKI主要关注分散的key-value数据存储,称为区块链,但它完全能够支持其他提供类似或具有更安全属性的技术。


被称为矿工(或验证节点)的第三方依然存在,但它们的作用仅限于确保区块链(或分布式账本)的安全性和完整性。这些矿工通过遵循议共识协议得到财政激励。偏离协议会导致经济惩罚,而遵守共识协议通常会产生经济回报。由中本聪创造的比特币是第一个这样成功的协议。它基于工作证明,其中“矿工”的能量消耗用于保护数据库。


通过在区块链中注册标识符,可以给主体直接控制和全局可读标识符(如网站域)的所有权,像任何其他类型的交易一样。在key-value数据存储中(注意:在这种情况下,“key”是指数据库查找字符串,而不是公钥或私钥),主体使用标识符作为查找密钥。


同时,区块链允许为这些标识符分配任意数据(如公钥),并允许这些值以安全的方式在全局可读,而不易受PKIX中可能出现的MITM攻击的影响。这是通过将标识符的查找值链接到该标识符的最新和最正确的公钥来完成的。


在该设计中,对标识符的控制将返回给主体。对于任何一个实体来说,破坏整个系统的安全性或者破坏不属于它们的标识符不再是微不足道的。这就是DPKI如何解决困扰DNS和X.509 PKIX的安全性和可用性问题。


区块链及其共识协议的完整描述超出了本文的范围。第5节“标识符和公钥的安全性”讨论了它们的一些安全属性,附录“轻客户端详细信息”描述了如何从不具有区块链完整副本的移动设备安全地访问这些区块链中的数据。


3、DPKI威胁模型


与传统的PKI系统一样,DPKI假定一个持续的活跃对手Mal经常试图欺骗一个主体Alice信任另一个主体Bob的错误密钥。这可以采取以下形式:发现Bob的错误标识符(例如,在twitter.com上找到错误的帐户)或在识别出标识符后缓存错误的密钥。


假设Mal是一个计算有限的对手,他能够破坏或强迫集中的可信PKI方欺骗Alice信任错误的密钥。这已经被证明是可行的,例如DigiNotar的案例,以及国家行为者迫使其辖区的CA签署无效密钥的情况。此外,假设Mal能够改变或阻止Alice和Bob之间交换的消息的结合率(小于100%)。这在今天也是可行的,并且通过ISP级别的审查,请求重新定向以及为了破坏现有文件共享技术(如BitTorrent)而执行的的数据包修改攻击来证明来自已知Tor出口节点的黑洞数据包,并阻止HTTP访问政治敏感材料。


鉴于Mal的权力,DPKI的两个设计原则变得明显:


  • 如前所述,每个主体必须完全控制其当前的标识符/公钥绑定。如果只有主体可以修改他们的标识符,那么Mal就会被迫攻击他希望破坏的每个主体。这与传统的PKI形成对比,在传统的PKI中,Mal只需要破解一个CA来欺骗许多主体。

  • 该系统必须完成全有或全无的任何进展:每个主体必须见证其他主体对其标识符/公钥绑定的更新,否则无人会观察到任何更新。这如果她检查某些主体的更新,则需要通过向整个网络警告其存在来防止Mal可能的网络级攻击。这使得针对特定用户或密钥对的针对性攻击成本极高,因为它确保了Mal可以攻击任何人的唯一方法是立即攻击每个人。


正如已经建议的那样,DPKI通过使用安全的分散式key-value数据存储库来实现这些设计原则,以承载标识符和公钥哈希之间的绑定。有关详细信息,请参阅第5节“标识符和公钥的安全性”。


4、注册和标识符


如前几节所述,DPKI的核心是分散式key-value数据存储,可用作标识符注册表,允许主体的公钥与其标识符安全关联。只要该注册仍然有效并且主体能够保持对其私钥的控制,任何第三方都不能在不诉诸主体直接胁迫的情况下取得该标识符的所有权。


DPKI没有规定应该使用哪种类型的标识符,并且认识到可能的不同方法(例如,用户名或UUID),这些方法在易用性、持久性、唯一性、安全性和其他属性方面可能不同。


对于DPKI使用分散式key-value存储,必须具有以下属性:


  • 无权写入。任何主体都可以广播符合语法规则的消息。系统中的其他对等体不需要准入控制。这意味着一种分散的共识机制。

  • 叉选规则。鉴于两个更新历史,任何主体都可以通过检查确定哪一个是“最安全的”。


这些需求可以通过区块链来满足,例如Namecoin,Ethereum,甚至可能是比特币(通过Blockstore等技术)。


4.1 DPKI注册要求


在DPKI中处理标识符注册的方式与DNS不同。虽然注册商可能存在于DPKI,但他们必须遵守DPKI的目标所产生的若干要求,以确保身份属于他们所代表的实体:


  • 私钥必须以分散的方式生成,以确保它们在主体的控制之下(例如,通过主体设备上的开源客户端软件)。这意味着明确禁止代表主体在服务器上生成密钥对的注册服务。否则将重新出现第一节“简介 - 为什么是DPKI”中提到的问题。

  • 软件必须确保主体始终控制其标识符和相应的密钥。主体可将其标识符的控制权扩展到第三方(例如,为了恢复目的),但这必须始终是需要明确的、知情的决定,而不是软件的默认、隐含或误导行为。永远不要以不安全的方式存储或传输私钥。

  • 软件必须尽可能确保不存在允许单个实体在未经其同意的情况下剥夺其标识符的主体的机制。这意味着:


在区块链内创建了命名空间后(例如,通过以太坊的智能合约),就无法销毁它。同样,命名空间不能包含允许任何人使不属于它们的标识符无效的黑名单机制。


注册和更新标识符的规则必须是透明的,并且必须以一种简单的、难以忽略或误解的方式(例如先到先得、拍卖)表达给用户。特别是,如果注册受到过期政策的约束,则必须明确告知主体,这可能导致主体失去对标识符的控制。


一旦完成设置,就不能更改命名空间规则以引入更新或更新标识符的任何新限制,否则可以在未经其同意的情况下从主体中控制标识符。同样,不能修改用于更新或升级标识符的客户端软件以引入用于更新或更新标识符的新限制。


默认情况下,用于管理标识符的软件必须确保用于创建、更新、恢复或删除标识符的所有网络通信都是通过分散的对等机制发送。这同样是为了确保单个实体(如注册服务商)无法阻止升级或更新标识符。


我们推荐DPKI基础设施也努力确保:


  • 至少有一类标识符一旦正确注册后就不会过期。

  • 至少有一类中立注册政策可供所有公众以及希望提供注册服务的任何服务提供商使用。


4.2 DPKI注册机制


注册标识符可能具有与其相关联的两种类型的密钥:用于注册和更新与标识符相关联的数据的密钥对,以及与标识符(子密钥)相关联的公钥。


建议主体使用子密钥对消息进行签名。它们可以直接或间接存储在数据存储区中:


  • 直接存储意味着公钥本身直接存储在DPKI数据存储中。对于大多数区块链来说不太可能,因为一些密钥非常大,大多数区块链不可能存储它们或非常昂贵。

  • 间接存储意味着指针(例如,URI)与公钥指纹一起存储(或其本身包含公钥指纹)。


5、标识符和公钥的安全


在DPKI中,标识符通常是查找密钥,其映射到只能由具有相应私钥的实体(或多个实体)修改的值。在这样的系统中,可能发生的最坏情况是:


  • 发送查找密钥的过期值响应查找。

  • 标识符的所有者由于审查而无法更新其值,并且一旦标识符到期,他们就会失去所有权。


通过使用轻客户端(稍后讨论)和审查规避工具,可以解决这些问题。


虽然可能性极低,但也可能为标识符发送错误值。例如,如果通过工作证明保护的区块链具有能够压倒诚实节点并且在注册点之外反转历史的对手,则可能发生这种情况。但是系统的所有参与者都能够检测到这种攻击,因为它会导致一条长链的孤立。


这种问题最有可能来自区块链的集中化,这是一个更大的安全问题。


5.1 防止集中化


权力下放的程度对系统的安全起着重要作用。集中式系统易受到操纵、审查和危害的影响。它们代表了用户必须信任的单点故障。当集中式系统出现故障时,所有用户都失效。


虽然区块链可能从分散开始,但并不一定会以这种方式结束。这意味着需要一个简单的衡量标准,告诉我们“分散式数据存储”是否仍然是分散的:


你必须敲多少门才能与危害系统用户?


我们可以通过计算以下实体来粗略地定义用于测量大多数区块链分散的度量标准(每个实体在集中时对整个系统起单一故障点):


  • “开发者”——控制区块链行为(源代码)的参与方数量。

  • “节点”——区块链副本的数量,由完整节点的数衡量。

  • “验证者”——区块链矿工/验证者的数量,负责创建新区块和授权交易。


由于任何一个组织的损害导致系统的损害,我们将区块链的分散定义为:


Decentralization(Blockchain) = MIN("Devs",“Nodes”, “Validators”)


更通俗的说,用户可以通过它提供的服务质量(QoS)来推断数据存储的分散。例如,如果用户注意到他们突然无法更新其标识符,这可能表明由于集中化而导致的审查。


5.1.1 防止集中化的数据存储不可知协议


如果DPKI将特定区块链指定为其“事实上分散式数据存储”,那么它就会对区块链产生集中压力。更糟糕的是,如果由于对链条缺乏兴趣而导致区块链被废弃,那么使用事实上的数据存储可能会破坏DPKI。对特定区块链进行编码支持的软件开发人员将不得不花费大量精力重写该软件以迁移到不同的区块链。同时,可能存在严重的安全问题或QoS问题。


因此,使用不可知协议访问分散数据库是确保DPKI整体功能和分散的基本要求。如果不同的数据存储更好地满足其需求,则不可知协议使用户和开发人员能够更轻松地进行迁移。仅仅存在这种可能性就会产生分散的数据存储市场,以满足用户的需求。


5.2 安全访问区块链数据


大多数终端设备由于所需的资源而无法运行完整节点,那么客户端如何安全地访问该区块链?


一种解决方案是是进行区块链版本的融合,其中一组“区块链公证人”告诉用户区块链维护的特定对象的状态,并且客户端软件检查一组可信的公证人之间的一致性协议。然而,这条路线可能会破坏区块链技术的主要目的:消除对可信中介的需求。


幸运的是,还有另一个技术解决方案:轻客户端协议。轻客户端下载区块链的较小部分,足以提供比可信中介提供更强的安全保证,且足够小以供任何现代设备使用。附录“轻客户端详细信息”中讨论了轻客户端协议如何工作的详细示例。


对于缺少轻客户端的区块链,默认值应该是基于可信节点的随机抽样的类似收敛的一致共识。这些节点都应该看到相同的链,所以即使其中一个节点不一致,则表明有什么不对劲并且应该报告事件。


一般来说,这表明采用模块化设计,设备可以与任意区块链通信并使用该链可用的最安全技术。没有单一技术提供最大的安全性,在这种情况下,最少数量的技术可以组合起来以提供设备维持的最高安全级别。


5.3 防止审查制度


最后,DPKI的安全性必须解决审查问题:最终用户是否可以访问数据存储。如果ISP正在审查区块链,则区块链无用。


诸如网状网络、代理和洋葱路由之类的审查规避技术可用于绕过区块链网络的审查。


一个单独但相关的问题是对区块链引用的数据进行审查,例如当哈希值存储在标识符的值中,该哈希值表示的数据存储在别处。在这种情况下,除了在各种不同的存储机制上查找哈希之外,还可以使用相同的技术(例如,洋葱路由,代理)[参见IPFS,Blockstore]。


6、恢复丢失的标识符 - 私钥管理


标识符的强大可靠的所有权可以使这些标识符非常有价值。标识符可用于验证用户的房门、车等。这些标识符开始代表“王国的钥匙”。如果这些标识符丢失或受损,那将是灾难性的。因此,解决这个问题对DPKI的成功至关重要。


6.1 两种形式的丢失


由于其重要性,必须通过建立在DPKI之上的任何身份系统来最小化主密钥的使用。事实上这是如Blockchain ID等身份系统已经采用的方法。不使用主密钥对消息进行签名,而是为与标识符一起使用的每个新服务创建子密钥。


这意味着有两种类型的密钥可能会丢失或泄露:


  • 主私钥,用于控制与标识符关联的数据。丢失此密钥可能意味着失去对在线身份的控制权。

  • 子密钥,链接到标识符并存储为标识符数据的一部分。


主密钥和子密钥的安全性和恢复属性略有不同。以下是两种可能性的概述; 对这个主题的完整处理超出了本文的范围,留待未来进行。


6.2 恢复主密钥


控制标识符的主密钥的人是标识符的主人。


有多种机制可用于在分散系统中恢复主密钥。


6.2.1 重组主密钥分片


通过将主密钥碎片分发给可信实体,主体可以防止主密钥丢失。Shamir 秘密共享和阈值签名是两种可用于生成和重组这些分片的技术。


如果发生丢失,主体将向M个实体索要N个主密钥的分片。N是恢复所需的不同分片数。收到N个分片后,主密钥将被成功恢复。



然而,这种技术在主密钥泄露的情况下对保护主体没有多大作用。


6.2.2防止损害


损害的危险来自于任何时间点拥有主密钥的单个实体。我们可以通过确保任何单一实体在任何时间点都不拥有主密钥来解决此问题。


例如,我们可以设想一个系统,在注册时,用户可以选择他们信任的五个实体来保护他们的身份。这些实体可以由可信任的人、组织或甚至设备来代表。虽然他们像权威一样行事,但他们从不强迫任何人,而且总是由主体自己挑选。


然后主密钥短暂生成,分解成碎片,发送到这些实体,并立即销毁。可以使用阈值签名方案来代替Shamir秘密共享,以便永远不需要在任何给定设备上完全重新组合主密钥。


6.2.3使用智能合约


一些区块链(如以太坊)支持任意计算。在这种情况下,主体可以建立与其偏程度成比例的恢复机制。


作为一个简单的例子,像Google这样的公司可以通过使用智能合约来更新其价值的命名空间来保护他们对区块链域的控制。智能合约只有在接收到由10个实体中的6个签名的消息时才能够编码,或者遵循任何其他任意逻辑。


6.3 恢复和/或撤销子密钥


与主密钥的丢失或损害相比,子密钥泄露或损失不太重要,因为验证通常使用标识符的当前子密钥集来完成。如果子密钥丢失或受损,主密钥可以简单地用于安全地生成和替换区块链中的旧子密钥。但根据它们的使用方式,旧的子密钥可能仍然需要恢复或撤销。


如前所述,主密钥的重要性意味着通过标识符的子密钥签署的消息进行身份验证,而不是通过主密钥签名的消息进行身份验证。但由于这些消息通常与标识符本身相关联,因此它们实际上是由主密钥签名的(因为主密钥直接与标识符绑定)。因此,主密钥仍可用于签署和传播撤销一个或多个历史子密钥的消息。


可以使用先前描述的分片机制来恢复丢失的子密钥。或者与上述基于分组的恢复方案一样,主体可以选择将其标识的权限指定给一个组。该组可以将新子密钥签名为属于标识符,并且能够签署指示旧密钥被泄露并因此被撤销的消息。


7、结论


在本文中,我们讨论了如何通过全局可读的标识符(如网站域名)在线管理身份。我们在互联网的两个主要身份管理系统中发现了各种安全和可用性问题:DNS和X.509 PKIX。我们确定这些问题的根源是这些系统的集中性质,他们阻止了标识符代表的实体真正控制它们,从而使第三方有危害其安全的可能性。


然后,我们展示了如何通过使用分散key-value数据存储(如区块链)来解决DNS和PKIX的安全性和可用性问题,从而为分散式公钥基础结构(DPKI)创建规范。在描述DPKI的属性时,我们发现DPKI甚至可以在资源受限的移动设备上运行,并且能够通过保护组织免受私钥丢失或损害来保护标识符的完整性。


我们未来的工作是通过像IETF这样的互联网标准机构为DPKI制定完整的规范。


附录:轻客户端详细信息


信息类型


轻客户端想要知道什么样的信息?


以下是一些例子


  • 确定创建或首次看到特定记录的时间

  • 查找当前与帐户ID关联的公钥

  • 查找当前与域名关联的IP地址和其他数据

  • 了解密钥的撤销(没有指定的查找替换密钥的过程)

  • 确定开发人员为特定软件包发布的最新版本


更通俗的说,我们可以将其分解为三类问题:


  • 证明存在:证明在T时刻发生了特定类型事件。

  • 证明不存在:证明在时间T_1和T_2之间没有发生特定类型事件。

  • 证明状态:证明应用程序的“状态”,可能是复杂的“状态转换”规则的结果,应用了许多事务,在时间T等于X。


这些大致按照难易程度的顺序排列。证明存在是最容易的,证明状态是最难的。


安全等级


一般来说,区块链上层的轻客户端协议可以提供三个级别的安全性:

  • 最高安全性:如果轻客户端进行查询,并且任何节点以对该查询的有效回复进行响应,则(假设我们可以检测到阻止预防攻击),轻客户端可以立即学习(i)查询的正确答案,或(ii)答复无效,应予以忽略。

  • 1-of-N信任安全性:如果轻客户端进行查询,并且它被接受为安全假设,即至少一个诚实的节点在T秒内正确响应,则轻客户端可以在T秒后学习正确答案,无论有多少离线/故障/拜占庭节点。

  • N/2-of-N 信任安全性:如果轻客户端进行查询,它必须选择信任响应的一组节点(比如100),然后从该列表中随机抽样3个左右的节点并要求一致响应。只要所有3个节点不共谋,它就会得到正确的答案。如果任何节点处于脱机状态,它可以继续随机搜索在线节点,直到它检查到某个节点的上限阈值,并在达到该阈值时发生严重故障并出现错误。


作为这些模型如何应用的示例:请考虑“查找与帐户关联的当前公钥”的简单情况,假设存在一个有权撤销和替换密钥的主密钥(或一组主密钥)。假设我们有一个区块链,其中只有交易被放置在Merkle树中。然后,轻客户端发送请求,要求网络提供替换公钥的最近事务的Merkle证明。如果客户收到答案,它知道:


  • 使用最高安全保证,这是过去某个时刻的有效密钥。这是“存在证明”问题。

  • 使用1-of-N信任安全保证,这仍然是有效的密钥。(从理论上讲,可能存在更新的替代交易,但100%的合谋或审查可能导致客户从未了解过它)。这是“不存在证明”问题。


对于具有更复杂需求的协议(例如,实施复杂的名称注册规则),我们被迫处理更普遍的“证明状态”问题。如果我们使用只跟踪事务的简单区块链,客户端只能通过N / 2-of-N信任安全保证知道答案。但是,如果我们有一个区块链,状态位于Merkle树中,那么客户端可以绝对地学习任何具有最大安全保障的事实。


由于不同区块链对Merkle证据的使用程度不同,我们提出的解决方案是开发一种抽象协议,通过该协议可以使用不同的区块链(因为没有单个区块链被100%保证不会有致命缺陷,我们需要一个类似于用于加密算法选择的抽象模型),并根据区块链的功能自动尝试提供最佳安全级别。公证人可以作为支持者使用,但是会存在区块链插件,客户端可以安装这些插件来支持特定的区块链。根据区块链是否支持针对特定类型问题(存在证明,证明状态等)的强大安全保证,智能地进行区块链查询,从而提供尽可能多的安全性。


轻客户端协议


轻客户端协议通常分两个阶段工作。


首先,轻客户端仅下载链的一部分,通常是块头。对于包含元数据的每个块,块头通常包含非常少量的信息(通常为80-600字节),例如(i)工作随机数证明; (ii)加密哈希树的根,例如Merkle树,包含诸如交易之类的数据; 和(iii)区块链可能跟踪的应用程序的状态。


其次,客户端使用区块链的基础共识算法(例如检查工作证明或证明签名)来验证块头。之后,客户端将块头视为“可信”。它应用加密技术,将块头中的数据用作“根哈希”,从中可以验证关于存储在区块链中的其余数据的声明。


获取块头


瘦客户机端的首要任务是下载并验证块头。假设有一个有效的网络连接,这很容易。例如,在工作量证明的情况下,客户端向网络请求尽可能多的块头,网络回复,并且客户端检查以确保每个块头具有有效的工作证明,然后确定“最长”的有效块头(其中“最长”表示“代表最累积的工作”)。存在更高级的使用跳过列表的协议,以至于客户端甚至不需要下载每个块头,尽管对此的深入讨论超出了本文的范围。


这种机制面临的主要挑战很简单:如果网络连接受到威胁会怎样?潜在地,互联网服务提供商可以通过审查告诉客户端关于官方链的回复来攻击用户,并告知用户他们自己的分支。通过工作量证明协议,可以通过注意到块生产率的降低来统计检测到这一点; 然而,需要更多的研究来确定最佳和最可靠的方法。


用Merkle树进行验证


在轻客户端成功接收到一小段“可信”数据后,它必须能够验证关于区块链中其余数据的声明。这依靠Merkle树。 Merkle树是一种散列算法,其中大量“数据块”一次散列几块,然后将所产生的散列放入小组中,并且递归地散列直至该过程生成一个哈希值,称为根。这个简单的描述显示如下:



这种方法的好处是可以通过Merkle分支来证明树中任何单个数据块的成员资格,Merkle分支是树中节点的子集,其值用于计算根哈希的过程。


只有这组节点,轻客户端就可以验证树中特定块是否具有特定的证据。该方案能够确保抵碰撞; 为了让攻击者欺骗该方案,攻击者需要打破底层的哈希函数。有许多不同种类的Merkle树,包括简单的二叉树和更高级的设计,如Merkle Patricia树,允许有效的插入和删除操作,但基本原理是相同的。

版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。
相关新闻
发表评论

请先 注册/登录 后参与评论

    回顶部