以太坊二层账户密钥生成指南

2020-08-27 18:06 栏目:经验之谈 来源:网络整理 查看()

最近,环网交换机发生了由前端漏洞引起的安全事件,导致中继服务紧急停止。所有用户都需要在交易前更新他们的EdDSA密钥对。有关此错误的完整描述,请参见喜达屋的博客[1]。

幸运的是,这一事件没有造成任何损失。然而,弱私钥的脆弱性经常发生,由于使用不当造成了很大的损失。根据NORKER[2],超过2800个比特币和40000个以太币因使用“大脑钱包”(一种生成私钥的不正确方法)而被盗。然而,在环行事件中,情况略有不同。有风险的是zkRollup的新密钥,而不是Ethereum帐户的密钥,或者如Starkware所说,这是一个帐户密钥。以太网密钥仍处于安全状态。为什么我需要一个帐户密钥而不是一个以太网密钥?如何安全地生成和保存它?

为什么我们需要一个帐户密钥?

ZkRollup增强了以太网的可扩展性,同时安全性保持在L1级别。与新手用户不同,zkRollup用户可能已经有了一个以太网帐户。为什么我仍然需要一个帐户密钥?主要有三个原因。

1.SNARK友好

帐户密钥需要对SNARK友好。与Ethereum密钥不同,它使用不同的椭圆曲线(例如,Ed25519而不是secp256k1)。一般来说,EdDSA密钥用于签署链下的请求,因为它对SNARK更友好。但是,因为私钥的长度是相同的,所以您仍然可以使用与以太网密钥相同的私钥,但是显然相应的公钥是不同的。

2.与智能合同账户兼容

由于中继器需要签名来检查离线交易的有效性并生成证书,因此它不适用于合同账户。最佳实践是使用以太网帐户授权来创建新的密钥对,该密钥对适用于外部帐户和合同帐户。

3.风险隔离

链下签名带来新的安全风险。如果以太网密钥用于zkRollup,则帐户密钥的泄露意味着以太网帐户不再安全。使用不同的帐户密钥可以隔离风险,即使帐户密钥被盗或丢失,以太网密钥也可以保持安全。

如何生成帐户密钥?

私钥必须是完全随机和不可预测的,并且密钥空间应该足够大。因此,这个问题似乎相当于生成随机数。这看似可行,但并不容易,因为它需要收集足够的噪音。然而,如果以太网帐户已经存在,我们可以使用许多方法从以太网帐户生成一个帐户密钥。

1.使用以太网帐户签名

简单地说,我们可以通过指定签名从私钥生成帐户密钥。根据Vitalik[3],帐户_密钥=ecdsa _ sign(私钥,“42”)。可以使用有意义的消息来代替“42”来警告用户他正在做什么,例如“签署此消息以登录xxx。”。如果以太网帐户是合同帐户,将使用EIP-1271检查有效性。

2.散列签名

马特实验室的联合创始人亚历克斯格鲁乔斯基改进了维塔利克的建议[4],帐户密钥=sha256 (ECDSA _ sign(私钥,“签署此消息以登录XYZ服务”)。他强调:“从密码分析的角度来看,sha256(或另一种伪随机散列)非常重要:签名是椭圆曲线的起点,因此我们需要打破两个密钥之间的任何潜在关系。”实际上,这种方法已经在zkSync中使用过。

它看起来像是PBKDF2[5]的简化版本。然而,我希望有一个更正式的安全分析或证明,因为最近的一些研究结果指出,基于哈希的媒体访问控制有安全风险。

3.3的新方法。循环

在最近的文章[6]中,Loopring提出了一种生成帐户密钥的新方法。洛普林接受了亚历克斯和维塔利科的建议。此外,计数器N被引入,使得当用户更新帐户密钥时,可以明确地生成不同的私钥。

总之,我们可以通过数字签名、伪随机预测器和计数器从以太网帐户中获得一个帐户密钥。帐户密钥是唯一且明确的。但是,您仍然可以选择生成一个随机数作为私钥。

如何管理帐户密钥?

如果帐户密钥是以确定的方式生成的,则不需要额外的措施来管理帐户密钥。当我们需要签署汇总交易时,我们只需要立即从以太网帐户计算帐户密钥。以太网密钥仍然由数字现金钱包管理,这不会在密钥管理中引入额外的安全风险。

然而,大多数帐户密钥仍然存储在浏览器中(这是强烈推荐的),加密钱包(包括硬件钱包)需要支持更多的加密原语,这样dApp就不需要担心密钥管理。

结论

我们可以用确定的方式从以太网帐户生成一个帐户密钥。帐户密钥的安全级别可以与以太网密钥的安全级别相同。加密钱包需要支持更多的加密原语,以提供更好的安全基础设施。

参考文献:

[1]https://midium.com/starkaware/loopring-front-脆弱性-explained-106 df 1a 17 db

[2]https://

[3]https://Twitter.com/Vitalikbuterin/status/1258382081417187331

[4]https://Twitter.com/gluk 64/status/1258426478334787585

[5]https://eprint . iacr . org/2014/406 . pdf

[6]https://blogs . loopring . org/new-approach-to-generation-layer-2-account-key-cn/

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发