ZKSAFE:私钥丢失,如何依然保护用户资产安全

22-12-10 13:05
阅读本文需 18 分钟
总结 AI 总结
看总结 收起

目前,MetaMask 等 EOA 钱包仍占据着去中心化钱包的龙头地位。而另一方面,尽管业界已经做出了巨大的努力来告知用户保持助记词和密钥安全的重要性,但存在的这个单点故障问题依然是加密钱包被广泛采用的一个重大障碍。


为解决这个问题,两类替代密钥管理的方案成为了钱包赛道创业的热点,它们分别是多方计算 (MPC) 协议和智能合约钱包 ( 包括多重签名钱包 )。未来,它们将为个人、DAO 和机构等提供更多的选择,甚至加密钱包不再只涉及安全存储,还将包括在新经济中的资产使用。


但接下来,我们将着重介绍的是另一个针对 EOA 钱包使用同样具有代表性的方案 ZKSAFE。相比 MPC 钱包将私钥分片(shards)分发到多个节点,这仍存在中心化风险,因为节点可能被攻击导致私钥丢失。ZKSAFE 则是通过纯 ZK 算法实现了无节点的密码功能,同时不会存储用户的私钥和密码。



ZKSAFE 是什么


ZKSAFE 是一款免费开源的协议级 Web3 安全产品,使用零知识证明(zk Proof)技术通过链上密码+私钥的多重签名来保护用户资产,即使私钥丢失用户的资产也是安全的。


不需要硬件钱包,用户只需要安装浏览器扩展插件,ZKSAFE 打造了一种密码+私钥开启的 Safebox。用户可以拥有自己的 Safebox 合约,资产可以存储在钱包中,也可以存储在 Safebox 合约中,即使私钥和密码丢失也能通过 Social Recovery(社交恢复)来找回资产。



产品线


ZKSAFE 将产品主要分为了 3 个模块:ZKSAFE Safebox、ZKSAFE Password、ZKSAFE Wallet,它们可以独立运行,也可以相互结合,或者与其他项目的产品相结合使用。


ZKSAFE Safebox


Safebox 是 ZKSAFE 系统创建的首个产品。


每个用户都可以拥有一个用密码+私钥才能打开的 Safebox 合约,相当于私人银行,ZKSAFE 不会存储用户的私钥,也不存储用户的密码,但即使私钥被盗,资产依然安全。如果是私钥和密码忘记了,则可以通过社交恢复来重置。


安装教程


1)打开 app.zksafe,点击 Download,跳转到 Chrome 应用商店下载 ZKSAFE 插件,安装后 Download 变成 Connected 表示 ZKSAFE 插件连接成功。


2)然后点击 Connect Wallet 按钮,连接 MetaMask 钱包。目前,ZKSAFE 仅支持 Polygon 网络,后续还会集成以太坊、BSC、Optimism 和 Arbitrum。



3)新用户需要先激活 Safebox,点击 Activate,弹出 MetaMask 确认框,再点击确认,部署一个用户专有的 Safebox 智能合约。


上链后,Safebox Address 即刚部署的合约地址,以后可以直接给这个地址转 Token 和 NFT,只有用户自己能取出来。



Owner Address 则是用户的钱包地址,以后用户 Safebox 里的资产只能转到这个钱包。


提款


1)从 Safebox 取出资产必须要有链上密码,点击 SET 进行设置,在 ZKSAFE 插件弹出框中创建链上密码,然后在弹出的 MetaMask 确认框中点击确认。



2)点击橙色箭头按钮,在弹出框中输入 Token 数量,点击 Confirm 按钮;弹出 ZKSAFE 转出确认框,输入密码,ZKSAFE 通过用户的密码计算出 ZK-SNARK Proof,并点击 Confirm 后弹出 MetaMask 确认框,点击确认等待上链即可。



目前,正式版已上线,Safebox 里的资产可以转到任意地址,这样能避免私钥被盗,用户把资产转回钱包后造成损失的情况。未来,ZKSAFE 还将开发一个域名项目 ZKSAFE ID,避免转错的问题发生。


存款


点击绿色箭头按钮,在弹出框中输入 Token 数量,弹出 MetaMask 确认框后点击确认按钮,等待上链。



不过,相比提款时的一对一,在存款时则是多对一,用户还可以将自己的 Token 从其他的钱包直接转移到 Safebox 地址。


Social Recovery


如果用户忘记密码或私钥,则可以通过事先设置的监护人发起多签(无需密码)来社交恢复,Safebox 的所有权将转移到新的钱包,这样就可以用新钱包的链上密码+私钥转出资产。Safebox 转移到新钱包后,原来钱包的管理权就会失效。


监护人可以是自己最信任的亲人朋友,也可以是该用户的其他钱包。但为了保障安全,不要让监护人的钱包都在同一台设备上。


ZKSAFE Password(ZKPass)


ZKSAFE 旨在创建一个协议级的密码方案,因此该密码系统不仅支持 ZKSAFE,还扩展到支持各种资产管理平台,甚至是无私钥钱包,这将大大降低用户进入 Web3 的门槛。


可以简单地进行划分,这个密码系统 ZKPass 主要是 to B,zkSafe 则是 to C。


值得一提的是,传统的算法里只有私钥才能对数据进行签名,但 ZKSAFE 通过将 ZK-SNARK 做了一些编程,实现了密码对数据签名,这将有效地阻止「三明治攻击」。


比方说用户提交了一个取款的 tx,里面附上了其密码验证信息。由于 tx 是公开的,在排队的时候黑客可复制这个 tx,把取款地址换成自己的,加上没动密码验证信息,所以在合约里是可以校验通过的。然后黑客用更高的 gas 提交,这样就能抢在用户的前面从而取走资产。


但如果在用户提交取款 tx 的时候,通过 ZKPass 把 tx 里提多少钱给谁这个信息用密码进行签名,如果 tx 的信息被篡改,在合约里则是能校验出来的。


具体操作则可打开 password.zksafe,点击 Connect Wallet 连接 MetaMask,设置 ZKPass。


输入 password 两次,然后点击 Set Password,电脑会进行 ZK 计算,等待几秒完成 ZK 计算后,会弹出 MetaMask 确认框。



此外,重置新密码需要旧密码,如果用户重置了密码,在重置页面将能查看最近的密码设置记录。


1)关于 ZKPass:


- ZKPass 不存储用户的密码,除了用户自己,没有人知道;

- ZKPass 没有管理员,没有人可以帮助找回或重置密码;

- 不要将密码保存在电脑或手机中,写在纸上。


2)关于 ZKPass 强度,目前还无法阻止被破解,破解难度取决于密码长度。


- 6 字的大概 10 天破解,别设置太短;

- 随着计算机性能的提升,8 字的未来破解可能只需要几个月;

- 推荐 12 个字符,可以是一个短句 + 一个数字;破解需要几千片 3090 显卡 100 年时间;

- 如果有更高安全要求,可设置 40 位密码长度,届时破解难度将大于私钥。而根据目前全网算力,私钥的破解难度则要花上亿年。


3)那 ZKPass 与 MetaMask 的密码有什么区别呢?


的确,在使用过程中会发现存在两个密码:MetaMask 密码和 ZKPass,但它们是两个完全不同的系统。MetaMask 不直接存储用户的私钥,而是存储该私钥证书,用户在打开 MetaMask 时输入的密码就是导出私钥证书的密码。


如果证书丢失(电脑重装),则该密码无法导出私钥,资产也就无法提现。而当私钥被盗,黑客就可以轻松窃取用户的资产。


而 ZKSAFE 使用的密码 ZKPass,则是存储在智能合约中,通过零知识证明加密,只有用户自己才能更改。ZKPass 永远在线,换电脑也有效; 即使 ZKSAFE 停止服务,只要以太坊网络还存在,就一直有效。同时如果私钥被盗,黑客在不知道 ZKPass 的情况下是无法窃取用户资产的。


4)具体工作原理


在用户侧,ZKPass 只有改密码的功能;如果只是验证密码,获取密码的哈希值(pwdhash)在链下就可以验证,而链上的验证通常是配合其他合约一起,做数据签名用,比如 ZKSAFE 合约:ZKSAFE 合约把「用户想要干什么」这些参数,在合约内生成 datahash 传给 ZKPass 合约。


ZKPass 验证成功后,ZKSAFE 合约就知道用户的密码正确,以及「用户想要干什么」这些参数没有被篡改(即签名),然后 ZKSAFE 合约就可以做下一步(提币)操作了。



ZKSAFE Wallet


ZKSAFE 还将开发一款基于 ERC4337(账户抽象),便利安全,省 gas 的钱包。该钱包还将使用 ZKPass 代替私钥实现无私钥的钱包,并整合 Dapp 商店,让用户可以自由安全地畅玩加密世界。


总结


MPC 方案通过对私钥进行多方计算在链下实现「多签」、「跨链」等复杂的验证方式。具体来说,它将一个私钥打碎成多个分片,然后将它们交与一个去中心化的网络进行计算和加密。当需要私钥签名时,则将这些分片再拼接形成一个完整的私钥。


MPC 分散了私钥的控制权以达到分散风险的目的,来避免单点失败等安全问题。不过另一方面,MPC 私钥隐藏和跨链桥接可能依然存在中心化的风险,一旦大量资金由极少数节点控制,尤其当这些节点是同一个人时,节点被攻击就会导致私钥丢失。此外,MPC 方案所用的密码,只要校验密码的单一节点遭到入侵,所有用户的密码也存在暴力破解的风险,所以也会要求用户输入复杂密码。


智能合约钱包的使用则需要更高的费用,因为需要验证多个签名,如添加或删除所有者以及更改阈值等操作都是在链上进行。


而 ZKSAFE 则是给 EOA 钱包的使用增加了一个安全套件,并且通过存储链上 zkproof 而不是存储密码本身来避免资产被盗。同时即使私钥和密码丢失,用户也能通过社交恢复来找回资产。



欢迎加入律动 BlockBeats 官方社群:

Telegram 订阅群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia

举报 纠错/举报
选择文库
新增文库
取消
完成
新增文库
仅自己可见
公开
保存
纠错/举报
提交