对于第一次接触 Web3 的 Web2 用户来说,初次上手的体验(客气地说)是不大愉悦的。传统的 EOA 钱包需要经过钱包生成,私钥管理,保存助记词等一系列复杂繁琐的流程。下一代无助记词钱包试图通过抽象私钥和助记词来解决这个摩擦点,只需点击几下就可以使用常用的 Web2 社交账号登录,实现一套更熟悉的登录流程。因此,无助记词钱包是 Web3 迈向大众普及的重要进步。
钱包提供方实现无助记词钱包的一种方式是完全中心化的账户托管解决方案。然而,这与 Web3 应用的初衷背道而驰。正确的解决方案不应该以用户失去对账户的所有权和自托管为代价,来达到抽象化的便利性。而应该根据用户的需求在两者之间取得适当平衡。
我们正处于将 Web2 消费者引入 Web3 的拐点。登录流程将在下一阶段的增长中至关重要。因此,创造一种既符合 Web3 去中心化的精神,又具备 Web2 的便利性和互操作性的登录和账户管理体验至关重要。
正因为登录和账户管理体验如此重要,我们一直在密切关注 Web3 账户基础设施的创新。许多开发者也想了解Web3用户登录的**进展和我们对钱包的看法。本文正是为此而来。
取舍:无助记词密钥管理 VS 自主保管
最近所有钱包产品的迭代都可以通过它们对两个主要但相互牵制的特性的追求进行分析:无助记词密钥管理和自主保管。无助记词密钥管理是新用户无缝进入 Web3 的基础。这意味着用户不需要助记词或私钥就可以在新环境中登录账户。因此,他们的进入流程和账户管理是抽象的,类似于 Web2。
从技术层面上来说,这种抽象是通过钱包提供方将客户账户的权限委派给服务器或第三方来实现的。例如,Magic Link 要求用户获得(官方)授权后才能访问加密密钥,并使用主密钥(由 AWS 上的中心化托管服务 H 保护)进行解密。其它方法则是通过将私钥拆分为多个片段并将它们存储在不同的位置来减少暴露整个密钥的风险,从而实现更大程度的去中心化。
显而易见,用户需要在无私钥和自主保管两个特性之间作出取舍,这对许多加密货币使用者来说很重要(如果不是完全神圣不可侵犯的话),理由也很充分。当钱包服务依赖于第三方时,这些第三方就拥有审查交易,甚至接管资产的权力。它们可能会受制于政府监管和干预。对服务提供商依赖程度较高的钱包服务,在发生恶意攻击或事故时也更容易中断。
那么,如何在无私钥和自托管这两者间权衡以获得**用户体验呢?对于 Web3 应用程序,我们可以假设其首要目标是无缝转化 Web2 用户,他们习惯于使用用户名/密码或社交登录,但不会立即拥有大量的链上资产。而接下来,随着用户资产的增长,他们往往对安全性和去中心化有更高的要求,此时开发人员应该考虑对两种特性的权衡进行调整升级。
找到正确的平衡:现有无助记词钱包的比较
基于上述框架,我们对一些有代表性的无助记词钱包进行了调研,并根据它们的自主保管程度和其它相关因素对进行了分析。这些钱包是:MagicLink, Web3Auth, Particle Network, Sequence, UniPass 。
安全云存储、MPC 和智能合约等新技术丰富了新一代钱包的设计空间,为用户带来一系列管理和使用其 Web3 账户的新功能。以上针对 EOA钱包 的改进方案对用户体验有不同程度的改善(如图 1 所示)。
诸如 Metamask、Imtoken 和 Phantom 等 EOA 钱包是最本地化与独立的钱包,当然不可避免也是使用体验最繁琐的类型。用户需要学习如何安全保存他们的助记词或私钥,以及如何使用它们将账户导入到新设备中。账户地址来源于私钥,如果私钥丢失或被盗,账户地址将被**锁定或无法访问。
最直接的替代方案是使用托管服务。例如Magic Link。托管人可以仅通过电子邮件或社交登陆授予账户访问权限。然而,托管服务的便利性往往伴随着密钥安全风险和中心化风险。
更复杂的方法通常涉及 MPC(SSS、TSS),如 Web3Auth 和 Particle Network。通过将密钥拆分为几个部分,登录时必须由多个密钥持有者进行身份验证,从而分散了管理权,降低了集中化的风险。
除此之外,也有成功者将智能合约结合在MPC之上,引入了账户管理逻辑,允许用户重构或重置由 MPC 管理的主密钥,进一步降低了中心化风险。账户管理逻辑的核心就是选择所谓的守护人,以实现深度自定义,消除对钱包服务提供商或特定守护人的依赖。
除了处理无助记词密钥管理和自主保管之间的取舍之外,这些无助记词钱包还可以从用户体验的六个维度进行评估。
- Gas 费用:创建智能合约账户在链上产生的 Gas 费用(常规使用的 Gas 费用接近 EOA 钱包)
- 延迟:创建和导入过程花费的时间(例如,由于是链上的过程,智能合约钱包通常需要更长的时间)
- 更换设备的便捷性:平滑地切换到一个新的环境或设备
- 安全性:单点故障的存在,包括任何单独的一方,如服务提供商或集成前端,是否有能力暴露、重构或重置完整的密钥或凭据,以完全控制账户
- 托管:服务可用性和抗审查能力(即服务对服务提供者的依赖性以及托管者是否能够访问或冻结客户的账户)
- 功能性:能够实现额外的账户管理逻辑(例如,资助 Gas 费用、多签名、委托签名)
在这些补充因素中,比起 Gas 费用、延迟和附加功能这些显著影响用户体验的因素,安全性和托管因素对用户来说相对是无感的。
然而,安全漏洞或服务中断等偶然事件可能对企业或个人造成灾难性的影响。
Magic Link 托管EOA钱包
Magic Link 是一个支持电子邮件和社交登录的无助记词钱包。在得到 Magic Link 的授权后,客户在新设备登陆账户时,从托管人处下载一份他们的私钥副本即可,从而避免保存和使用助记词。Magic Link 将私钥的加密版本外包给 AWS H 以直接服务客户端,这样 Magic Link 就不会以纯文本的形式存储私钥。
从技术上来说,Magic Link 就相当于 Metamask,但增加了云托管的好处,允许用户使用在线身份验证切换设备。然而,为了给用户带来**的体验,Magic Link 官方使用唯一的身份验证服务器来授予对解密密钥的访问权,这使得它在工作流中成为潜在的单点故障。黑客或工作人员一旦获得访问身份验证服务器的权限,就可以完全控制用户的账户。此外,解密密钥对于每个用户可能都不是唯一的,这就产生了使用其它账户的密钥绕过身份验证服务器的可能性。
我们对 Zerion 集成的 Magic Link 进行了测试和评估,以下是我们的发现。
Gas 费用:低,因为它是一个 EOA 钱包
延迟:低,和 Metamask 一样
更换设备:很容易,私钥会被传输到拥有访问令牌(Email/OAuth)的新设备。
安全性:低,单点故障,完整私钥在前端暴露
非托管:低,对认证服务器依赖程度高,因而服务可用性差、抗审查能力弱
功能性:低,不是智能合约钱包
Web3Auth 分布式托管EOA钱包
Web3Auth 是一家流行的钱包服务提供商,它还支持社交登录,允许用户通过社交账号连接,以在各种应用里验证他们自己。目前已经有各种 Web2 和 Web3 应用程序集成了 Web3Auth,如 Chess.com、Opensea 和 Skyweaver。毫无疑问,对于任何面向 C 端用户的应用,社交登录都是一种极具吸引力,甚至是最无缝的身份验证方式。
然而,就像 Magic Link 一样,社交登录工作流需要服务器生成登录请求并使用应用程序密钥进行签名,因此必须是中心化的。尽管智能合约可以使用公开给授权服务器的公钥来验证签名,但这对终端用户来说不是个友好的过程。
为了降低风险,Web3Auth 在 OAuth 密钥中添加了其它密钥,然后需要多把密钥共同签名重构完整密钥。当用户第一次登录他们的社交账户(例如 Gmail/Twitter)时,首先,以去中心化的方式,通过 Shamir Secreting Sharing(SSS)生成三个密钥分片,而后分开存储。以下是这些分片的存储方式:
- 设备分片:生成并存储在用户的设备上,每次在新设备上登录时都会重新生成
- OAuth 登录分片:在 OAuth 服务器上生成,然后在节点网络中进一步分割保存,并在 OAuth 代码得到验证时才会获取一次
- 备用 / 2FA 分片:由用户保留的额外分片,可保存在单独的设备、云或电子邮件上。登录新设备时必须用到该分片。
目前,OAuth 分片和备用分片都由 Web3Auth 通过 Auth 网络控制,这两个分片被用来重构完整的私钥。在集成了 Web3Auth 的服务中,如 Opensea 和 Sequence,用户可以通过社交账号直接认证身份并登陆应用,不需要任何其它要求,这使得 Web3Auth 成为唯一的账户托管者。
Web3Auth 可以把备份密钥分发到第三方存储。如此一来,当用户从新设备登录时,就可以调用备份密钥来在环境中创建新设备共享。将备份密钥的存储委托给第三方可以减少安全漏洞和审查的风险。Bitizen.org 就是这种分布式托管的一个很好的例子,它使用 2/3 TSS 和客户自己的云盘来存储备份密钥共享。然而因为服务提供方对用户的云存储有完全的访问权限,隐私问题是不容小觑的缺点。
Gas 费用:低,不是智能合约钱包
延迟:低,立即登录
更换设备:简单,社交登录和密码,或者只是社交登录
安全性:低,单一的托管人。私钥完整暴露到前端
非托管:低,服务高度依赖 Web3Auth,没有抗审查能力
功能性:低,不是智能合约钱包
Particle Network 分布式托管EOA钱包
Particle Network 是另一款以电子邮件或社交登录为特色的钱包服务,采用基于 2/2 MPC-TSS 的算法。在密钥生成过程中有两方,客户和官方,他们共同计算公钥,各自持有一段私钥。只有客户这一方才能启动签名过程。
签名时,由 TSS 技术生成的证明将上传到链上,而无需显示私钥。当客户端进行设备切换或账号恢复时,通过邮件 OTP 或社交登录验证后,就会调用存储在云端的客户端密钥。
TSS 多签名算法比 SSS 更安全,因为整个过程中它不会暴露完整的私钥。然而,在 2/2 TSS 方案中,两片密钥少了任何一片都无法恢复,这将使账户面临**锁定的更高风险。
目前,Particle Network 允许用户下载存储在云端的密钥,从而轻松实现在新设备上的社交登录。然而,该密钥不受密码保护,服务提供商完全可以访问该账户。
Gas 费用:低,不是智能合约钱包。
延迟:低,2/2 MPC 非常高效。
更换设备:简单,邮件 OTP 或社交登录
安全性:中等,完整的私钥并不存在,也没有永远的暴露。社交登录的验证仍然是中心化的
非托管:低,服务器端可以暂停服务或审查交易。
功能性:低,不是智能合约钱包
我们对 Particle Network 钱包的测试是在 https://wallet.particle.network 上进行的。
Sequence 分布式托管智能合约钱包
Sequence 是一个多签智能合约钱包,通过将三个密钥中的一个委托给 Web3Auth,同时支持电子邮件或社交登录。它允许开发人员更灵活地管理账户的安全性。此外,作为智能合约钱包,Sequence 支持在不同用例中设置额外的逻辑来改善用户体验。目前已有一些游戏和 Web3 应用采用了 Sequence。
Sequence 钱包目前使用三个私钥保证安全性,这三个私钥足以创建一个多数权重来完全控制账户:会话密钥、一个守护人密钥(gardian key) 和一个 Torus 密钥。
- 会话密钥存储在浏览器的 IndexedDB 中。
- 守护人密钥保存在 Horizon(Sequence 服务器)上。
- Torus 密钥(SSS)是由 Torus 网络生成的密钥,也称为 Web3Auth。关于它的特性,请参考上一节。
与 Web3Auth 相比,Sequence 为开发人员或客户端添加了进一步分散托管的选项。目前 Sequence 允许用户在登录新设备时,直接用社交账号同时调用 Torus 密钥和守护人密钥,以减少摩擦,改善用户体验。
Gas 费用是智能合约钱包的一个额外因素。账户创建、签署事务和密钥重构都是在链上进行的,因此需要消耗 Gas。交易签名成本可以忽略,但在 Pogon 上创建账户和密钥重构的成本为 $0.005-0.01,而在 Ethereum 上的成本约为此的 1000 倍。因此智能合约钱包在侧链和二层网络更可行。
Gas费用:低-中。
- 在Ethereum上:270k gwei大约$5-12(Gas价格在15-30 gwei,ETH在$1500)用于创建账户
- 在Pogon上:$0.0068-0.015(Gas价格47 gwei,MATIC为$0.9)创建账户
延迟:中等,第一次登录通常需要15秒,社交登录需要10-20秒
更换设备:简单。社交登录
安全性:低。单点故障。在当前实现中,仅 Torus 密钥就足以登录
非托管:低。在当前实现中,仅Torus密钥就足以登录
功能性:高。Sequence是一个智能合约钱包,因此支持额外的账户管理逻辑。
UniPass 分布式被动托管智能合约钱包
UniPass 也是一个建立在 MPC 密钥管理之上的智能合约钱包。它继承智能合约和 MPC 钱包的所有**功能。与 Sequence 相比,它使用守护邮件 (gardian email)的域名密钥(DKIM)来验证重置请求,而不是使用守护密钥和社交密钥。用户可以简单地从他们预先设置的电子邮件账户发送电子邮件来重置主密钥。
基于 DKIM 的重置机制是:用户以某种格式发送电子邮件,包含电子邮件地址的内容由 DomainKeys 进行哈希计算和签名,然后使用任何 RPC 服务广播已签名的哈希值,以调用智能合约中的重置功能。在链上验证监护人邮件的域密钥签名,如图 10 所示。
DKIM 的身份验证可以通过发送电子邮件简单地完成,整个流程不涉及任何需要授权用户请求的服务器,从而有效地消除了中心化风险。目前,Unipass 服务器通过为用户起草恢复邮件以及提供 RPC 服务来简化重置主密钥的流程。但是用户并不依赖于官方服务器,开源前端可以在本地运行,在账户恢复/社交恢复的流程中完全跳过服务器。
在这种设计中,仍然可以认为守护邮件(gardian email)扮演着托管人的角色,但这是被动的,因为整个过程不存在具体的服务提供方,就不会面临审查风险。这种方式大大降低了服务提供者被内部或外部恶意攻击的风险,降低托管服务商被审查的可能性。账户的访问不仅由电子邮件服务的安全环境保护,而且对于外部来说还是隐身的(邮件地址和账户之间的关联关系通过zk技术加密,没有人知道和你钱包对应的邮箱是什么)。
由于存在 Gas 费用,用户通常使用 2/2 TSS 密钥登录账户,而不调用智能合约更昂贵的函数。如图 8 所示,要登录到一个新的设备或环境,用户首先使用电子邮件 OTP 从云端下载被 keystore 加密的用户密钥,并用 keystore 的密码解密它。然后可以在本地使用该密钥来启动交易签名。一旦用户密钥(client key)签署了交易,Unipass 持有的另一个密钥将自动参与签名。Unipass 密钥充当一个看门人,自动监视交易的内容,以检查潜在的前端攻击。
Unipass 还支持会话密钥(session key),它被授权在预定义的条件下自动签署交易,比如在一定的交易金额下、在一段时间内,添加白名单地址。这得益于智能合约的功能。使用会话密钥可以极大地改善某些场景下(如游戏)的用户体验。
Gas 费用:低至中。
创建账户的费用在 Pogon 上:80k-130k wei 为 $0.0033-$0.005(Gas 价格在 15-30 gwei,MATIC 价格为 $0.9)
延迟:中等
更换设备:中等。邮件 OTP + 密码。用户不能简单地通过社交登录导入账号
安全性:高。黑客需要破解两封邮件(地址和邮件之间的关系被 zk-tech 隐藏了)才能进入客户的账户,这几乎是不可能的。
非托管:中等。高服务可用性,即使 UniPass 官方停止服务,客户仍然可以访问他们的钱包;未发现托管行为。
功能性:高。UniPass 是一个智能合约钱包,因此它可以实现额外的账户管理逻辑。
总结
随着 Web3 用户转换门槛的降低,越来越多的开发人员开始意识到钱包本身,以及它作为用户流量入口的作用。过去,项目方要在无助记词密钥管理和自主保管之间取舍,现在,MPC 和智能合约减轻了这种压力。分布式托管解决方案,特别是 Unipass 的被动托管解决方案,为用户和开发人员提供了最均衡的用户体验和安全特性。在接下来的 12 个月里,随着一批面向消费者的 Web3 应用程序的到来,这种均衡的解决方案可能会被更广泛地采用。
文章标题:探索实现无助记词钱包的一种方式是完全中心化的账户托管解决方案
文章链接:https://www.btchangqing.cn/396897.html
更新时间:2023年03月05日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。