目录

区块链区块链密码学基础

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


https://img-blog.csdnimg.cn/direct/1f6adde3b2644ec9b30ad8bef430d50e.png#pic_center

https://img-blog.csdnimg.cn/direct/92a57929b26e44ec83266ad614c8c288.gif#pic_center

🌈个人主页:

🔥热门专栏: | |

💫个人格言: “如无必要,勿增实体”

https://img-blog.csdnimg.cn/direct/984712e276ad46a2ac3c88679f4f80b6.gif


文章目录

区块链密码学基础

引言

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

https://i-blog.csdnimg.cn/direct/ef7101e55210444386cd9107ba7f76da.png

一、哈希函数

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 的长度固定

https://i-blog.csdnimg.cn/direct/e47c7494443d4348a8c50cb2f1a6f9c8.png

二、非对称加密

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 应用场景

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

三、数字签名

https://i-blog.csdnimg.cn/direct/ae89143d3aa748dfbbb81c82451206cb.png

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

    =

    S

    i

    g

    n

    (

    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

V

er

i

f

y

(

h

,

(

r

,

s

)

,

K

)

=

t

r

u

e

/

f

a

l

se

3.2 数学表达

ECDSA 签名算法的核心计算:

  1. 选择随机数

    d d

    d

  2. 计算点

    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

    )

  3. 计算

    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 协议为例:

  1. 证明者选择随机数

    r r

    r ,计算

    R

    r ⋅ G R = r \cdot G

    R

    =

    r

    G

  2. 验证者发送随机挑战

    c c

    c

  3. 证明者计算响应

    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

)

结论

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

参考资料

  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

https://img-blog.csdnimg.cn/img_convert/d3a55e0b77993684d99313c8bf3036ff.png#pic_center

https://img-blog.csdnimg.cn/cc002cbd5c414c5393e19c5e0a0dbf20.gif#pic_center#pic_center