Web3 中加密技术的现状

本文探讨了Web3中端到端加密(E2EE)的现状和挑战,重点介绍了非对称加密标准缺失、钱包实现不一致以及使用钱包生成熵带来的安全风险等问题。同时,文章分析了几种E2EE方案,包括钱包生成熵、Passkey PRF扩展和阈值密码学,并讨论了在构建利用E2EE的Dapp时可以采取的策略,旨在帮助开发者构建具有隐私保护功能的Web3应用。

Safe Research

隐私是 Safe Research 的核心支柱,也是以太坊密码朋克运动的核心原则。尽管它很重要,但端到端加密(E2EE)是隐私保护应用程序和数据主权的基本构建块,但在 Web3 生态系统中仍然不发达且未被充分利用。虽然最近在利用零知识证明和可信执行环境来实现 Web3 中的隐私方面取得了重大进展,但 E2EE 仍然是在不受信任或公共通道上的各方之间传输敏感数据的必要条件,并且是构建有影响力的、保护隐私的 dapps 的基本工具。

非对称加密

非对称加密,也称为公钥密码术,是一种加密方案,它使任何人都可以加密消息,但只有预期的接收者才能解密它。此方法的工作原理是生成一个密钥对:公钥可以自由分发并供任何人用于加密数据,而相应的秘密私钥用于解密数据。

发送加密消息 发送加密消息

非对称加密非常适合发送加密消息。接收者共享他们的公共加密密钥,以便任何发送者都可以加密只有接收者才能解密的消息。

Web3 加密方案的碎片化

不幸的是,Web3 中没有单一的非对称加密标准。虽然已经尝试标准化用于构建非对称加密的原语,但它们并未成功:

  • EIP-1024: 此 EIP 提出了 eth_getEncryptionPublicKeyeth_decrypt 的方法,但不幸的是,该 EIP 从未合并。虽然一些钱包实现了此 EIP,但大多数钱包后来都弃用了这些方法,理由是缺乏标准化以及安全问题

围绕 EIP-1024 提出的安全问题是,同一个密钥既用于在 secp256k1 曲线(例如,用于签署以太坊交易)上签名,又用于在 x25519 曲线(用于 EIP-1024 加密方法)上加密和解密。虽然对此设置没有已知的攻击,但尚未对其进行适当的研究,并且对使用没有已知健全性或安全证明的密码系统存在合理的担忧。

  • ERC-5630: 此草案 ERC 被提议作为已弃用的 EIP-1024 的替代方案。它实现了一个类似的 eth_getEncryptionPublicKey 函数,以及一个稍微不同的 eth_performECDH,它比 eth_decrypt 更灵活。虽然此 ERC 没有与 EIP-1024 相同的安全问题,但它几乎没有或根本没有被采用。

去中心化应用程序 (dapp) 中使用这些方法进行加密存在重大风险:你将使用非标准的钱包 RPC 方法,这些方法以略有不同的方式调用和实现:

  • MetaMask: MetaMask 弃用了对 eth_getEncryptionPublicKeyeth_decrypt 的 EIP-1024 支持,但提供了一个Snap 来实现相同的方法。Snap 没有相同的安全问题(因为它使用与帐户用于签名的主私钥不同的密钥进行加密)。

  • Ledger: Ledger 在其硬件钱包中添加了对 EIP-1024 的支持,对签名和加密使用相同的派生密钥。

虽然 Ledger 和 MetaMask 是 Web3 中非常流行的钱包,但非对称加密的当前状态远非理想:

  • 并非所有钱包都实现所需的 RPC 方法;这意味着 dapps 将需要仅支持一小部分钱包才能利用 E2EE。

  • 不同的实现以不同的方式派生秘密加密密钥,这意味着用户的助记词在 E2EE 方面在钱包之间不可移植,可能会丢失对其加密数据的访问权限。

使用钱包生成的熵

另一种可移植的 E2EE Web3 方法,最初由 3Box 开创,现在由 Ceramic Network 开创,是使用标准的钱包 RPC 方法来确定性地生成一些熵 - 一种计算上攻击者无法猜测的随机性来源 - 它与用户的钱包相关联。这种“确定性随机性”(如果我听到过的话,这是一个矛盾!)用于创建加密密钥对:共享公钥,以便任何人都可以在钱包上加密消息,而私钥仅在 dapp 中用于解密这些消息。“随机性”确保攻击者无法暴力破解你的私有加密密钥并解密用户的秘密数据,而“确定性”方面确保你始终从同一钱包生成相同的加密密钥。

使用钱包生成的熵加密消息 使用钱包生成的熵加密消息

最常用的生成熵的方法是请求签名。因为以太坊钱包使用 RFC 6979 确定性签名,所以对于完全相同的消息,相同的帐户将始终生成完全相同的签名。然后,dapp 将选择一个特定的授权消息,一旦签名,将确定性地生成一个加密密钥对,供 dapp 使用。

示例加密授权消息 示例加密授权消息

这种机制的明显优势在于,它可以跨所有兼容的钱包移植,因为它仅依赖于标准的钱包 RPC 方法(特别是 eth_signpersonal_sign - 有关两者之间复杂历史和关系的更多信息,我建议你查看 Dan Finlay 的 MetaMask 中 eth_sign 的历史)。但是,这种增加的可移植性带来了严重的安全缺点:加密密钥在 dapp 中实现。

  • 如果由于任何原因泄露了私钥,那么攻击者可以解密为相应公钥加密的所有过去和将来的消息。

  • 这种加密方案使用户容易受到网络钓鱼策略的攻击:恶意应用程序可以请求用户签署与合法应用程序相同的授权消息,以便网络钓鱼用户的加密密钥。虽然签名域可以包含在授权消息中(如上例所示),但很容易忽略消息中的 URL 并确认签名;将你的加密密钥泄露给恶意 dapp。前一个安全缺点进一步放大了这一点,即泄露的密钥允许攻击者解密所有过去和将来的消息。

请注意,可以通过使用 使用以太坊登录 (SIWE) 并指定一个与你的 dapp 相关的域来缓解此网络钓鱼向量。许多钱包,包括 MetaMask,都对 SIWE 提供了额外的支持,并且会警告或禁止来自与消息不匹配的域的登录请求。这有助于防止恶意网站网络钓鱼 SIWE 签名,因此有助于保护用户的加密密钥。

密钥 PRF 扩展

伪随机函数 (PRF) 扩展是 Web 身份验证 (WebAuthn) API 的最新增补,它支持密码密钥。它是一种专用的标准化机制,用于提供与密码密钥凭据关联的加密熵。PRF 扩展基于广泛支持的客户端到验证器协议 (CTAP) hmac-secret 扩展,并且专门针对“生成对称密钥”用例而设计。事实上,age(一种流行的文件加密工具)使用此扩展使用密码密钥加密文件,而 LUKS(Linux 上全盘加密的事实标准)使用底层 通过 FIDO2 硬件Token(如 Yubikey)进行文件系统加密。

话虽如此,PRF 仍然不是非对称加密的理想解决方案,并且并非为此用例而设计。加密密钥仍然在 dapp 中实现,并且此密钥的泄漏与使用签名作为熵一样成问题。然而,使用密码密钥 PRF 扩展的显着优势在于,密码密钥凭据与它们使用的域绑定。因此,恶意 dapp 不可能能够访问其他 dapp 中使用的凭据和熵,这可以防止加密密钥的网络钓鱼并消除了与使用 eth_sign 作为熵源相比的主要攻击向量之一。

阈值密码学

最后,另一种在 Web3 中越来越流行的技术是阈值加密,因为其背后的技术日趋成熟。

  • Shutter 使用它来屏蔽内存池交易,仅在提交交易以包含在区块中后才显示它们。

  • Lighthouse 存储协议 使用阈值加密在 Filecoin 上存储文件,仅为授权用户解密文件。

这允许以安全的方式进行加密,该方式既可以在钱包之间移植,又不需要在 dapp 中直接构建密钥。然而,这带来了增加去中心化阈值加密协议复杂性的巨大代价(阈值加密网络中的去中心化节点,加密和解密用户数据的经济激励,在数据不应解密时解密数据的惩罚机制等)。

构建利用 E2EE 的 Dapps

Web3 中的 E2EE 具有挑战性。目前没有单一的理想解决方案;实施者必须选择支持数量有限的钱包,每个钱包的实现略有不同,或者采用虽然可移植但会引入潜在安全问题或显着增加复杂性的方案。

话虽如此,仍然可以使用 E2EE 构建保护隐私的 dapps。具体来说,根据你的威胁模型和加密数据的性质,使用钱包或密码密钥生成的熵来生成加密密钥将能够构建可移植且安全的 dapp。此外,可以使用一些策略来降低与直接在 dapp 中实现密钥相关的风险:

  • SIWE 或密码密钥 PRF 扩展可以通过将加密密钥绑定到特定的 dapp 域来缓解网络钓鱼攻击向量。

  • 密钥分离和轮换可以直接构建到 dapp 中。这将使用户能够为不同的消息主题生成不同的密钥,同时允许在怀疑密钥泄露的情况下轻松轮换密钥。总而言之,这大大降低了泄露敏感信息的风险。

  • 使用 IPFS 或类似的内容寻址系统来托管 dapps,确保 dapp 代码的真实性和完整性,并缓解供应链攻击。

随着 Web3 生态系统努力采用未来的加密钱包标准,我们仍然可以主动构建有影响力的、保护隐私的 dapps,并利用当今的端到端加密。

非常感谢 Joel Thorstensson (@joelthorst) 和 Sebastian Bürgel (@SCBuergel) 花时间与我们讨论该主题并提供周到的反馈!

关于 Safe Research

Safe Research 是 Safe 的应用研发部门,致力于推进自托管堆栈。我们的工作基于 安全抗审查隐私 的密码朋克原则,我们专注于为智能帐户和钱包构建无需信任、以用户为中心的基础设施。

  • 在我们的 论坛 中讨论这篇文章

让我们一次提交一个,实现以太坊最初的密码朋克愿景。


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

0 条评论

请先 登录 后评论
Safe Wallet
Safe Wallet
The Ownership Layer. Largest smart account ecosystem on the EVM | 200+ projects building with Safe | $100B+ in value secured