DFINITY密码学研究副总裁 : 互联网计算机全新的链锁技术 | DFINITY上线发布会

在互联网计算机中,计算机是由一组协议驱动的,这些协议允许网络扩展几百万个节点,可以为Canister提供可扩展且无限的计算能力。链锁技术是互联网计算机协议的核心。那么链锁技术具备哪些优势?链锁协议具体是如何工作的?链锁技术又具有哪些创新性?有关链锁协议的技术细节,DFINITY密码学研究副总裁JanCamenisch在《互联网计算机全新的链锁技术》演讲中为我们揭开了神秘面纱。欢迎继续阅读经Odaily星球日报整理的演讲全文,enjoy~大家好,我是来自DFINITY的JanCamenisch,这个演讲是关于链锁技术的。在互联网计算机中,计算机是由一组协议驱动的,这些协议允许网络扩展几百万个节点,可以为Canister提供可扩展且无限的计算能力。

链锁技术是互联网计算机协议的核心,实际上,这一组协议是我们开发的特殊边缘密码系统。链锁技术最明显的部分是互联网计算机具有单个公钥,利用单个公钥可以验证来自感兴趣计算机发送的关于该单个公钥的信息,这是互联网计算机一个巨大的优势。因此如果要进入互联网计算机,只需要一个48字节的公钥即可验证所有的消息。相比之下,以太坊客户端需要下载至少400GB的数据才能达到同样的效果。

现在让我们进一步解释一下链锁技术,为了扩展互联网计算机,实际上不是所有的节点都运行在相同的Canister中,而是我们必须将Canister分布在不同的节点,或在不同的子网上,我们称这一系列子网为网络神经元。其中有一个子网是特别的,因为它控制和支配着其他子网。

而我所说的单一的公钥,实际上是管理所有其他子网的公钥,以及用于生成所有其他提供密钥的子网。我们生成公钥,生成容器证书,以及该子网的其他主要部分。

与链锁技术一样,NNS可以从零开始,现在当用户与NNS进行交互时,NNS用他们的Canister进行计算,并接收来自该计算的结果,他们可以通过在这些结果的子网签名来验证这一点。关于子网公共密钥,子网公共密钥可以使用子网从NNS获得的证书进行验证,这就像是链锁技术的两个部分。第一部分就是我们刚才讲的,更高级别的子网可以为其他子网生成私钥;第二部分是从NNS接收私钥的子网如何管理这些私钥。节点可能会崩溃,因而需要更换;节点也可能会受到危害,所以需要剔除。在这两种情况下,需要在新的节点集合之间重新共享子网已接收的私钥,因此为了维护子网所收到关键信息,我们使用了ThresholdSignature,这种特殊签名实际上是一种听起来像是一组必须一起运行的算法。首先我们有一个生成私钥的算法,这就像有一个被信任的经销商不断产生公钥和私钥,然后分发给不同的参与者,当大部分的参与者同意签名后,这些部分签名可以组合成相对于原始公钥的完整签名,并进行验证。

如何在链锁技术中实现上述过程呢?一种方式是:你需要一个非交互式的密钥生成算法门限签名方案的标准密钥生成算法,需要一个拥有因特网计算机的可信的老经销商,这不太可能实现,因为我们不想信任任何一方。

为了解决这个问题,我们提出了一些新的有效的密码学。它允许两件事:首先,它允许经销商无需交互直接生成这些密钥,经销商产生了密钥和公钥,但不同的是密钥是为各方编写的,在我们的示例中这里的线索是数据,还生成非交互式加密图形证明。实际上,与生成的公钥也匹配,我们实际上开始了非交互式证明,任何一方都可以验证共享是否正确。第二部分是该共享方案的数学性质,即两个不同的份额可以合并成一个共享,如果你有两个或两个以上的经销商,接收交易对可以做一个数学同态运算,我们称之为公钥合并,不同的公钥成为一个单一的公共密钥,他们也可以在密钥上做同样的操作,从而产生一种新的共享,一种组合共享。正如我们已经知道的,所有的分享都是正确的,因为这些神经知识的证明,这种同态组合实际上将确保只要一个经销商做得正确,那么我就没有泄露这个密钥,那总体组合的密钥也将是安全的,因为它们包含足够的随机性。这种同态操作的优良特性是:它将确保只要单个共享被正确地完成,即密钥被随机地生成,并且不会在任何地方泄漏,那就结合生成了密钥和公钥。因此,这允许互联网开始新的子网,以生成子网的密钥。更确切地说,NNS的每一个节点都会做这样的分享,把信息传递到新的节点上。

现在我们讲第二部分,节点必须维护他们最初从NNS收到的密钥信息,现在因为不能具体联系,彼此间也将用加密的方式传递,我们就需要第二个加密图形工具,但不是生成新的密钥,他们需要证明他们的密钥加密信息与共享密钥是一致的,然后将其提供给所有其他节点,而一旦达到一定要求门槛,全部节点可以重新对外分享一个新的密钥。

下面我们看下,如何使用非交互式的方法重新恢复子网中丢失的密钥。例如,我们示例中有四个节点,其中一个崩溃了,丢失了所有状态,丢失了所有密钥信息,因为我们使用的是四个密钥共享方案中的三个,所以剩余的节点仍然可以操作,此时NNS将分配新的节点到子网,再次将其存储到四个节点中。但是,如果丢失的是两个节点,那就是灾难了。

另一方也注意到,这就像是他分享的一个密钥,对于这一点以及原始记录,我们保证了新节点集合的保密性,这四个节点采用了非吸引特性的免费共享技术。在此之后,四种新节点中的每一种都将具有与公钥相对应的密钥共享,这就是我们如何从子网中替换掉那些已经崩溃的节点,并保持其继续运作。对于那些密钥信息还不具备资格加入的节点,其如果想加入一个子网,需要具体:首先全部私钥必须同意其加入子网;子网对其状态验证并授权;包含最近的全部区块状态。由于单个节点不可信,因此节点必须一起验证最新状态,然后我们设置一个联合状态即新节点,我们将确定接收到的状态实际上是真正的状态,即开始的正确状态。这些操作消耗都非常大,我们不能每一轮都做,我们需要在指定的时间间隔内进行,在这个间隔中我们产生认证状态,把这两个放在一起,我们称之为Catchup包。它允许节点跟上其他节点,并与它们一起操作,这个Catchup包实际上非常强大,因为它们不仅不允许我们更换,而且它们还允许恢复节点,因此如果节点没有崩溃但可能由于其他原因而离线,如果时间太长了,那要赶上前面的节点,可以下载最新的catchup包,然后解压并恢复操作。

在灾难性的情况下,超过三分之一的节点会崩溃或失去它们的状态,即便如此,我们也能够恢复子网。只要我们还有一个Catchup包,NNS就可以拿那个Catchup包,只增加一个新分享的密钥,因为之前的不再有效,然后从原始的Catch-up包开始,创建一个新的子网。此外,可能最重要的是Catch-up包还允许我们升级协议,因为Catchup包定义了子网的明确状态。我们可以说在某个Catch-up包之后,所有新节点都会下载新的协议版本,并从该Catchup包运行新的协议版本,非交互式dkg和密钥再共享,或者仅仅是变更技术的两个要素。

链锁技术的核心是共识协议,协调所有协议的差异共识。它的主要任务是收集和评估来自用户的消息,并让它们得到执行,但它也必须协调非互动的组织和所有不同节点之间的重新分享,确保计算正确完成。即使一些问题发生了,比如硬盘故障或一些其他小故障,这个容器的一些部分问题不会影响到命令执行;但仍然涉及其协调状态的恢复和同步,从而协调所有的升级,从给定的丢失状态开始。另一个有趣的特征是,共识协议实际上还提供了恢复随机性应用,我们将很快就所有这些细节进行技术讨论,我们也将公布有关这方面的规格。总之,链锁技术使互联网计算机能够拥有一个单一的公钥,可以使用公钥来验证接入网络的计算机;链锁技术还允许NNS添加新的子网并永远扩展网络;如果有太多节点失败,链锁技术可以再激活一个子网;链锁技术还可以替换崩溃的节点;最后链锁技术还可以更新IC协议,修复Bug,以及添加新的功能。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:0ms0-3:382ms