原文作者:Cobo 区块链安全团队
前言
随着加密货币的寒冬来临,黑客事件逐渐从传统的链上协议攻击转为对个人钱包的攻击,同时,由于处于强势的加息周期,在流动性大幅抽离的情况下,也造成越来越多的中心化机构爆雷,对用户资产造成了极大的损害。近期安全事故频发,经历越来越多的资产被盗事件后,保证自己资产安全就变得尤为重要,同时大家也更加重视各类去中心化的安全资产管理方案。
为什么要掌控自己的资产
一直以来,由于中心化机构提供与传统 Web 2.0 相似的操作体验,很多用户选择了使用中心化机构的服务来进入加密货币行业,但在区块链世界里有一句老话,Not your keys, not you coins(掌握自己的私钥才能掌控自己的资产)。在用户为了便利而选择了中心化机构后,同样地也牺牲了一定的安全性,一旦中心化机构发生危机,用户资产将荡然无存。以最近的FTX事件为例,在本次的风波中,FTX 挪用用户资产导致了近 60 亿美金的缺口,在风险蔓延后,陆续有报道称有和 FTX 存在一定利益关系的其他中心化机构相继爆雷,此次全球受害群众估计多达百万人。在这次的风波中,如果用户一开始学会用自己的私钥管理资产,并将自己的大部分资产存储在去中心化的设施中(硬件钱包,多签合约等),就可以极大程度地避免自己在这次事件中的损失。
但是,管理私钥并不是一件容易的事情,这里面涉及到了私钥的生成、存储、管理、使用等多个方面的安全措施及最佳实践。
2022 年 9 月 22 日,著名做市商机构 Wintermute 因为使用 Profanity 的私钥生成工具创建私钥导致其相关合约的 owner 私钥泄漏,造成将近 1.6 亿美元的损失。
无独有偶, 2022 年 11 月 22 日,分布式资本合伙人沈波 @boshen 1011 也发推声称自己的钱包被盗,涉案金额在被盗时达 4200 万美金。经安全公司分析后,确认该事件核心问题在于用户使用的 Trust 钱包助记词的泄漏。从以上两次事件中,我们不难看出,私钥管理其实是一项很复杂的学问,但是在当前的环境下,使用中心化机构提供的服务又存在巨大的信任危机,那么是否存在一种方法,既可以安全管理自己的资产,又不需要担心因为担心单个私钥泄漏导致全部资产损失呢?
Gnosis Safe – 一种成熟的多签方案
由于以太坊本身的账户结构并不支持多签名的模式,以太坊用户无法像类似比特币用户一样构建自己的多签地址。不过以太坊上支持智能合约实现各种复杂代码逻辑,因此可以通过编写智能合约的形式构建链上多签钱包。需要注意智能合约代码本身也可能存在安全风险,历史上针对合约代码漏洞的攻击层出不穷。因此我们在选择智能合约钱包时需要我们使用经过多次审计并经历过长期时间验证的方案。Gnosis Safe 无疑是较优的选择方案。
通过 Gnosis Safe,用户可以将资产托管到多签合约中,并可根据自己的需求选择合适的签名规则。多签钱包的资产不再由单一地址的私钥所管理,而是由多个地址协同管理。每一笔交易的发起都需要多方地址进行签名,并要求有效总签名数达到预先设置的门限值(比如下图显示发送交易要求 3 个用户进行签名确认)。通过这种方式 Gnosis Safe 可以成功消除因单个私钥泄漏而导致全部资产损失的风险。
但是 Gnosis Safe 在提升资产安全性的同时,实际使用的便捷性上也存在一定不足,如:
每一笔交易都需要多方参与确认才能执行,相比单签地址执行效率下降。
不支持进行特定的分权处理, 钱包成员中的每一个地址权力完全一致。
不支持对交互合约配置具体的风控策略
那么,是否存在更好用的多签产品,在保持 Gnosis Safe 的原有安全性的同时解决以上不足呢?Cobo 给出的答案是 Cobo Safe。
Cobo Safe – 灵活的链上分权与风控方案
Cobo Safe 基于 Gnosis Safe 进行二次开发,利用 Gnosis Safe 的 module 扩展功能,实现了多签钱包与项目合约交互的灵活定制。
具体来说,Cobo Safe可提供的服务包括如下几点。
单签分权
Cobo Safe 目前支持粒度为函数级别的分权管理,即可针对特定用户角色配置不同的函数交互权限。只需要在网页界面上进行简单的配置,即可赋予用户角色(Role)对特定合约、特定函数的调用权限。如下配置的 harvesters 角色可以并仅能调用Uniswap V3 NonfungiblePositionManager 合约的 collect函数,即仅能完成 Uniswap V3 LP 交易费奖励的提取操作。
在 Cobo Safe 添加成员的同时,可指定前述限制的用户角色。被赋予某一角色的地址,就可使多签名钱包执行特定合约调用交易。如下即给 0 x 20 XX 地址赋予 harvesters 角色,允许 0 x 20 XX 地址以多签钱包的身份,代为发起 collect 函数调用的合约交易。
完成上述配置后, 0x20XX 用户则可通过 WalletConnect 与 Uniswap V3DApp 交互,并执行收取 LP 手续费的操作。通过 Cobo Safe 的分权功能,当 collect 交易由 0x20XX 发起时,不再需要所有 Gnosis owners 一一进行签名确认,只提供 0x20XX 自身的单签签名即可成功发起交易。从而规避了多签钱包使用上繁琐的签名收集过程。同时,由于 0x20XX 并不能执行 Uniswap V3collect 函数以外的其他操作,即使 0x20XX 账户遭受黑客攻击或者私钥泄漏等风险,也不会直接对多签钱包的本金资产造成威胁,通过这种方式最小化了与外部协议之间的操作风险和私钥泄漏带来的风险。后续钱包 owners 只需要重新配置,移除 0x20XX 成员即可彻底消除风险。利用灵活的分权机制,可以将链上交互中的一些常见低风险操作授权给某个单签地址,在大幅提高操作效率的前提下,不对原有钱包安全造成威胁。
ACL 风控
除了函数粒度分权机制外,Cobo Safe 还提供更为细粒度的 ACL(Access Control List)合约风控机制。用户可以根据自身业务场景,定制化地制定任意分权与风控规则。通过 ACL 合约,可以灵活地设置各类分权及风控规则,如:
通过 ACL 合约,可以灵活地设置各类分权及风控规则,如:
限制用户合约调用过程的参数范围(如指定 swap 时只允许操作固定几类 token 资产)
限制某个合约函数的调用次数
对合约交互进行风险检查(如检查 swap 滑点损失不高于某个百分比)
值得说明的是 Cobo Safe 作为 Cobo 推出的去中心化托管方案 Argus(https://argus.cobo.com/的重要组成部分,其链上合约源码均是开源的。因为用户方或其他第三方可对 Cobo Safe 及 ACL 合约源码进行审计,以保证托管功能不存在中心化做恶的风险。
总结
近期安全事件也警醒着我们,不论是将资产存放在中心化机构或者自行管理私钥助记词,都仍存在一定资产安全风险。
这些安全风险推动着各方寻求更好的资产托管方案。各大中心化托管机构近期纷纷推出基于 MerkleTree 的储备金证明方案, Cobo 联合创始人蒋长浩博士也发表了一些对现有方案局限性与改进的讨论探究(https://mp.weixin.qq.com/s/mHydXy-EnZAkrkZppI 3 YzQ)。
Cobo Argus(https://argus.cobo.com/) 作为去中心化托管方案,其集成的 Cobo Safe 模块扩展了业界成熟的多签解决方案 Gnosis Safe,提供了分权及 ACL 风控等更加灵活的可定制化功能,更好的平衡了资产安全性与钱包易性上的天然矛盾,是机构和个人度过资本寒冬迎接下一轮繁荣过程中资金管理工具的新选择。