Skip to main content

安全投票签名

安全投票签名#

此设计描述了其他投票签名行为,它将使该过程更加安全。

当前,Solana实现了一项投票签名服务,该服务会评估每个投票,以确保它不违反罚没的条件。 取决于硬件平台功能,该服务可能稍微不同。 特别是,它可以与安全区域 (例如SGX) 结合使用。 Enclave 可以生成非对称密钥,为用户(不受信任的) 代码公开API以签名投票交易,同时将投票签名私钥保留在其受保护的内存中。

以下各节概述了此体系结构的工作方式:

消息流#

  1. 节点在启动时初始化enclave

    • 快速生成非对称密钥,并将公钥返回给

      节点

    • 密钥对是短暂的。 节点启动时会生成一个新的密钥对。 一个

      新的密钥对也可能会在运行时

      根据待确定的密钥对进行生成标准。

    • Enclave 将其证明报告返回给节点

  2. 节点执行enclave 的证明(例如使用Intel的IAS API)

    • 节点确保Secure Enclave在TPM上运行

      并且是由受信方签名

  3. 节点的质押者授予临时密钥许可以使用其质押。

    这一过程有待确定。

  4. 节点的不受信任的非安全区软件调用受信任的安全区软件

    使用其界面来签名交易和其他数据。

    • 在投票表决的情况下,节点需要验证PoH。 PoH验证

      是签名不可或缺的一部分。 Enclave 会

      在签名投票之前提供一些可验证的数据来进行检查。

    • 确定在不受信任的空间中生成可验证数据的过程

PoH 验证#

  1. 当节点对条目X投票时,存在一个锁定期N,因为

    它无法在其历史记录中不包含X的分叉上投票。

  2. 每次节点对X的导数投票时,让它为X+y,则

    锁定X的周期增加了F因子(即持续时间节点无法对

    不包含X增加的分叉进行投票)。

    • X+y的锁定期仍为N,直到节点再次投票为止。
  3. 锁定期的增加上限为(例如,系数F最大为

    32)。

  4. 签名区域不得签名违反该政策的投票。 这个方法

    意味着

    • 快速初始化为NF因子上限

    • Enclave存储 因子上限 节点上的条目 ID 数量

      先前投票

    • 的签名请求包含新投票的条目ID

    • Enclave验证新投票的条目ID是否在正确的分叉上

      (遵循上述规则 #1 和 #2 )

祖先验证#

这是另一种验证投票分叉的方法,尽管这种方法不太确定。 1. 验证节点在集群中维护一个活动节点集 2. 观察上一个投票周期活动集中的投票 3. 存储每个节点投票的祖先/上一次滴答 4. 发送新的投票请求进行投票签名服务

  • 它包括来自活动集中节点的先前投票及其

    对应的祖先

    1. 签名人检查先前的投票是否包含来自验证节点的投票,

      并且投票祖先与大多数节点匹配

  • 如果检查成功,它将签名新的投票

  • 如果检查不成功,则断言(引发某种报错)

前提是验证节点最多可以被伪装一次,对不正确的数据进行投票。 如果有人劫持了验证节点并提交了对虚假数据的投票请求,那么该投票将不会包含在PoH中(因为它将被集群拒绝)。 验证节点下一次发送签名请求的签名时,签名服务将检测到验证节点的最后一票丢失了(作为

见上文第5点的一部分)。#

分叉确定#

由于速度太快无法处理PoH,因此无法直接知道已提交验证节点投票的分叉历史。 每个enclave都应使用当前的公开密钥的活跃集来启动。 验证节点应提交其当前投票以及在其先前投票中观察到的活动集(包括自身) 的投票。 这样,enclave可以在验证节点上次投票的同时进行投票,从而对分叉进行投票。 验证节点最初提交的投票是不可能的,因为它没有‘上一个’插槽供参考。 为了解决这个问题,应该暂时冻结投票,直到第二次投票提交为止,在初始投票的高度,其中包含活动集中的投票及其自身的投票。

Enclave 配置#

质押的客户端应该是可配置的,以防止对不活跃的分叉进行投票。 该机制应该使用客户端的已知活动集N_active以及阈值投票N_vote和阈值深度N_depth来确定是否继续对提交的分叉进行投票。 此配置应采用这样的一种规则,以便客户端仅在N_depth观察到超过N_vote的情况下才对分叉进行投票。 实际上,这代表客户端确认它已经观察到一定深度的提交分叉的经济最终性,如果该分叉最终没有被使用,则额外的投票将需要锁定一段不必要的时间。

难点#

  1. 第一代可验证数据在不受信任的空间中

    用于PoH验证区块。

  2. 需要将质押临时授权密钥的基础设施。