社会恢复钱包新用例:主权社会恢复
一、 简介 恢复机制是指在主设备丢失的情况下,获得的资金访问权限的行为。 我们可以将当前的恢复机制分为两个主要的概念类别: 托管 托管恢复机制意味着将管理私钥的责任委托给其他人(通常是钱包公司)。 优点: 易于使用:如果用户丢失了他/她的设备,一个简单的双重身份验证即可恢复帐户。 责任委派:许多用户不希望自己保管种子短语(如果出现问题,他们想打电话给某人)。 缺点: 审查:最明显的一点是你的资金是完全可审查的。这扼杀了加密货币其中一个核心原则。 中心化权力:拥有托管钱包的另一个超级被低估的问题是,它背后的公司可以完全控制这些资金。虽然今天看来不是问题,但在未来,这些公司能像今天的银行一样运作。他们可以开始放贷以赚取更多利息,并重新创建我们今天拥有的相同系统。虽然现在听起来不可能,但这事未来发生的概率还是很大的。这是权力的腐败本质。 默认情况下,任何可以访问你的私钥的钱包服务都是托管的。 非托管 在非托管机制中,你可以与其他方共同承担追回责任,但这里的关键是,未经你的同意,任何人都不能拿走你的资金。 一些基本示例如下: 种子短语备份:这可能是最常见的一种。在这种情况下,你会写下一些单词(通常是 12 或 24 个)并确保它们安全。如果你丢失了主设备,你可以通过输入这些单词轻松恢复你的钱包。几乎所有钱包都支持这种方式,因此你可以轻松地从一个钱包迁移到另一个钱包。 优点: 主权:只有你有权访问你的资金(除非你被黑客入侵)。 自由:只需输入种子短语,你就可以轻松地将钱包迁移到另一个钱包。 缺点: UX(用户体验不好):在一张纸(金属?)上写下一些单词,感觉不是现代人做的事。 安全性:它增加了额外的安全问题。如果有人窃取了助记词,他们会立即获得你的资金。如果你将助记词与你的设备一起丢失,你再也无法找回你的资金。 责任:你有100%的责任。如果出现问题,没有人可以打电话。责任通常是好的,但是对于具有如此多经济价值的系统,责任应该在应用程序和系统上,而不是在用户身上。 多重签名:像 Gnosis 这样的多重签名钱包非常安全,并为生态系统提供了巨大的价值。我相信这些类型的钱包非常适合管理 DAO 的储备以及拥有大量加密货币并希望将资金存放在那里的人。对于日常用户来说,它们不是很实用。 还有另一种较新的选择,称为社会恢复。你会发现,此选项可以是托管的、非托管的或半托管的。 社会恢复 社会恢复是一种通过监护人获得资金权限(以防你丢失主设备)的机制。我相信这个机制是一个很好的前进方向,但仍然有很多缺陷。请允许我解释一下。 额外的安全考虑:通过拥有监护人,你增加了额外的安全复杂度。如果你的大多数监护人密谋反对你,他们将能够窃取资金。而且我不是从夸张的角度说的,我是从务实的角度来说。他们可能有偷窃的不良意图,而且还可能被社会工程,甚至丢失自己的钱包。额外的复杂度:不是所有用户都能找到可以托付他们的毕生积蓄的几个人。即使他们能找到道德上信任的人,真要把自己的钱包安全交到他们手上,也不免犯嘀咕。 我也列出我收到的对社会恢复的一些反驳声音: 使用中心化监护人:使用中心化监护人只是一个普通的中心化钱包。我们对此需要思考,如果政府强迫监护人拿走用户的资金,他们能这么做吗?如果答案是肯定的,那么它真的是非托管的吗? 把自己当作监护人:我经常听到的另一点是,有另一个钱包作为备份。我认为这种设置根本没有意义。如果你有一个钱包作为备份,那么该钱包是你最薄弱的环节。那么为什么要使用这个钱包而不是你唯一的有(真正)监护人的钱包呢?你只是引入了更多的风险。 考虑到所有这些要点,让我介绍一下主权社会恢复。 二、主权社会恢复 主权社会恢复的实施与社会恢复非常相似,但有一个很大的区别:它预先确定了下一个所有者。 如前所述,社会恢复的大问题是监护人可以将所有者更改为新地址。这个新地址是函数中的一个输入参数,允许监护人选择他们喜欢的任何地址。 通过主权社会恢复,监护人只能将钱包恢复到真实所有者持有的预定地址。 让我们来看一个例子: Alice 在她的移动设备中创建了一个智能合约钱包。签名密钥(私钥)在移动设备的硬件中加密(为了避免社会工程攻击,未显示种子短语)。 Alice 选择一组监护人,或者钱包默认为中心化的(没关系,监护人无法拥有 Alice 的资金权限)。 恢复所有者密钥对被创建,地址存储在钱包合约中的“recoveryOwner”变量中。种子短语可以显示给 Alice 或保存在不同的云提供商中。这个种子短语不是那么重要,Alice 随便放也没事(她可以替换恢复所有者)。如果有人偷了它(监护人除外),那是完全没有价值的。 这是一个半伪代码示例,以便更好地理解: 我们也可以以更安全的方式恢复。以防攻击者拥有恢复密钥,并且等待所有者放松警惕: *你可以添加一个额外的功能,这样监护人就不能很容易地永远锁定钱包(它可以通过多种方式实现) . 让我们回顾一下主要的安全考虑事项: 监护人获得钱包资金的唯一方法是恶意背叛用户并窃取恢复种子短语。前者的概率并没有那么低,但如果再加上后者,就变得极不可能了。 如果用户失去对恢复种子短语的访问权限,则不会发生任何事情。用户可以生成一个新的,并更改恢复所有者。 如果攻击者窃取了恢复种子短语,他将无法对其进行任何操作(除非他与监护人合作)。 用户可以有中心化托管人作为监护人、家庭成员等……资金是完全安全的。拥有几个中心化监护人将提供与使用托管钱包相同的用户体验,不同之处在于该钱包是 100% 非托管的。 为了避免社会工程攻击,主种子短语从不能向用户展示。 资金流失的另一种方式是,如果攻击者可以访问移动应用程序。这适用于几乎所有钱包(Metamask、Coinbase 等)。因为这是一个智能合约钱包,所以我们可以添加额外的安全过滤器,如多重签名、支出限制等……始终需要所有者密钥才能签名。如果攻击者访问钱包设备,他将只能窃取有限数量的钱,或者根本不能(如果是多重签名)。但即使在需要 m of n 的多重签名中,也始终需要所有者签名。 最后一个考虑是将恢复地址种子短语抽象之后给到用户。这可以通过在云提供商(多个)中对其进行加密来完成。从用户体验上来说,感觉会比使用 gmail 好。 这个组合将把所有责任从用户身上剥离,同时提供一个安全和非托管的钱包机制。 一些负面情形: 如果用户同时丢失了设备和恢复种子短语怎么办!!! 尽管这两种情况不太可能同时发生(丢失手机,同时无法访问多个云提供商?),但我们可以实施一些更复杂的过滤手段。例如,只有当钱包处于非活动状态超过 x (180 ?) 天时,监护人才能将钱包解锁到新地址(如社会恢复)。这需要权衡取舍(如果监护人绑架用户怎么办?)。 我们将依旧显示种子短语!!! 恢复种子短语可以完全从用户那里剥离,并存储在不同的云提供商中(即使是中心化的托管人,只拿到密钥也没用!)。 坚信监护人不会作恶!!! 也许你的监护人不会恶意窃取你的信息。但是,与使用中心化钱包相比,拥有监护人会带来更多的安全风险。如果他们被社工怎么办?如果他们中的大多数人丢了钱包怎么办?如果…。我真的不相信人们(至少我)会对这些换来的风险感到满意。而且,只有一个中心化监护人的传统社会恢复钱包与托管钱包完全相同。那个监护人随时可以卷款走人。 结论 这种机制提案试图让用户享有 100% 非托管钱包的主权,但又有中心化钱包的用户体验。我相信我们需要停止将责任推给用户,创建更无感的系统,同时保持我们关心的核心价值观。 |
2018-06-24
2018-11-20
2019-01-10
2019-01-10
2019-01-10
2019-11-14
2019-11-14
2019-11-14
2019-11-13