硬件钱包安全:必须检查硬件设备显示的内容

  • cyfrin
  • 发布于 2天前
  • 阅读 109

本文章深入探讨了硬件钱包在交易签名中的安全性,并强调用户在签署任何信息或交易时必须仔细验证显示的关键信息。通过理解EIP-712标准和校验数据,用户能够有效避免诈骗和安全漏洞,保障数字资产安全。

了解在你进行签名之前,你的硬件钱包必须显示的内容。验证消息和交易中的关键信息以避免诈骗,因为安全性始于你自己。

在区块链安全领域,硬件钱包仍然是防止未经授权访问数字资产的最强大防御之一。然而,正如最近几起高调的安全漏洞所示,它们的安全性不仅仅依赖于设备本身——它取决于 用户在这些设备上签名时验证交易的能力

在最近的一段视频中,Cyfrin 的首席执行官和安全研究员 Patrick Collins 解释了每个硬件钱包用户应该知道的内容:签名时必须在屏幕上显示的必要细节

了解这些提示可能意味着保护你的资产和成为黑客受害者之间的差异。

验证的重要角色

最近的 $14亿美元的Bybit黑客事件 清楚地提醒了我们项目的风险。即使使用多签名钱包设置,要求三人分别批准,交易所仍然被一个复杂的攻击破坏,该攻击欺骗了签署者。屏幕上接口显示了清晰、合法的交易细节。但 实际上发送到硬件钱包的数据包含了隐藏的恶意指令

这个漏洞强调了区块链安全中的一个基本法则:绝不要仅根据屏幕上看到的内容签名交易。始终验证你的硬件钱包被要求批准的实际操作。

注意: 尽管消息和交易在钱包界面中的外观可能类似,但它们的用途不同。消息 是链外签名,用于事务如 Safe 批准,而 交易触发实际的链上操作。两者都需要仔细验证但出于不同的原因。

签名消息:理解 EIP-712

大多数现代区块链签名遵循EIP-712标准,它将消息数据组织为结构化的人类可读格式。当你签名一条消息时,该过程涉及三个组成部分:

  1. :识别上下文,通常是请求签名的应用或服务。

  2. 类型:定义消息中使用的结构和数据类型。

  3. 消息:包含被签名的实际值,与定义的类型相匹配。

EIP-712 数据三个组成部分的视觉分解:域、类型和消息。

EIP-712 数据需要的三样东西;来源:YouTube视频:你在硬件钱包上签署的是什么?

这三个组件,类型消息,一起哈希产生最终摘要。该摘要即为你的私钥实际签署的内容。在 Safe 多重签名钱包的情况下,此摘要称为 Safe交易 哈希,或 SafeTxHash

显示如何派生和组合域和消息哈希以产生 EIP-712 摘要 (SafeTxHash) 的信息图。

SafeTxHash 的构造方式;来源:YouTube视频:你在硬件钱包上签署的是什么?

硬件钱包在签名消息时应显示的内容

在签名消息时,硬件钱包应提供 足够的信息 以验证所签名的内容。以下任何一种信息都是可以接受的,但有些验证起来更容易:

  1. 理想:最终摘要或 SafeTxHash

    • 这是你的密钥将签署的单个哈希值
    • 使用外部工具最容易验证
  2. 良好:单独的消息哈希和域哈希

    • 当组合时,它们产生最终摘要
    • 接近于最终哈希的验证
  3. 可接受但繁琐:整个数据结构

    • 显示所有的域、类型和消息数据
    • 包含所有必要信息,但需要大量阅读和人工验证

图表说明全 EIP-712 数据验证比域和消息哈希更困难,而后者产生更易读的 SafeTxHash。

验证签名需要什么?;来源:YouTube视频:你在硬件钱包上签署的是什么?

例如,Ledger Flex 显示了域哈希和消息哈希以及以可读格式显示的完整数据结构。

Ledger硬件钱包屏幕显示域哈希和消息哈希,以及文本说明这是进行签名验证的良好做法。

来源:YouTube视频:你在硬件钱包上签署的是什么?

验证签名的工具

对于需要验证签名数据的用户,尤其是在多签名设置(如Safe)中,有几种工具可以帮助:

  • Safe 提供了一个网页界面,可以计算预期的交易哈希。

Safe Wallet 的 UI 截图,显示详细的交易参数,包括哈希、目的地和用于用户验证的原始 calldata。

在 Safe{Wallet} 验证交易数据;来源:Safe

  • 如果你希望减少依赖,Cyfrin 提供了一个命令行工具,允许用户独立生成哈希。

源自 Cyfrin 的 safe-tx-hashes GitHub 库的截图。

来源:Cyfrin 的 safe-tx-hashes GitHub 库

签名交易:calldata的重要性

当你发送交易时,你不仅是在确认身份——你正在授权在区块链上执行实际指令。这使得calldata在检查和理解时至关重要。

交易签名引入了 与简单消息签名相比独特的一组验证挑战。虽然两者都涉及加密签名,但它们的用途不同。

在某些系统中,如 Safe 多重签名,签署消息是多步过程的一部分,最终会产生链上交易。在其他系统中,例如登录应用程序或签署链外投票,消息签名从未被跟随链上交易。

签名交易时必须显示的内容

至少,硬件钱包必须显示:

  • 目标(“to”) 地址 接收交易的智能合约或钱包。始终确认是否是预期的接收方。

  • 网络信息: 你正在与之交互的区块链(例如,以太坊主网、Arbitrum 等),以确保你处于正确的网络上。

  • 网络费用: 执行交易的总成本,通常以 ETH 或区块链的原生代币表示。

  • Gas 参数: 包括 gas 限额和 gas 价格;这些控制交易可以使用多少计算以及处理速度。

  • Nonce 一个唯一数字,用于保持交易顺序并防止重放攻击。

  • Calldata:你的交易将执行的低级指令,检查功能调用、参数以及潜在的风险标志,例如 DelegateCall

理想情况下,钱包还应 解码 calldata 为人类可读的格式。然而,由于解码并不总是完美,一些安全研究人员可能更喜欢同时接入 解码后的和原始版本

硬件钱包交易示例

Trezor Safe 5的屏幕截图,显示交易输入的原始 calldata。

来源:YouTube视频:你在硬件钱包上签署的是什么?

  • Grid Lattice Plus 进一步 解码 calldata(尽管理想情况下还应该提供查看原始数据的选项)。

Grid Lattice Plus 的屏幕截图,显示功能调用的解码 calldata。

来源:YouTube视频:你在硬件钱包上签署的是什么?

Bybit 黑客案:缺失验证的案例研究

鉴于最近的Bybit交易所黑客事件,这些指导显得更加紧迫。尽管使用了多签名设置,Bybit的签名者批准了一个包含多个风险标志的恶意交易,这些风险标志本可以通过适当的硬件钱包验证发现:

  • 目标地址 指向一个在几天前才创建的未经验证的智能合约。

  • 一个操作参数设为 1, indicating a DelegateCall,这是一个风险较高且有时会被滥用的函数。

  • 输入数据 被设计成看起来合法,同时悄悄执行恶意代码。

如果签名者在他们的硬件钱包上查看完整的 calldata,并知道应该注意哪些内容,他们可能会在损害发生之前 发现这些异常

安全交易签名的最佳实践

根据这些信息,针对硬件钱包用户(特别是那些管理资产的用户)出现了几个 最佳实践

  1. 始终验证签名数据:在签署消息时(例如,在 Safe 多签名中),确认域、类型和消息哈希(或 SafeTxHash)与你的预期匹配。

  2. 彻底检查 calldata:对于交易,检查原始 calldata。了解该功能的作用、调用对象和使用的参数。

  3. 使用独立验证工具:不要仅依赖你的计算机屏幕。使用可信工具或浏览器来解码和验证交易细节。

  4. 了解该注意什么:了解足够的常见以太坊操作(如 DelegateCall、代币转账和合约创建),以便识别出异常。

  5. 选择合适的硬件钱包:使用能够清晰显示所有相关细节的设备:目标地址、网络、gas 费用和原始 calldata。对于那些同时提供解码摘要并允许你切换视图的钱包,附加得分。

结论

签署消息 时,你的硬件钱包必须提供足够的细节以验证你到底批准了什么。至少,它应显示:

  • :请求签名的应用或服务
  • 类型:数据结构定义
  • 消息:被签名的值

理想情况下,它应显示最终的 SafeTxHash域哈希和消息哈希 组件,为你提供额外的保障。

签名交易 时,要求更为深入。你的硬件钱包应显示:

  • 目标(“to”)地址
  • 网络信息
  • Gas参数
  • calldata:发送到区块链的实际指令

安全的钱包解码 calldata 为清晰的人类可读动作。但对于希望保持完全控制和透明度的高级用户,访问 原始 calldata 仍至关重要。

由于复杂的攻击持续针对主要协议,这些验证能力是基本的安全要求。理解 该注意什么以及如何验证 你钱包显示的信息可能是安全与妥协之间的差别。

在这个基础上,你可能想了解如何使用 Cyfrin 的 safe-tx-hashes 来 验证 calldata

对于那些希望提升其区块链安全技能的人,Cyfrin 的 安全与审计课程 提供了识别和防止此类攻击的全面培训。

外面小心,始终验证你的交易。

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

0 条评论

请先 登录 后评论
cyfrin
cyfrin
Securing the blockchain and its users. Industry-leading smart contract audits, tools, and education.