区块链系统中,用到了许多的密码学原理来保证系统的安全性、隐私性。对称加密对称加密中,加密和解密始终使用一把秘钥。这把秘钥由双方协商好,在网络传输等不安全场景中,使用密文进行传输。
在区块链系统中,用到了许多的密码学原理来保证系统的安全性、隐私性。
对称加密中,加密和解密始终使用一把秘钥。这把秘钥由双方协商好,在网络传输等不安全场景中,使用密文进行传输。在接受者收到密文后,使用双方的秘钥进行解密即可完成信息的加密传输。
DES(Data Encryption Standard
)是一种对称加密算法,它在 1977
年由美国国家标准局(NBS
)采纳为联邦数据处理标准(FIPS
)。
特点:
DES
属于对称加密方案。56
位,很短。DES
的安全性很差,秘钥长度只有 56
位,可以被短时间内破解,目前该加密方式已被弃用。
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(Advanced Encryption Standard,高级加密标准)
是目前世界上使用最广泛的对称加密算法,已被美国国家标准与技术研究院(NIST
)采用为数据加密标准,用于替代早已不安全的 DES/3DES
。
它的优势在于:
特点:
秘钥长度:128
、192
、256
位
加密轮数:10(128位)、12(192位)、14(256位)
AES
是目前 全球主流加密算法,被广泛用于:
TLS/HTTPS
zip
、PDF
、BitLocker
)KMS
、HSM
等截止目前,AES
未被实际攻破(前提是使用正确的模式和密钥管理)
在钱包项目中,最常用到 AES
加密的地方为:去中心化钱包中私钥加密存储(例如 metamask
等钱包会在你手机本地数据库文件中存储加密之后的私钥)。
B
会生成一对秘钥(私钥和公钥),私钥为自己持有,公钥是公开的,可以公开到网络中。
A
在加密信息的时候,使用 B
的公钥进行加密,加密后的隐私信息通过网络进行传输。而 B
在收到隐私信息后,使用自己的私钥进行解密。
在这个过程中,B
的公钥是公开的,别人都可以用来加密。B
的私钥是自己私有的,不会暴露出去,故可以保证数据传输的安全性。
ECDSA
、EDDSA
所做的实际上是签名、验签的操作。
在签名上,用户 A
想要给用户 B
发送一段消息,需要保证这个消息的完整性和可追溯,但并不关心消息的隐私性。所以,A
需要生成自己的私钥、公钥,然后使用自己的私钥进行签名,然后 B
收到签名后,使用 A
的公钥将签名和 A
发给自己的原始信息进行比对,比对成功后即可确认这个原始消息是 A
发送的,并且没有遭到篡改。
ECDSA
(椭圆曲线数字签名算法)是基于椭圆曲线密码学(ECC
)的一种数字签名算法,相比于传统的 DSA
或 RSA
,在提供同等级安全性的同时,拥有更短的密钥、更快的运算效率。
ECDSA
是一种签名算法,但是其基于的曲线还是有不一样的,常见的有:
secp256k1
:比特币、以太坊在用secp256r1
:hyperledger fabric
在用secp384r1
:政府、军用系统在用注意:ECDSA
的安全性,依赖的是椭圆曲线的离散对数问题,依赖的是随机数。
EdDSA
是一种现代化的椭圆曲线数字签名算法,是对传统 ECDSA
的优化替代。它具有更高的安全性、更快的签名/验证速度、固定长度签名、更少的依赖于随机数质量等优点。
常用的曲线为
Ed25519
:solana
、ton
等在使用
EdDSA
相对于 ECDSA
而言,不依赖随机数,并且签名、验签速度更快。
BLS
签名(Boneh–Lynn–Shacham Signature
)是一种基于双线性配对(bilinear pairing
)的聚合数字签名算法,它的最大优势是:可以将多个签名压缩成一个、多个公钥聚合成一个、多个消息也可聚合验证,非常适用于区块链中的共识场景(如 PoS
投票、多验证人签名、跨链签名等)。
安全性:基于椭圆曲线上的双线性配对难题
曲线:常用 BN254
和 BN381
曲线
核心:检验 e(signature, G2_generator) = e(H(m), publicKey)
不依赖随机数:BLS
签名是一种确定性签名算法,不依赖随机数的生成。
BLS
签名的验证的核心是通过检验 signature
签名 和 G2_generator
的配对是否等于 H(m)
消息哈希和公钥 publicKey
的配对。
BLS
签名的最大特点就是可以支持聚合签名以减少签名的长度,以及聚合公钥解决验签过程中需要进行循环配对的问题。BLS
签名天生就是在多重签名的的场景使用的(例如在以太坊中共识节点去进行 PoS
的投票确定某个块的 finalized
)
Schnorr
签名是一种简洁、高效且安全性良好的数字签名算法,基于离散对数难题,最初由 Claus Schnorr
提出。由于其简单的数学结构和可扩展性,被认为是数字签名领域的黄金标准之一,Bitcoin
Taproot
就采用了 Schnorr
签名方案。
Schnorr
签名主要基于椭圆曲线加密(ECC
)上的运算。Schnorr
签名依赖一个随机数和一个椭圆乘法。Schnorr
生成的所有签名可以聚合成一个。加密解密、签名验签这一讲目前就先讲到这里,总得来说,对称加密使用 AES
,非对称加密(签名)使用 ECDSA
或 EDDSA
,多重、聚合签名有 BLS
和 Schnorr
签名。
下一讲将给大家带来钱包系统的私钥的管理方式,包括门限秘密共享和 MPC
的管理方式。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!