LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > DOT 持币者必读:波卡密钥系统中 Controller 和 Stash 究竟是什么?

DOT 持币者必读:波卡密钥系统中 Controller 和 Stash 究竟是什么?

2020-08-06 PolkaWorld 来源:链闻

Controller 用于提交手动 extrinsics 外部文件,频繁与互联网接触,而 Stash 密钥账户相当于冷钱包,可用来存放大量资金。

原文标题:《DOT 持币用户必看:Controller 和 Stash 账户的作用》
撰文:Bruno ?kvorc
翻译:PolkaWorld

公钥和私钥是大多数加密系统很重要的东西,也是使像 Polkadot 这样的区块链得以存在的重要组成部分。

账户密钥

帐户密钥是用来控制资金的密钥。它们可以是:

使用 Schnorr 签名的普通 ed25519 加密算法实现使用 Schnorr 签名的 Schnorrkel / Ristretto sr25519 变体的加密算法

对于简单签名,ed25519 和 sr25519 在安全性上没有区别。

我们预计在可预见的未来,ed25519 将得到商用 HSMs 更好的支持。

同时,sr25519 的加密算法使实现更复杂的协议更安全。特别是,sr25519 自带了许多协议的安全版本,如比特币和以太坊生态系统中常见的 HDKD 协议。

「Controller」 和 「Stash」 密钥

当我们谈论 「controller」 和 「stash」 密钥时,我们通常在运行验证人或提名 DOT 的语境中讨论它们,但它们是所有用户都需要知道的有用概念。这两个密钥都是帐户密钥的类型。它们的区别在于它们的使用场景,而不是密码差异。上面部分中提到的所有信息都适用于这些密钥。创建新的 controller 或者 stash 密钥时,帐户密钥支持的所有加密算法都是可以选择的。

controller 密钥是一个半在线的密钥,将由用户直接控制,用于提交手动 extrinsics 外部文件。对于验证人或提名人,这意味着 controller 密钥将用于开始或停止验证或提名。Controller 的密钥应该有一些 DOT 用来支付费用,但它们不应该用来保存巨额金额或用来做长期的代币储蓄。因为他们会相对频繁地接触互联网,所以应该小心对待,偶尔可以更换一个新的账户。

在大多数情况下,stash 密钥账户是一个冷钱包,存在于一个安全的、由多层硬件保护的一张纸上。它应该很少(如果有的话)暴露在互联网上或用于提交 extrinsics 外部信息。这把钥匙是用来存放大量资金的。它可以被认为是银行的储蓄账户,理想情况下只有在紧急情况下才可以使用。或者,一个更贴切的比喻是把它想象成埋藏的宝藏,藏在某个随机的岛屿上,只有最初藏它的海盗知道。

由于 stash 账户处于离线状态,因此必须将其资金绑定到特定的 controller 账户。对于非支出行为,controller 账户有 stash 账户资金的支持。例如,在提名、staking 或投票中,controller 可以用 stash 的 weight 来表示其偏好。它将永远无法实际转移或领取 stash 账户中的资金。但是,如果有人获取了你的 controller 密钥,他们可能会将其用于进行存在被 slash 的行为,因此你仍然应该保护它并定期更改。

Session 密钥

Session keys 是验证人必须保持在线才能执行网络操作的热密钥(hot keys)。Session 密钥通常在客户端中生成,虽然他们不一定要生成。它们不是用来控制资金的,只用于有目的的用途。它们可以定期更改,你的 controller 账户只需要通过签署一个 session 公钥来创建证书,并通过一个外部 extrinsic 广播该证书就好了。

Polkadot 有四种 session keys:

GRANDPA 机制:ed25519BABE 机制:sr25519我在线:sr25519平行链:sr25519

BABE 需要适合在可验证随机函数中使用的密钥以及数字签名。Sr25519 密钥具有这两种功能,因此用于 BABE 机制。

在将来,我们计划为 GRANDPA 机制使用 BLS 密钥,因为它允许更有效的签名聚合。

常见问题解答

为什么选择 ed25519 而不是 secp25K1?

最初为 Polkadot 和 Substrate 链实现的密钥推导密码是 ed25519,这是在 Edward's Curve 25519 (由于曲线方程的参数而得名) 上实现的 Schnorr 签名算法。

大多数加密货币,包括比特币和以太坊,目前在 secp256k1 曲线上使用 ECDSA 签名。这种曲线被认为比 NIST 曲线更安全,后者可能有国家安全局的后门。Curve25519 被认为可能比这个更安全,并且可以更容易地实现 Schnorr 签名。最近的专利到期使它成为波卡的首选。

选择使用 Schnorr 签名而不是使用 ECDSA 并不那么简单。正如 Jeff Burdges (一位 Web3 研究员)在论坛上发表的关于以下话题的 文章。

对于帐户密钥,我们选择 Schnorr 签名而不是 ECDSA 签名有一个牺牲:两个签名都需要 64 个字节,但是只有 ECDSA 签名传递它们的公钥。有一些过时的 Schnorr 变体支持从签名中恢复公钥,但它们破坏了重要的功能,如分层确定性密钥派生。因此,Schnorr 签名通常需要额外的 32 字节作为公钥。

但最终,使用 Schnorr 签名的好处大于权衡,未来的优化可能会解决上面引用的低效问题。

sr25519 算法是什么?它是从哪里来的?

一些背景:扭曲的 Edward's Curve25519 上的 Schnorr 签名被认为是安全的,但是 Ed25519 并不是完全没有缺陷的。最值得注意的是,Monero 和所有其他加密货币都容易受到双重支出的攻击,这可能会导致未被发现的无限通胀。

这些漏洞是由于 Ed25519 中的一个特性造成的,它被称为 8 的辅助因子。曲线的辅因子是一个深奥的细节,它可能会对更复杂协议的安全实现产生可怕的后果。

很方便,Mike Hamburg 的 Decaf 论文 为解决这个潜在的缺陷提供了一条可能的途径。Decaf 基本上是一种利用扭曲的 Edward 曲线辅助因子并对其进行数学改变的方法,对性能的影响很小且增加安全性。

Ristretto 小组的 Decaf 论文在 Rust 中得到了扩展和实现,包括辅助因子 8 曲线,如 Curve25519,这使得 Edward 曲线上的 Schnorr 签名更加安全。

Web3 基金会已经实现了一个 Schnorr 签名库,在 Schnorrkel 存储库中使用了更安全的 Ristretto 压缩曲线 25519。Schnorrkel 在曲线压缩的基础上实现了相关的协议,如 HDKD、MuSig 和可验证随机函数(VRF)。它还包括各种小的改进,例如散列方案选通,理论上可以处理大量的数据,只需跨越 Wasm 边界一次调用。

在 Polkadot 中使用的 Schnorr 签名的实现,通过对 Curve25519 的 Ristretto 压缩实现 Schnorrkel 协议,称为 sr25519。

波卡中是否使用 BLS 签名?

还没有,但他们会的。BLS 签名允许更有效的签名聚合。因为 GRANDPA 验证人通常签署同一件事(例如,一个块),所以聚合它们是有意义的,这也可以优化其他协议。

如 BLS 库自述中所述,

Boneh-Lynn-Shacham (BLS)签名具有签名速度慢、验证速度慢、需要缓慢且不太安全的配对友好曲线,并且趋向于危险的延展性。然而,BLS 允许一系列不同的签名聚合选项,远远超过任何其他已知的签名方案,这使得 BLS 成为共识算法投票和阈值签名的首选方案。

尽管 Schnorr 签名允许签名聚合,但 BLS 签名在某些样式中更有效。因此,它将是 Polkadot 网络上的验证人将使用的会话密钥之一,并且对 GRANDPA 最终性小工具至关重要。

参考资源

BIP32-Ed25519 上的密钥发现攻击:详细说明 BIP32-Ed25519 潜在攻击的一篇论坛帖子。转变为 sr25519 变体的动机。
https://forum.web3.foundation/t/key-recovery-attack-on-bip32-ed25519/44

Polkadot 中的账户签名和密钥:Web3 研究员 Jeff Burdges 在论坛上的原始帖子。
https://forum.web3.foundation/t/account-signatures-and-keys-in-polkadot/70

Schnorr 签名可以抵抗量子计算吗?
https://bitcoin.stackexchange.com/questions/57965/are-schnorr-signatures-quantum-computer-resistant/57977#57977

来源链接:wiki.polkadot.network

—-

编译者/作者:PolkaWorld

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...