钱包密码学 - 区块链中常见的密码学知识及相应概念

区块链系统中,用到了许多的密码学原理来保证系统的安全性、隐私性。对称加密对称加密中,加密和解密始终使用一把秘钥。这把秘钥由双方协商好,在网络传输等不安全场景中,使用密文进行传输。

区块链中用到的密码学

在区块链系统中,用到了许多的密码学原理来保证系统的安全性、隐私性。

对称加密

对称加密中,加密和解密始终使用一把秘钥。这把秘钥由双方协商好,在网络传输等不安全场景中,使用密文进行传输。在接受者收到密文后,使用双方的秘钥进行解密即可完成信息的加密传输。 image.png

DES:(已弃用)

DES(Data Encryption Standard)是一种对称加密算法,它在 1977 年由美国国家标准局(NBS)采纳为联邦数据处理标准(FIPS)。

特点:

  • 对称加密:DES 属于对称加密方案。
  • 长度:56 位,很短。
  • 速度:较慢,效率差。 DES 的安全性很差,秘钥长度只有 56 位,可以被短时间内破解,目前该加密方式已被弃用。

    3DES:(仍安全,但复杂,待淘汰)

    3DES``(Triple DES,全称 Triple Data Encryption Standard)是对 DES 加密算法的一个加强版本,通过多次加密提高安全性,用来延长 DES 的使用寿命,直到更安全的 AES 被广泛采用。

3DES 的核心思想是:讲 DES 算法执行三次,从而加强加密强度。

  • 密钥长度:3DES 常见有两种密钥方案:
  • 2-key 3DES:使用两个密钥(K1 和 K2),长度为 112
  • 3-key 3DES:使用三个密钥(K1、K2、K3),长度为 168

目前,NIST 已不推荐在新系统中继续使用 3DES,计划在未来彻底淘汰(2030 年前逐步禁用)。故我们在区块链项目中,对于 3DES 用得也不多。

AES:(最常用,现代标准)

AES(Advanced Encryption Standard,高级加密标准)是目前世界上使用最广泛的对称加密算法,已被美国国家标准与技术研究院(NIST)采用为数据加密标准,用于替代早已不安全的 DES/3DES

它的优势在于:

  • 快速(可硬件加速)
  • 安全(抗已知攻击)
  • 适用于各种场景(硬件、软件、嵌入式)

特点: 秘钥长度:128192256 位 加密轮数:10(128位)、12(192位)、14(256位)

AES 是目前 全球主流加密算法,被广泛用于:

  • TLS/HTTPS
  • 文件加密(如 zipPDFBitLocker
  • 区块链钱包/签名保护
  • 云服务 KMSHSM

截止目前,AES 未被实际攻破(前提是使用正确的模式和密钥管理)

在钱包项目中,最常用到 AES 加密的地方为:去中心化钱包中私钥加密存储(例如 metamask 等钱包会在你手机本地数据库文件中存储加密之后的私钥)。

非对称加密

  • 加密、解密 在加密过程中,用户 B 会生成一对秘钥(私钥和公钥),私钥为自己持有,公钥是公开的,可以公开到网络中。 A 在加密信息的时候,使用 B 的公钥进行加密,加密后的隐私信息通过网络进行传输。而 B 在收到隐私信息后,使用自己的私钥进行解密。 在这个过程中,B 的公钥是公开的,别人都可以用来加密。B 的私钥是自己私有的,不会暴露出去,故可以保证数据传输的安全性。 image.png
  • 签名、验签 相对于加密、解密而言,其实签名、验签在我们区块链中用的更多。ECDSAEDDSA 所做的实际上是签名、验签的操作。 在签名上,用户 A 想要给用户 B 发送一段消息,需要保证这个消息的完整性和可追溯,但并不关心消息的隐私性。所以,A 需要生成自己的私钥、公钥,然后使用自己的私钥进行签名,然后 B 收到签名后,使用 A 的公钥将签名和 A 发给自己的原始信息进行比对,比对成功后即可确认这个原始消息是 A 发送的,并且没有遭到篡改。 image.png

    ECDSA:

    ECDSA(椭圆曲线数字签名算法)是基于椭圆曲线密码学(ECC)的一种数字签名算法,相比于传统的 DSARSA,在提供同等级安全性的同时,拥有更短的密钥、更快的运算效率。 ECDSA 是一种签名算法,但是其基于的曲线还是有不一样的,常见的有:

  • secp256k1:比特币、以太坊在用
  • secp256r1hyperledger fabric 在用
  • secp384r1:政府、军用系统在用

注意:ECDSA 的安全性,依赖的是椭圆曲线的离散对数问题,依赖的是随机数。

EdDSA:

EdDSA 是一种现代化的椭圆曲线数字签名算法,是对传统 ECDSA 的优化替代。它具有更高的安全性、更快的签名/验证速度、固定长度签名、更少的依赖于随机数质量等优点。 常用的曲线为

  • Ed25519solanaton 等在使用 EdDSA 相对于 ECDSA 而言,不依赖随机数,并且签名、验签速度更快。

    BLS:

    BLS 签名(Boneh–Lynn–Shacham Signature)是一种基于双线性配对(bilinear pairing)的聚合数字签名算法,它的最大优势是:可以将多个签名压缩成一个、多个公钥聚合成一个、多个消息也可聚合验证,非常适用于区块链中的共识场景(如 PoS 投票、多验证人签名、跨链签名等)。

  • 安全性:基于椭圆曲线上的双线性配对难题

  • 曲线:常用 BN254BN381 曲线

  • 核心:检验 e(signature, G2_generator) = e(H(m), publicKey)

  • 不依赖随机数BLS 签名是一种确定性签名算法,不依赖随机数的生成。

BLS 签名的验证的核心是通过检验 signature 签名 和 G2_generator 的配对是否等于 H(m) 消息哈希和公钥 publicKey 的配对。

BLS 签名的最大特点就是可以支持聚合签名以减少签名的长度,以及聚合公钥解决验签过程中需要进行循环配对的问题。BLS 签名天生就是在多重签名的的场景使用的(例如在以太坊中共识节点去进行 PoS 的投票确定某个块的 finalized

Schnorr:

Schnorr 签名是一种简洁、高效且安全性良好的数字签名算法,基于离散对数难题,最初由 Claus Schnorr 提出。由于其简单的数学结构和可扩展性,被认为是数字签名领域的黄金标准之一,Bitcoin Taproot 就采用了 Schnorr 签名方案。

  • Schnorr 签名主要基于椭圆曲线加密(ECC)上的运算。
  • Schnorr 签名依赖一个随机数和一个椭圆乘法。
  • 可聚合:Schnorr 生成的所有签名可以聚合成一个。

总结

加密解密、签名验签这一讲目前就先讲到这里,总得来说,对称加密使用 AES,非对称加密(签名)使用 ECDSAEDDSA,多重、聚合签名有 BLSSchnorr 签名。

下一讲将给大家带来钱包系统的私钥的管理方式,包括门限秘密共享和 MPC 的管理方式。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
shawn_shaw
shawn_shaw
web3潜水员、技术爱好者、web3钱包开发工程师、欢迎交流工作机会。欢迎闲聊、交流技术、交流工作:vx:cola_ocean