【区块链】区块链密码学基础
🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"
文章目录
区块链密码学基础
引言
密码学是区块链技术的核心基石,没有现代密码学的支撑,区块链的去中心化、不可篡改等特性将无从谈起。本文将深入浅出地介绍区块链中的密码学基础知识。
一、哈希函数
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} 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=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=Sign(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
Verify(h,(r,s),K)=true/false
3.2 数学表达
ECDSA 签名算法的核心计算:
- 选择随机数 d d d
- 计算点 R = d ⋅ G = ( x r , y r ) R = d \cdot G = (x_r, y_r) R=d⋅G=(xr,yr), r = x r ( m o d n ) r = x_r \pmod{n} r=xr(modn)
- 计算 s = d − 1 ( h + k r ) ( m o d n ) s = d^{-1}(h + kr) \pmod{n} s=d−1(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 协议为例:
- 证明者选择随机数 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
- 验证者检查 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 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(m1⊕m2)
结论
密码学为区块链提供了坚实的安全基础。通过哈希函数、非对称加密、数字签名等技术的组合,实现了去中心化、不可篡改、匿名性等核心特性。随着零知识证明、同态加密等新技术的发展,区块链的应用场景将更加广泛。
参考资料
- 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
原文地址:https://blog.csdn.net/qq_44214428/article/details/144394403
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!