为什么我们需要广泛采用社交恢复钱包

2021 年 1 月 11 日查看所有帖子


特别感谢来自 Argent 的 Itamar Lesuisse 和来自 Loopring 的 Daniel Wang 的反馈。

使普通用户可以使用加密货币和区块链应用程序的一大挑战是安全性:我们如何防止用户的资金丢失或被盗?丢失和被盗是一个严重的问题,通常会使无辜的区块链用户损失数千美元,甚至在某些情况下损失他们全部净资产的大部分。

多年来已经提出了许多解决方案:纸钱包、硬件钱包和我自己曾经的最爱:多重签名钱包。事实上,它们已经导致安全性的显着改善。然而,这些解决方案都存在各种缺陷——有时提供的额外保护远低于实际需要的盗窃和丢失保护,有时笨重且难以使用导致采用率非常低,有时两者兼而有之。但最近,出现了一种更好的替代方案:一种称为社交恢复钱包的新型智能合约钱包。这些钱包可以提供比以前的选项更高的安全性和更好的可用性,但在它们可以轻松和广泛部署之前还有很长的路要走。这篇文章将介绍什么是社交恢复钱包,它们为什么重要,以及我们如何能够并且应该在整个生态系统中更广泛地采用它们。

钱包安全是个大问题

几乎从一开始,钱包安全问题就一直是区块链生态系统的眼中钉。早在 2011 年,当比特币几乎是唯一的加密货币时,加密货币的损失和盗窃就十分猖獗;事实上,作为比特币杂志的联合创始人和作家,我在以太坊之前的角色写了整篇文章,详细描述了当时已经发生的黑客攻击、损失和盗窃的恐怖。

这是一个示例:

昨晚太平洋夏令时晚上 9 点左右,我点击了一个链接转到 CoinChat[.]freetzi[.]com——我被提示运行 java。我做了(认为这是一个合法的聊天室),但什么也没发生。我关上窗户,什么也没想。大约 14 分钟后,我打开了我的比特币-qt 钱包,看到一笔我没有批准的交易,几乎我的整个钱包都转到了钱包 1Es3QVvKN1qA2p6me7jLCVMZpQXVXWPNTC……

这个人的损失是 2.07 BTC,当时价值 300 美元,今天超过 70000 美元。这是另一个:

2011 年 6 月,在未知入侵者以某种方式直接访问他的计算机后,Bitcointalk 成员“allinvain”损失了 25,000 BTC(当时价值 500,000 美元)。攻击者能够访问 allinvain 的 wallet.dat 文件,并快速清空钱包——通过从 allinvain 的计算机本身发送交易,或者通过简单地上传 wallet.dat 文件并在他自己的机器上清空它。

以今天的价值计算,这是近 10 亿美元的损失。但盗窃并不是唯一的问题;丢失私钥也会造成损失。这是斯蒂芬·托马斯:

比特币开发者 Stefan Thomas 有他钱包的三个备份——一个加密的 U 盘、一个 Dropbox 帐户和一个 Virtualbox 虚拟机。然而,他设法擦除了其中的两个并忘记了第三个的密码,永远无法访问 7,000 BTC(当时价值 125,000 美元)。托马斯的反应是:“从那时起[我]非常致力于创造更好的客户。”

对比特币生态系统的一项分析表明,每天可能会丢失 1500 BTC——是比特币用户在交易费用上花费的十倍以上,多年来加起来高达总供应量的 20%。这些故事和数字都指向同一个不可回避的事实:钱包安全问题的重要性非常大,不容小觑

很容易看出钱包安全性很容易被低估的社会和心理原因:人们自然担心在总是有判断力的公众面前显得粗心或愚蠢,因此许多人将自己的资金被黑客入侵的经历留给自己。资金损失甚至更糟,因为有一种普遍的(尽管在我看来非常不正确)感觉“除了你自己,没有人可以责备”。但现实是,包括区块链在内的数字技术的全部意义在于,让人类更轻松地从事非常复杂的任务,而不必付出极大的脑力劳动或生活在对犯错误的持续恐惧中。 一个生态系统对损失和盗窃的唯一答案是 12 步教程、不太安全的半措施和不那么偶然的半讽刺“对不起你的损失”的组合,将很难获得广泛采用。

因此,无需所有加密货币用户将个人安全变成全职爱好,即可减少损失和盗窃发生的数量的解决方案对行业来说非常有价值。

仅靠硬件钱包是不够的

硬件钱包通常被吹捧为加密货币资金管理的一流技术。硬件钱包是一种专门的硬件设备,可以连接到您的计算机或手机(例如通过 USB),并且包含一个只能生成私钥和签署交易的专用芯片。交易将在您的计算机或手机上发起,必须在硬件钱包上确认才能发送。私钥保留在您的硬件钱包中,因此入侵您的计算机或手机的攻击者无法耗尽资金。

硬件钱包是一项重大改进,它们当然可以保护 Java 聊天室受害者,但它们并不完美。我发现硬件钱包有两个主要问题:

  • 供应链攻击:如果你购买一个硬件钱包,你就会信任参与生产它的许多参与者——设计钱包的公司,生产它的工厂,以及参与运输它的每个人都可以用假的。硬件钱包可能会吸引此类攻击:被盗资金与受损设备数量的比率非常高。值得称赞的是,Ledger 等硬件钱包制造商已经采取了许多保护措施来防范这些风险,但仍然存在一些风险。硬件设备根本无法像开源软件那样进行审计。
  • 仍然是单点故障:如果有人站在您的肩膀后面并发现您输入 PIN 后立即窃取了您的硬件钱包,则他们可以窃取您的资金。如果你丢失了你的硬件钱包,那么你就会失去你的资金——除非硬件钱包在设置时生成并输出一个备份,但我们将看到那些有自己的问题......

助记词不够好

许多钱包,硬件和软件一样,都有一个设置过程,在此过程中它们会输出一个助记词,这是一个人类可读的 12 到 24 个字的钱包根私钥编码。助记词如下所示:

 vote    dance   type    subject valley  fall    usage   silk
 essay   lunch   endorse lunar   obvious race    ribbon  key
 already arrow   enable  drama   keen    survey  lesson  cruel

如果您丢失了钱包但您有助记词,您可以在设置新钱包时输入助记词来恢复您的帐户,因为助记词包含可以生成所有其他密钥的根密钥。

助记词有助于防止丢失,但不能防止盗窃。更糟的是,他们增加一个新的载体盗窃:如果您有标准的硬件钱包+记忆备份组合,然后有人偷无论是硬件的钱包+ PIN或者您的记忆备份可以窃取您的资金。此外,保持一个助记词而不是不小心把它扔掉本身就是一种不平凡的脑力劳动。

如果您将短语分成两半并将一半交给您的朋友,则可以缓解盗窃问题,但是 (i) 几乎没有人真正推广这一点,(ii) 存在安全问题,好像短语很短(128 位)那么一个老练且有动机的攻击者偷了一块可能能够暴力破解所有 264 找到另一个的可能组合,并且(iii)它进一步增加了心理开销。

那么我们需要什么?

我们需要的是满足三个关键标准的钱包设计:

  • 没有单点故障:没有任何单一的东西(理想情况下,没有一起旅行的东西的集合)如果被盗,可以让攻击者访问您的资金,或者如果丢失,可以拒绝您访问您的资金。
  • 低心理开销:尽可能地,不应该要求用户学习奇怪的新习惯或花费脑力来始终记住遵循某些行为模式。
  • 交易的最大便利性:大多数正常活动不应该比在常规钱包中花费更多的精力(例如 Status、Metamask...)

多签不错!

早在 2013年,解决这些问题的一流技术是多重签名。你可以有一个有三把钥匙的钱包,其中任何两个都需要发送交易。

 

这项技术最初是在比特币生态系统中开发的,但现在以太坊也存在优秀的多重签名钱包(例如,参见Gnosis Safe)。Multisig 钱包在组织内非常成功:以太坊基金会使用 4-of-7 的多重签名钱包来存储其资金,以太坊生态系统中的许多其他组织也是如此。

对于为个人持有资金的多重签名钱包而言,主要挑战是:谁持有资金,交易如何获得批准?最常见的公式是“两个易于访问但独立的密钥,由您(例如笔记本电脑和手机)持有,第三个更安全但不易访问的备份,离线或由朋友或机构持有”的某种变体。

这是相当安全的:没有任何设备会丢失或被盗而导致您无法使用您的资金。但安全性远非完美:如果你可以偷某人的笔记本电脑,那么偷他们的手机通常也不是那么难。可用性也是一个挑战,因为现在每笔交易都需要使用两个设备进行两次确认。

社会康复更好

这让我们找到了我首选的保护钱包的方法:社交康复。社会康复系统的工作原理如下:

  1. 有一个“签名密钥”可用于批准交易
  2. 有一组至少 3 个(或更多)的“监护人”,其中大多数可以合作更改帐户的签名密钥。

签名密钥可以添加或删除监护人,但需要延迟(通常为 1-3 天)。

 

在所有正常情况下,用户可以像使用普通钱包一样简单地使用他们的社交恢复钱包,用他们的签名密钥签署消息,这样每笔签名的交易都可以通过一次确认点击来完成,就像在像 Metamask 这样的“传统”钱包中一样.

如果用户丢失了他们的签名密钥,那么社交恢复功能就会启动。 用户可以简单地联系他们的监护人并要求他们签署一项特殊交易,将钱包合约中注册的签名公钥更改为新的. 这很简单:他们只需转到security.loopring.io等网页,登录,查看恢复请求并签名。对于每个监护人来说,就像进行 Uniswap 交易一样容易。

选择谁作为监护人有很多可能的选择。三种最常见的选择是:

  • 钱包持有者自己拥有的其他设备(或纸质助记符)
  • 朋友和家人
  • 机构,如果他们得到您的电话号码或电子邮件的确认,或者在高价值的情况下,他们会签署恢复消息,通过视频通话来验证您的个人身份

监护人很容易添加:您只需输入他们的 ENS 名称或 ETH 地址即可添加监护人,尽管大多数社交恢复钱包都需要监护人在恢复网页中签署交易以同意添加。在任何设计合理的社交恢复钱包中,监护人不需要下载和使用同一个钱包;他们可以简单地使用现有的以太坊钱包,无论是哪种类型的钱包。鉴于添加监护人非常方便,如果你足够幸运,你的社交圈已经由以太坊用户组成,我个人更喜欢高监护人数量(最好是 7+)以提高安全性。如果您已经有一个钱包,那么成为监护人不需要持续的脑力劳动:您所做的任何恢复操作都将通过您现有的钱包完成。如果您不认识许多其他活跃的以太坊用户,

为了降低对监护人的攻击和勾结的风险,您的监护人不必公开:事实上,他们不需要知道彼此的身份。这可以通过两种方式实现。首先,不是将监护人的地址直接存储在链上,而是可以将地址列表的哈希存储在链上,钱包所有者只需在恢复时发布完整列表。其次,可以要求每个监护人确定性地生成一个新的单一用途地址,他们将仅将其用于特定的恢复;除非确实需要恢复,否则他们实际上不需要使用该地址发送任何交易。为了补充这些技术保护,建议选择来自不同社交圈的多元化监护人(最好包括一名机构监护人);这些建议加在一起将使监护人极难同时受到攻击或串通。

如果您死亡或永久丧失行为能力,监护人可以公开宣布自己是社会公认的标准协议,因此在这种情况下,他们可以找到彼此并收回您的资金。

社会恢复钱包不是背叛,而是“加密价值”的一种表达

对使用任何形式的多重签名、社会恢复或其他方式的建议的一种常见反应是,这种解决方案可以追溯到“信任人”,因此背叛了区块链和加密货币行业的价值。虽然我理解为什么乍一看会这么想,但我认为这种批评源于对加密应该是什么的根本误解。

对我来说,加密货币的目标永远不是消除对所有信任的需求。相反,加密的目标是让人们访问加密和经济构建块,让人们有更多选择信任谁,并进一步允许人们建立更多受约束的信任形式:赋予某人代表您做某些事情的权力而不给他们做所有事情的权力。这样看来multisig 和社会恢复是这个原则的完美体现:每个参与者都有一些影响接受或拒绝交易的能力,但没有人可以单方面转移资金。这种更复杂的逻辑允许设置比必须有一个人或密钥单方面控制资金的情况更安全。

这个基本思想,即人类输入应该小心使用,而不是直接扔掉,它很强大,因为它与人类大脑的长处和弱点配合得很好。人脑非常不适合记住密码和跟踪纸钱包,但它是一种用于跟踪与他人关系的 ASIC。对于技术水平较低的用户来说,这种效果甚至更强:他们可能会更难处理钱包和密码,但他们同样擅长“选择 7 个不会全部联合起来对付我的人”等社交任务。如果我们可以至少从人类输入中提取一些信息到一个机制中,而不会将这些输入变成攻击和利用的向量,然后我们应该弄清楚如何。并且社会恢复非常强大:对于一个有 7 个监护人的钱包,7 个监护人中的 4 个需要以某种方式互相发现并同意窃取资金,而没有任何一个人向所有者提供情报:这当然是一个更艰巨的挑战而不是攻击一个纯粹由一个人保护钱包

社会恢复如何防止盗窃?

如上所述,社会恢复处理的是您丢失钱包的风险。但是仍然存在您的签名密钥被盗的风险:有人侵入您的计算机,在您已经登录时潜入您的身后并击中您的头部,或者甚至只是使用一些用户界面故障来诱骗您进行签名您不打算签署的交易。

我们可以通过添加保险库来扩展社会恢复以处理此类问题。每个社交恢复钱包都可以带有自动生成的保险库。只需将资产发送到保管库的地址即可将资产移至保管库,但只能延迟 1 周才能将资产移出保管库。在此延迟期间,签名密钥(或扩展为监护人)可以取消交易。如果需要,还可以对金库进行编程,以便可以毫不拖延地完成一些有限的金融操作(例如,某些白名单代币之间的 Uniswap 交易)。

现有的社交恢复钱包

目前,实现社交恢复的两大钱包分别是Argent 钱包Loopring 钱包

 

 

Argent 钱包是目前使用的第一个主要也是最受欢迎的“智能合约钱包”,社交恢复是其主要卖点之一。Argent 钱包包含一个可以添加和删除监护人的界面:

 

为了防止盗窃,钱包有每日限额:达到该金额的交易是即时的,但超过该金额的交易需要监护人批准才能完成提款。

Loopring 钱包最出名的是由Loopring 协议的开发者(当然包括支持)构建,这是一个用于支付和去中心化交易的ZK 汇总。但路印钱包还具有社交恢复功能,其工作方式与 Argent 中的非常相似。在这两种情况下,钱包公司都会免费提供一名监护人,该监护人依靠手机发送的确认码来验证您的身份。对于其他监护人,您可以通过提供他们的以太坊地址来添加同一钱包的其他用户或任何以太坊用户。

这两种情况下的用户体验都出奇的流畅。有两个主要挑战。首先,这两种情况下的平滑性都依赖于钱包制造商运行的中央“中继器”,它将签名消息重新发布为交易。二是收费高。幸运的是,这两个问题都是可以克服的。

迁移到第 2 层(汇总)可以解决剩余的挑战

如上所述,有两个关键挑战:(i)依赖中继器来解决交易,以及(ii)高交易费用。第一个挑战,对中继器的依赖,是以太坊应用程序中越来越普遍的问题。出现这个问题是因为以太坊中有两种类型的账户:外部拥有账户(EOA),这是由单个私钥控制的账户,以及合约. 在以太坊中,有一条规则是每笔交易都必须从 EOA 开始;最初的意图是EOA代表“用户”,合约代表“应用程序”,只有用户与应用程序对话才能运行应用程序。如果我们想要具有更复杂策略的钱包,例如多重签名和社交恢复,我们需要使用合约来代表用户。但这带来了一个挑战:如果你的资金在合同中,你需要有其他一些有 ETH 的账户来开始每笔交易,并且需要相当多的 ETH 以防交易费用变得非常高。

Argent 和 Loopring 通过亲自运行“中继器”来解决这个问题。中继器侦听用户提交的链外数字签名“消息”,并将这些消息包装在交易中并发布到链上。但从长远来看,这是一个糟糕的解决方案;它增加了一个额外的中心化点。如果中继器关闭并且用户确实需要发送交易,他们总是可以从自己的 EOA 发送它,但仍然引入了中心化和不便之间的新权衡。有努力解决这个问题并在没有中心化的情况下获得便利;主要的两个类别围绕着建立一个广义的分散中继网络或修改以太坊协议本身允许交易从合同开始。但是这些解决方案都没有解决交易费用,事实上,由于智能合约固有的复杂性,它们使问题变得更糟。

幸运的是,通过寻找第三种解决方案,我们可以同时解决这两个问题:将生态系统转移到第 2 层协议上,例如乐观汇总和 ZK 汇总。Optimistic 和 ZK 汇总都可以设计为内置帐户抽象,从而避免对中继器的任何需求。现有的钱包开发人员已经在研究汇总,但最终迁移到汇总是一个生态系统范围的挑战。

在整个生态系统范围内大规模迁移到汇总是扭转以太坊生态系统早期错误并让多重签名和智能合约钱包在帮助保护用户资金方面发挥更重要作用的好机会。但这需要更广泛的认识,即钱包安全是一项挑战,我们在努力迎接和挑战方面还没有走得那么远。多重签名和社会恢复不一定是故事的结局;可能会有更好的设计。但是,转向汇总并确保这些汇总将智能合约钱包视为一等公民的简单改革是实现这一目标的重要一步。