注:原文作者是以太坊联合创始人Vitalik Buterin,在这篇文章中,他描述了一种新型的M-of-N密钥分享方案,并提出了脑钱包和社交恢复设计的两种应用案例。
假设你希望生成一个秘密 s,而s可通过将N个密钥分享中的M个放在一起来恢复,其中所有N个密钥分享是预先知道的。那么这种方案有两个用例:
一种脑钱包,其中N个密钥分享是N个安全问题的答案,并且你希望仅通过M个安全问题的答案就可以恢复资金(单独的安全问题会很糟糕,但如果你将20个安全问题组合起来,你可以获得相当多的熵);
V神提出跨Rollup扩展方案以实现L2项目相互通信:3月3日消息,近日V神于社区论坛提出了一种针对特定类型的跨Rollup扩展的解决方案,以连接第二层扩展项目。根据该方案,虽然目前有许多项目已经部署了第二层Rollup方案,但问题在于各种二层项目不能直接在L2上实现相互通信。V神提议使用Rollup在两个支持智能合约的协议之间进行传输。假设一个rollup可以处理简单的事务,而另一个则具有完全的智能合约支持特性。为确保未来交易的安全,智能合约将被编程为接受“备忘录”,其中包括任何人向它发送的额外数据。事务将创建一个连接层,在所有这些隔离的合约中保存存款,允许rollup A通过该层发送到rollup B。针对该方案,Alon Muroch表示该方案就像银行之间的交易清算一样。将资产批量分配到单独的“账户”中可能会有限制,但两端都设置一个大池,并按比例分摊费用可以是一种解决方案。(Cointelegraph)[2021/3/3 18:10:05]
一种社交恢复设计,其中你希望使用阈值解密而不是智能合约钱包,因为你正在尝试恢复访问私人数据,而不是加密货币,并且你希望你的恢复合作伙伴能够使用他们已经拥有的密钥(以减少有丢失这些密钥的风险);
V神提出改进以太坊隐私性计划 实现地址隐藏:4月1日,以太坊创始人V神发推文称,改进以太坊隐私的下一步(除了正在进行的tornado改进之外,现金以及类似的东西):一些简单、易于使用的、类似隐私地址的计划。即把代币发送一个拥有ENS(以太坊域名系统)名称的地址,而不向公布具体是谁得到了币。对此,V神解释其计划工作原理称 ,实现隐私地址很简单:ENS的名称持有者发布该有私钥的公钥P。代币发送者生成随机的r,并将其发送到地址r*P(这是椭圆曲线乘法)。ENS名称持有者可以用r*p消费这些代币。发送者只需以某种方式发送r到姓名持有者。此外,V神还提到另一个方法。他称,使用带有加密r的公钥P并将其发布到链上。但这需要接收方扫描所有的私有发送交易,因此长期来看运行非常昂贵。可以分割成T段存储,将扫描时间减少T倍,但也将匿名性减少了T倍,因此需要权衡。[2020/4/1]
普通的 M-of-N 密钥分享方案不适用于这些用例中的任何一个,因为它只允许预先选择 M 个密钥分享,剩余的 (N-M) 个密钥分享必须使用一种确定性算法从原始的M个中产生,并且看起来像随机数据(在脑钱包的情况下,它们不适合作为安全问题的答案,在社交恢复的情况下,需要用户使用特殊软件来存储它们,而不是从现有的HD钱包中衍生出来)。
动态 | V神提出数据迁移新方法 或使以太坊1.0更快过渡到2.0:在12月23日的Ethresear.ch提案中,以太坊联合创始人Vitalik Buterin提出了一种将数据迁移到以太坊 2.0的更快方法,这意味着期待已久的升级可能比预期的要快。Buterin描述了一种消除Ethereum 1.0当前工作证明区块链的方法,这将允许项目“加速进度”与Ethereum 2.0的信标链合并。据悉,以太坊2.0是一个多年的项目,它经常面临延迟。目前还不清楚这一过渡将在何时实施。(CryptoBriefing)[2019/12/24]
所以这就是我们要去改进的,我们制定了一个 N-of-(2N-M) 阈值方案,从原N个密钥分享生成( N-M) 个附加密钥分享。然后我们在区块链上发布所有N-M 个附加密钥分享。如果需要,在社会恢复案例中,人们可以简单地给每个参与者一份所有附加密钥分享的副本。这会导致附加密钥分享变成有效的公共信息:它们丢失的风险可以忽略不计,但任何攻击者都会拥有它们。而结果是,在未发布的 N个密钥分享中,只要有M个密钥分享与 N-M 个附加密钥分享结合并揭示数据,我们就有了一个M-of-N方案,这正是我们想要的。
V神提出了链交叉链接来实现他早前提出的最小分片规范:据trustnodes消息,V神提出了链交叉链接来实现他早前提出的最小分片规范。简单地说,这是在试图将主链与分片链连接起来。V神说他们的想法是,有两种类型的交叉连接,一种是从主链到分片,另一种是从分片到主链。一个从分片到主链的链接必须由一个委员会签署,而该委员会的责任是证明自上一次为该分片建立的交叉链接以来所有分片块的可用性。一旦建立了S2MC链接,主链的有效性就取决于该分片链的有效性,如果一个主链包含一个无效的分片链块的链接,那么整个主链就会被认为是无效的。它似乎表明简单的规格实际上可能有点整体性。[2018/4/30]
2021年7月18日更新:社交恢复用例的替代机制
在社交恢复用例中,我们希望设置过程尽可能简单,因为用户是懒惰倾向的,如果设置困难,他们将不可避免地选择不安全的小型恢复伙伴集。这意味着以去中心化方式生成密钥分享所需的分布式密钥生成 (DKG) 可能是一个坏主意,因为它需要 2 轮通信(这意味着额外的区块链交易或每个人同时在线并拥有同步通信通道)。
相反,我们可以利用账户持有人自己拥有他们的私钥这一事实。他们可以简单地向每个恢复伙伴询问他们的公钥(例如,通过 pk = G * hash(ecdsa_sign(msk, nonce)),其中 msk 是恢复伙伴的主要密钥),然后在链上发布一笔包含 nonce 的交易,并为每个 i 加密(share_i, pk_i) (注:其中 share_i 是第 i 个密钥分享,pk_i 是第 i 个参与者的公钥)。
如果我们避免重复使用nonce随机数,从而不重用密钥(例如,设置nonce = hash(secret, maddr_1 ... maddr_n),其中secret是放入恢复的值,maddr_i是第i个恢复伙伴的地址,应该就足够了),我们可以使用基础的Diffie-Hellman加密算法进行加密,这意味着仅具有 32 * (n+1) 个字节calldata数据的单笔交易,就足以保存恢复信息。
对此方案,ethresear.ch 论坛成员kelvin评论称:
这很有趣! 我猜在社交恢复设计中,N个参与者会给他们的私钥附加一些公共盐(salt,指通过在密码任意固定位置插入特定的字符串),然后将其哈希生成N个预先知道的密钥分享?否则他们将不愿意泄露自己的密钥分享,以让N?M个附加密钥分享被计算,并且他们还必须透露 M 个密钥才能恢复秘密。此外,你认为人们会用这种方式来分发哪些类型的私人数据呢?
而Vitalik则回复称:
1、实际上,他们会使用 hash(ecdsa_sign(key, salt))作为哈希函数来生成子密钥,因为 ecdsa_sign 方法在 web3 API 中公开并且具有标准化的确定性输出。 但这是一个实现细节, 效果是一样的。2、我只是在考虑‘以太坊电子邮件’以及像Status这样的去中心化消息传递应用的加密密钥。另一个用例当然是其他区块链的私钥。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。