区块链区块链密码学基础
【区块链】区块链密码学基础
🌈个人主页:
🔥热门专栏: | |
💫个人格言: “如无必要,勿增实体”
文章目录
区块链密码学基础
引言
密码学是区块链技术的核心基石,没有现代密码学的支撑,区块链的去中心化、不可篡改等特性将无从谈起。本文将深入浅出地介绍区块链中的密码学基础知识。
一、哈希函数
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 的长度固定
二、非对称加密
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}
y
2
=
x
3
a
x
b
(
mod
p
)
其中
a a
a 和
b b
b 是系数,
p p
p 是一个大素数。
私钥是一个随机数
k k
k ,公钥
K K
K 通过以下方式生成:
K
k ⋅ G K = k \cdot G
K
=
k
⋅
G
其中
G G
G 是椭圆曲线上的基点。
2.3 应用场景
- 数字签名
- 地址生成
- 身份认证
三、数字签名
3.1 工作原理
数字签名用于证明消息的真实性和完整性。签名过程如下:
计算消息哈希:
h
H ( m ) h = H(m)
h
=
H
(
m
)
使用私钥
k k
k 对哈希值进行签名:
s
S i g n ( h , k ) s = Sign(h, k)
s
=
S
i
g
n
(
h
,
k
)
生成签名对
( 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
V
er
i
f
y
(
h
,
(
r
,
s
)
,
K
)
=
t
r
u
e
/
f
a
l
se
3.2 数学表达
ECDSA 签名算法的核心计算:
选择随机数
d d
d
计算点
R
d ⋅ G
( x r , y r ) R = d \cdot G = (x_r, y_r)
R
=
d
⋅
G
=
(
x
r
,
y
r
) ,
r
x r ( m o d n ) r = x_r \pmod{n}
r
=
x
r
(
mod
n
)
计算
s
d − 1 ( h + k r ) ( m o d n ) s = d^{-1}(h + kr) \pmod{n}
s
=
d
−
1
(
h
k
r
)
(
mod
n
)
其中
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
=
{
t
x
1
,
t
x
2
,
…
,
t
x
n
} ,默克尔根的计算:
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)))
M
er
k
l
e
R
oo
t
=
H
(
H
(
H
(
t
x
1
)
∣∣
H
(
t
x
2
))
∣∣
H
(
H
(
t
x
3
)
∣∣
H
(
t
x
4
)))
其中
∣ ∣ ||
∣∣ 表示字符串拼接。
五、零知识证明
5.1 基本概念
零知识证明允许证明者向验证者证明某个命题的正确性,而无需透露任何其他信息。
5.2 性质
- 完整性:如果命题为真,诚实的证明者可以说服验证者
- 可靠性:如果命题为假,任何证明者都无法说服验证者
- 零知识性:验证者除了命题的正确性外,无法获得任何其他信息
5.3 数学表达
以 Schnorr 协议为例:
证明者选择随机数
r r
r ,计算
R
r ⋅ G R = r \cdot G
R
=
r
⋅
G
验证者发送随机挑战
c c
c
证明者计算响应
s
r + c ⋅ x s = r + c \cdot x
s
=
r
c
⋅
x 4. 验证者检查
s ⋅ G
R + c ⋅ P s \cdot G = R + c \cdot P
s
⋅
G
=
R
c
⋅
P
六、同态加密
6.1 原理
同态加密允许在加密数据上直接进行计算,而无需解密。
对于明文
m 1 , m 2 m_1, m_2
m
1
,
m
2
,加密函数
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
(
m
1
)
⊗
E
(
m
2
)
=
E
(
m
1
⊕
m
2
)
结论
密码学为区块链提供了坚实的安全基础。通过哈希函数、非对称加密、数字签名等技术的组合,实现了去中心化、不可篡改、匿名性等核心特性。随着零知识证明、同态加密等新技术的发展,区块链的应用场景将更加广泛。
参考资料
- Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System
- Goldwasser, S., Micali, S., & Rackoff, C. (1989). The Knowledge Complexity of Interactive Proof Systems
- Merkle, R. C. (1987). A Digital Signature Based on a Conventional Encryption Function