【区块链】区块链密码学基础-LMLPHP
【区块链】区块链密码学基础-LMLPHP

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"

【区块链】区块链密码学基础-LMLPHP


区块链密码学基础

引言

密码学是区块链技术的核心基石,没有现代密码学的支撑,区块链的去中心化、不可篡改等特性将无从谈起。本文将深入浅出地介绍区块链中的密码学基础知识。
【区块链】区块链密码学基础-LMLPHP

一、哈希函数

1.1 基本概念

哈希函数(Hash Function)是区块链中最基础的密码学工具,它可以将任意长度的输入数据映射为固定长度的输出。在区块链中最常用的是 SHA-256 算法。

哈希函数具有以下特性:

  • 单向性:由输入计算输出容易,但由输出推算输入几乎不可能
  • 抗碰撞性:找到两个不同的输入产生相同的输出是极其困难的
  • 确定性:相同的输入必然产生相同的输出
  • 雪崩效应:输入的微小变化会导致输出的巨大变化

1.2 数学表达

对于输入消息 m m m,哈希函数 H H H 将生成固定长度的哈希值:

H ( m ) = h H(m) = h H(m)=h,其中 h h h 的长度固定
【区块链】区块链密码学基础-LMLPHP

二、非对称加密

2.1 基本原理

非对称加密使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥可以公开分享,私钥需要安全保管。在区块链中,最常用的是椭圆曲线加密算法(ECDSA)。

2.2 数学基础

椭圆曲线加密基于如下方程:

y 2 = x 3 + a x + b ( m o d p ) y^2 = x^3 + ax + b \pmod{p} y2=x3+ax+b(modp)

其中 a a a b b b 是系数, p p p 是一个大素数。

私钥是一个随机数 k k k,公钥 K K K 通过以下方式生成:

K = k ⋅ G K = k \cdot G K=kG

其中 G G G 是椭圆曲线上的基点。

2.3 应用场景

  • 数字签名
  • 地址生成
  • 身份认证

三、数字签名

【区块链】区块链密码学基础-LMLPHP

3.1 工作原理

数字签名用于证明消息的真实性和完整性。签名过程如下:

  1. 计算消息哈希: h = H ( m ) h = H(m) h=H(m)
  2. 使用私钥 k k k 对哈希值进行签名: s = S i g n ( h , k ) s = Sign(h, k) s=Sign(h,k)
  3. 生成签名对 ( r , s ) (r,s) (r,s)

验证过程:
V e r i f y ( h , ( r , s ) , K ) = t r u e / f a l s e Verify(h, (r,s), K) = true/false Verify(h,(r,s),K)=true/false

3.2 数学表达

ECDSA 签名算法的核心计算:

  1. 选择随机数 d d d
  2. 计算点 R = d ⋅ G = ( x r , y r ) R = d \cdot G = (x_r, y_r) R=dG=(xr,yr) r = x r ( m o d n ) r = x_r \pmod{n} r=xr(modn)
  3. 计算 s = d − 1 ( h + k r ) ( m o d n ) s = d^{-1}(h + kr) \pmod{n} s=d1(h+kr)(modn)

其中 n n n 是椭圆曲线的阶。

四、默克尔树

4.1 结构特点

默克尔树(Merkle Tree)是一种哈希树,用于高效地验证大量数据的完整性。

            Root Hash
           /          \
      Hash(1,2)     Hash(3,4)
      /      \      /      \
    Hash1   Hash2  Hash3   Hash4
    |        |      |       |
   TX1      TX2    TX3     TX4

4.2 数学表达

对于交易集合 T X = { t x 1 , t x 2 , . . . , t x n } TX = \{tx_1, tx_2, ..., tx_n\} TX={tx1,tx2,...,txn},默克尔根的计算:

M e r k l e R o o t = H ( H ( H ( t x 1 ) ∣ ∣ H ( t x 2 ) ) ∣ ∣ H ( H ( t x 3 ) ∣ ∣ H ( t x 4 ) ) ) MerkleRoot = H(H(H(tx_1) || H(tx_2)) || H(H(tx_3) || H(tx_4))) MerkleRoot=H(H(H(tx1)∣∣H(tx2))∣∣H(H(tx3)∣∣H(tx4)))

其中 ∣ ∣ || ∣∣ 表示字符串拼接。

五、零知识证明

5.1 基本概念

零知识证明允许证明者向验证者证明某个命题的正确性,而无需透露任何其他信息。

5.2 性质

  • 完整性:如果命题为真,诚实的证明者可以说服验证者
  • 可靠性:如果命题为假,任何证明者都无法说服验证者
  • 零知识性:验证者除了命题的正确性外,无法获得任何其他信息

5.3 数学表达

以 Schnorr 协议为例:

  1. 证明者选择随机数 r r r,计算 R = r ⋅ G R = r \cdot G R=rG
  2. 验证者发送随机挑战 c c c
  3. 证明者计算响应 s = r + c ⋅ x s = r + c \cdot x s=r+cx
  4. 验证者检查 s ⋅ G = R + c ⋅ P s \cdot G = R + c \cdot P sG=R+cP

六、同态加密

6.1 原理

同态加密允许在加密数据上直接进行计算,而无需解密。

对于明文 m 1 , m 2 m_1, m_2 m1,m2,加密函数 E E E,存在运算 ⊕ \oplus ,使得:

E ( m 1 ) ⊗ E ( m 2 ) = E ( m 1 ⊕ m 2 ) E(m_1) \otimes E(m_2) = E(m_1 \oplus m_2) E(m1)E(m2)=E(m1m2)

结论

密码学为区块链提供了坚实的安全基础。通过哈希函数、非对称加密、数字签名等技术的组合,实现了去中心化、不可篡改、匿名性等核心特性。随着零知识证明、同态加密等新技术的发展,区块链的应用场景将更加广泛。

参考资料

  1. Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System
  2. Goldwasser, S., Micali, S., & Rackoff, C. (1989). The Knowledge Complexity of Interactive Proof Systems
  3. Merkle, R. C. (1987). A Digital Signature Based on a Conventional Encryption Function
【区块链】区块链密码学基础-LMLPHP

【区块链】区块链密码学基础-LMLPHP

12-12 10:37