守护者密钥用法

本文档描述了Guardian Key的用法,以及如何避免消息混淆。

Guardian Key 的使用

目标

  • 描述 guardian key 是如何使用的,以及如何避免消息混淆。

背景

当 Guardian 签名了一个消息,然后攻击者在其他地方重放该消息,并将其解释为不同的消息类型时,可能会发生消息混淆,这可能导致意想不到的行为。

概述

Guardian Key 用于:

  1. 签署 gossip 消息
    1. heartbeat
    2. governor config 和 governor status
    3. observation request
  2. 签署 Observation
    1. Version 1 VAAs
  3. 签署 Guardian 身份
    1. Wormchain 账户注册
  4. 签署 Accountant observation
    1. Token Bridge
    2. NTT
  5. 签署 Query 响应

详细设计

签署 gossip 消息:

  1. 将消息类型前缀添加到 payload
  2. 计算 payload 的 Keccak256Hash。
  3. 计算 ethcrypto.Sign()

签署 Observation:

  • v1 VAA: double-Keccak256(observation)

理由

  • Gossip 消息不会与其他 gossip 消息混淆,因为消息类型前缀被添加。
  • Gossip 消息不会与 observation 混淆,因为 observation 使用了 double-Keccak256,并且强制 payload >=34 字节。

使用的前缀

<!-- cspell:disable -->

acct_sub_obsfig_000000000000000000| // token bridge accountant observation
ntt_acct_sub_obsfig_00000000000000| // ntt accountant observation
governor_config_000000000000000000| // gossip governor config
governor_status_000000000000000000| // gossip governor status
heartbeat|                          // gossip heartbeat
signed_observation_request|         // gossip signed observation request
mainnet_query_request_000000000000| // query request (mainnet, not signed by guardian)
testnet_query_request_000000000000| // query request (testnet, not signed by guardian)
devnet_query_request_0000000000000| // query request (devnet, not signed by guardian)
query_response_0000000000000000000| // query response
query_response_0000000000000000000| // query response
signed_wormchain_address_00000000|  // wormchain register account as guardian

<!-- cspell:enable -->

  • 原文链接: github.com/wormhole-foun...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
wormhole-foundation
wormhole-foundation
江湖只有他的大名,没有他的介绍。