mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
平台 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

Polkadot中的密码学

收藏
分享

本文是一篇笔记,整理了Polkadot中使用到的密码学,主要包括:

  • 密钥签名

  • 加密曲线

  • 地址格式

密钥

在Polkadot中,有四个加密层:

  • Account keys,帐户密钥,用于控制资金的密钥,与Polkadot上一个实际的DOT帐户绑定。可以是:

    • controller密钥,是半在线(semi-online)密钥,用于手动提交外部交易,验证人或提名人,使用它来开始或停止验证或提名,仅持有一些DOT支付费用

    • stash密钥,大多数情况下是一个冷钱包的密钥,保持脱机状态,持有大量资金。

  • Session keys,会话密钥,是必须保持在线的“热”(hot)密钥,用于执行网络操作。当前使用的四种会话密钥:

    • GRANDPA: ed25519

    • BABE: sr25519

    • Online: sr25519

    • Parachain: sr25519

  • Nominator keys,提名者密钥,在已抵押/绑定的帐户密钥(stash account keys)与节点在区块生成或验证中使用的会话密钥之间,提供一个信任链,它不能转账DOT。

  • Transport layer static keys,传输层静态密钥,libp2p用来验证节点间连接的,使用会话密钥。

签名

会话密钥:

  • 使用Schnorr签名的ed25519实现

  • Schnorrkel/Ristretto sr25519变体实现

会话密钥:

  • Ristretto Schnorr公钥(公钥-32字节,签名-64字节,VRF-96字节),提名者密钥,VRF区块生成

  • BLS12-381小曲线(公钥-48字节,签名-96字节),更高效的聚合(aggre gate d)签名,将用于GRANDPA中

  • BLS12-381大曲线(公钥-96字节,签名-48字节)

  • 传输层身份验证密钥

Polkadot的帐户主要使用带有Schnorr签名的公钥,Polkadot认为它满足:

  • 在比特币Schnorr愿望清单提到的支持多重签名

  • 较快的签名,批量验证比ECDSA更简单,以及更自然的阈值

  • 支付通道用到的技巧

  • 改善区块验证

  • 和极其安全的Ed25519或secp256k1曲线一起工作得很好

加密曲线

区块链中的账户通常有两种曲线选择:secp256k1或Ed25519。

Polkadot对secp256k1密钥有最小化支持,其一些帐户需要用到secp256k1密钥。

Polkadot选择Ed25519(Edwards曲线),有两个理论上的原因:

  • secp256k1有较小的CM(complex multiplication,虚数乘法)域判定

  • secp256k1具有相当严格的参数选择,但不是绝对最好的

地址格式

在Polkadot采用SS58地址格式。SS58是一个简单的地址格式,设计用于基于Substrate开发的链。对于链使用其他地址格式没有问题,但这是可靠的默认设置。它很大程度上基于 比特币 的Base-58检查格式,并做了一些改动。

基本思想是一个base-58编码的值,它可以标识Substrate链上的一个特定帐户。不同的链有不同的识别账户的方法。因此,SS58被设计为可扩展的。

其基本的格式为:

base58encode ( concat ( <address-type>, <address>, <checksum> ) )

可在Substrate GitHub Wiki上找到SS58地址格式的实时规范。

椭圆曲线库

  • Ed25519

    • ed25519-dalek

    • Github:https://github.com/dalek-cryptography/ed25519-dalek

  • Sr25519

    • schnorrkel

    • Github:https://github.com/w3f/schnorrkel

  • BIP39

    • substrate-bip39

    • Github:https://github.com/paritytech/substrate-bip39

加密哈希函数库

  • blake2

    • blake2-rfc

    • Github:https://github.com/cesarb/blake2-rfc

  • SHA-3

    • tiny-keccak

    • Github:https://github.com/debris/tiny-keccak

术语

  • Ed25519,elliptic-curve signatures,

  • Sr25519,Schnorr-like signature,

  • HSM,Hardware Security Module,硬件安全模块

  • HDKD,Hierarchical Deterministic Key Derivation,分层确定性密钥推导

  • NIZK,Non-Interactive Zero-Knowledge,非交互零知识

  • zk-SNARK,Zero-Knowledge Succinct Non-interactive Argument of Knowledge,简洁非交互知识论证

  • VRF,Verifialbe Random Function,可验证的随机函数

  • PBKDF2,Password-Based Key Derivation Function 2,基于密码的密钥推导函数

  • Argon2,密钥推导函数

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。