区跨链密码学

发布于:2025-03-22 ⋅ 阅读:(15) ⋅ 点赞:(0)

1. 哈希算法(Hash)

❓1.1 什么是哈希算法?区块链中为什么需要哈希?

哈希算法是一种不可逆的、确定性的、固定长度的散列函数,用于将输入数据映射成固定长度的字符串。

在区块链中的作用:

  • 数据完整性:确保区块内容未被篡改(Merkle Tree)。
  • 唯一标识:区块哈希值用于唯一标识区块。
  • 密码学安全性:哈希值难以逆推,保证安全性。

常见哈希算法:

  • SHA-256(比特币):固定 256 位输出,抗碰撞强。
  • Keccak(以太坊):SHA-3 变种,优化安全性。

❓1.2 哈希算法的特性?

  • 确定性:相同输入必定得到相同输出。
  • 快速计算:输入能在短时间内计算出哈希值。
  • 抗碰撞性:不同的输入尽量不产生相同的哈希值(哈希碰撞概率极低)。
  • 抗篡改性:任意小的输入改动,输出都将大幅度变化(雪崩效应)。
  • 单向性:无法由哈希值反推出原始数据(不可逆性)。

❓1.3 哈希算法的碰撞攻击是什么?

碰撞攻击是指两个不同的输入产生相同的哈希值,这会影响区块链的安全性。
目前 SHA-256 仍然足够安全,而 MD5、SHA-1 已被攻破,不建议使用。


2. 数字签名(Digital Signature)

❓2.1 什么是数字签名?如何保证交易的不可篡改性?

数字签名由 私钥签名、公钥验证,用于确保消息的真实性和完整性

区块链中的数字签名机制:

  1. 发送方(私钥签名)

    • 计算交易哈希 H(msg)
    • 用私钥 sk 生成签名 sig = Sign(sk, H(msg))
    • 发送交易 (msg, sig)
  2. 接收方(公钥验证)

    • 计算哈希 H(msg)
    • 使用公钥 pk 验证 Verify(pk, sig, H(msg))

不可篡改性
如果攻击者想要篡改交易 msg',他必须生成新的 sig' = Sign(sk, H(msg')),但他没有 sk,因此无法伪造有效签名。

❓2.2 常见的数字签名算法

  • ECDSA(椭圆曲线数字签名算法)(比特币、以太坊)
  • EdDSA(Ed25519)(Solana、ZCash,速度更快)
  • Schnorr 签名(Taproot,支持多重签名聚合)

❓2.3 ECDSA 签名过程

  1. 选取随机数 k
  2. 计算椭圆曲线点 (r, s)
  3. 计算 s = k⁻¹(H(m) + r * sk) mod n
  4. (r, s) 作为签名

ECDSA 关键问题:

  • k 不能泄露,否则私钥会被推导出来
  • r, s 不能重用,否则可恢复私钥

3. 公私钥体系 & 非对称加密

❓3.1 什么是非对称加密?与对称加密的区别?

加密方式 密钥数量 速度 安全性 适用场景
对称加密(AES) 1 把密钥 相对较低 数据加密
非对称加密(RSA/ECDSA) 公钥+私钥 更高 签名、身份认证

在区块链中,公私钥对主要用于身份认证,而不会用于加密数据,因为非对称加密开销较大。

❓3.2 区块链如何生成公私钥对?

ECDSA 为例:

  1. 私钥(sk):随机生成一个 256-bit 整数。
  2. 公钥(pk)pk = sk * G(G 是椭圆曲线基点)。

比特币 & 以太坊地址生成过程


rust

复制编辑

私钥 (256-bit) --> 公钥 (椭圆曲线计算) --> 取哈希 (SHA-256 + RIPEMD-160) --> 地址

❓3.3 为什么私钥不能暴露?

  • 只要攻击者获得私钥 sk,就可以 伪造签名 并盗取资产。
  • 私钥是唯一身份凭证,无法找回。

4. 零知识证明(ZKP)

❓4.1 什么是零知识证明?

零知识证明(ZKP) 允许证明者向验证者证明某个声明为真,但不暴露具体内容
例如,在不暴露密码的情况下,证明自己知道密码。

❓4.2 零知识证明的三大性质

  1. 完备性(Completeness):如果声明为真,验证者一定能验证通过。
  2. 可靠性(Soundness):如果声明为假,证明者无法欺骗验证者。
  3. 零知识性(Zero Knowledge):验证者无法获得额外信息。

❓4.3 零知识证明在区块链的应用

  • 隐私保护(ZCash,Mina):交易金额、账户余额隐私化。
  • Layer2 扩展(zk-Rollup):大规模交易聚合,提高吞吐量。

常见零知识证明:

  • zk-SNARK(ZCash、Polygon zkEVM)
  • zk-STARK(无需可信设置,安全性更高)

5. 多方计算(MPC)、门限签名(TSS)

❓5.1 MPC(多方安全计算)

MPC 允许多个参与方共同计算,但不暴露彼此的输入,常用于:

  • 去中心化钱包(Safe, MPC 钱包):私钥分片存储,防止单点攻击。
  • 门限签名(TSS):多个参与方共同签名,不泄露私钥。

❓5.2 门限签名(TSS)

TSS 允许N 个节点共同签名,但只有 T 个节点可以恢复签名:

  • 应用
    • 去中心化交易所(DEX)
    • 多重签名钱包(Safe, Binance Custody)
  • 优点
    • 无私钥单点故障(私钥分布在多个节点)。
    • 比普通多签(MultiSig)更高效

总结

  1. 哈希算法:SHA-256(比特币)、Keccak(以太坊),提供不可篡改性。
  2. 数字签名:ECDSA、EdDSA,保障交易的真实性与完整性。
  3. 公私钥:非对称加密,保证身份认证。
  4. 零知识证明:zk-SNARK、zk-STARK,保护交易隐私,提高扩展性。
  5. 多方计算:MPC、TSS,用于去中心化身份认证、钱包安全。