清华大学密码学博士吴彦冰带你揭开区块链密码学神秘面纱,了解区块链技术原理
G( c( N) V) C. \9 D5 u; j5 K& c+ g) u a2 }6 r5 V7 d, }" X5 x
$ e( Z( j* R9 E! \
) A+ I; F( f. a
1 D+ e c' @; S* o4 s' y0 r0 s
" V! I/ G N( z% p& G2 \主持人0 d0 A. N2 [4 a! G
我们从中本聪开天辟地之前聊起。我们都知道区块链诞生于比特币,而比特币诞生于密码学。那么纵观密码学发展历史,经典密码学和现代密码学的区别是什么?工作原理是什么?吴博士0 t7 c0 Z0 y6 J' J( j
经典密码学和现代密码学区别还是非常大的,比如说经典密码学里面最典型代表比如拿凯萨密码来说。我们现在来看他是非常的简单,就有一个相当于是密码表进行置换。我们可以在里面进行一个置换可以将字母A换成C,可以将b换成D,进行一个混淆。解密的时候也是同样的原理,根据密码表反向回来就可以了。凯赛密码,我们是可以通过统计学分析出来的。比如说统计人类最常用的字母是o,假设密文里出现的最多的字母是r,我们就可以很大程度认为o被置换成了r。但是现代密码学就非常的不同,密码的安全性不是想传统密码一样依赖于加密解密的流程,而是依赖于密钥。现代密码学基本上是非常科学的,是基于一些,数学难题或者是数学体系,进行设计的。就比如说RSA就是基于大整数难分解问题设计。椭圆曲线签名就是基于离散对数问题设计的。# k0 p6 A5 _( y+ i: M; @
2, k' ]( K8 p- l0 R8 G/ d
主持人
6 ]9 n7 T: w' V) P l9 O2 ~7 F( o4 q中本聪并不是第一个尝试将密码学加入到货币中的人。在他之前有一些密码学学者有过尝试,比如PMoney等,那么之前关于密码学的加密货币尝试为什么会失败?* L; } [. V# B' u1 \: m5 F
k; W; }. g: q
吴博士 y4 N" t3 L. Z" @. e; H
最早将密码学用于货币中的应该算是大卫乔的ecash。他使用到了密码学里面的盲签名技术。盲签名通俗的来讲就是签名人不知道自己签名的内容是什么,银行通过盲签名技术来完成铸币工作。ecash之所以失败主要是,最早不能解决双花问题有很大的关系,还有与ecash的性能和可用性上有一些关系。. b1 l$ V P; {3 |1 s) ?0 j- f
3
1 C) ~" c1 R' S; t O( T
2 t/ {8 f5 D* O& }4 J' {主持人
5 l! c! a2 ?" L7 g( I( `& p& o+ q% h( H2 O
/ X/ C, a" ^* M, I" o( k7 W刚说到双花的问题,我想问问为什么会出现双花?比特币是怎么规避双花问题的?
" G* r9 S% j& T! l6 Y8 Z, k/ \+ S. P. J5 t) _* A3 B
吴博士
& n+ R I. i5 G( w3 I- A! y1 M% E# ^9 J" N, J4 T( H# p0 V
+ |+ `; K% P; U+ F8 w7 M$ p# V2 S5 d
( [( n, K4 S4 R9 \
双花,即一笔钱被花了两次或者两次以上,也叫双重支付。ecash是通过设计了一种可撤销匿名性的盲签名来解决双花问题的。
( t+ a$ A/ [( k2 Y, b+ R9 v0 s6 H; \, O% k' \5 g4 b
在比特币中,双花攻击一般会和51%攻击一起使用。那是怎么实现的呢。比特币会选取最长的一条链来当做主链,我们可以在一个包里打包一个交易比如说我在一个区块里进行一笔交易,这笔交易是转给a的。我拥有了百分之五十一的算力,可以使这个区块进行分叉,我在分叉的区块里进行了另一笔转账,将同样的币转给了b,这样同一个币就花了两次。防止51攻击非常困难,就像互联网中防止DDOS攻击是一样的,但是进行51%攻击的难度也非常大。
3 L5 o8 K6 s; j" }0 D2 a4 D6 r* O
% }( c" @! ?$ }7 l! g5 ` b; Z4 _/ m
4; l* V* d6 d! z2 G; s; ^
# P9 N [6 J6 P' Q9 N0 o |. i4 l主持人
# x$ j3 P1 S8 r1 m
' u, i4 w# i+ ]- S
4 d; @6 G, T& x4 W- |- ]除了双花之外,大家说起比特币,还常提到拜占庭将军问题。所以也想请您给大家科普一些PBFT共识的知识,比特币是如何解决拜占庭将军的问题?
4 i8 R8 b0 h5 j( p7 p
8 W, n% i5 q2 c- f1 y$ a4 D5 ?吴博士; p$ u' e4 y/ }5 k2 n
8 c' S7 T* V9 J) m# B2 O, s
2 x* F1 Z8 T g {3 U8 ?* a! @8 ~- v3 Z1 hBFT这个问题是在区块链没有产生之前就已经有了,是兰帕德提出来的,是拜占庭将军问题的一个解决办法也是解决计算机中一致性问题的一个解决方案。7 ^& ?5 D% u, o, l+ B
5 t* B' z) C5 Q* y2 Q' g2 G1 \那么什么是拜占庭将军问题,其实拜占庭将军问题是兰帕德的讲的一个故事。古代的拜占庭帝国,他们的军队非常多但是不能集中在一个地方,他们分别住在不同的地方,他们要去发起进攻的时候要同时发起进攻,不然的话就会战败。拜占庭将军问题就是解决驻扎在不同地方的将军如何形成统一的进攻或撤退指令。
: B; a) k9 t7 I* H& D1 x
# C+ k% J0 E2 }. y! P8 E, D主持人这里提到的PBFT,P就是现实可用的,也就是实际可用的拜占庭将军问题解法,因为在PBFT之前提出过很多BFT的解法,但是都不是多项式时间的算法。IBM主导的超级账本中就有使用PBFT作为共识,但是PBFT随着节点的增加,通信成本会大大增加,所以PBFT通常用在联盟链中。/ K: ]6 q6 i" e5 g S
: N( t4 w9 X4 \
具体的关于这个拜占庭将军问题我在抖音里面有录三个小视频具体的讲他是怎么解决这个问题大家如果感兴趣可以关注我的抖音wuyanice。
$ e+ q- K2 g8 b
2 @# o+ K/ z; Q那么比特币是怎么解决这个拜占庭将军问题的呢,就跟上面我们回答的问题是一样的。比特币通过POW共识来解决这个拜占庭将军问题,相当于有这么多个将军,这些将军共同去计算一道难题,然后谁率先解决出这个问题的答案谁就可以发号施令,大家都要听这个将军的。
' q# n5 A- L# x0 n9 W4 X+ j/ K- v/ r* U; |; o7 E
: Z! F* B, n% q: ^4 |; u% H4 _" H H
主持人
4 w( D n# B4 ^/ C! h, J我以区块链特性来理解故事中拜占庭帝国将军驻扎的形式就是分布式驻扎所以其实共识是解决问题的关键的。
$ H: M, J5 m0 y4 X3 e6 e! d54 Y" D& t0 t. v- {, a9 H
! \2 C" i5 b: m
主持人
3 \6 O( g% N2 d目前区块链中POW,POS,DPOS共识算法的区别,能不能通俗形象的给大家解释一下?
. q8 d, k& N. ?( t. j
1 Z* A- [, n1 `( ]& Z吴博士, ^9 H5 O4 Z/ Q4 G* U
共识算法最开始是为了使区块链的账本达到一致,最开始中本聪使用的POW这个共识算法,在之前有用过比如像处理垃圾邮件问题里面。POW也叫工作量证明的方法。可以举个简单例子什么是POW,POW就好比是去计算一道数学难题,比如说一加一是难题,我们在规定时间内谁先计算出这道数学难题谁就会获得打包权,谁就可以打包区块,之后可以广播给其他人。POS是什么呢,做一个简单的举例,POS就好比是股份制的公司然后谁拥有的币越多就相当于拥有的股份越多。拥有股份越多就相当于对这个区块链掌控度越高。比如说拥有了百分之八十的币,相当于区块链上的打包百分之八十都听这个节点的。DPOS是什么呢,我们也举一个简单的例子,DPOS就相当于是民主制的选举,最典型的应该就是EOS使用的DPOS,每次社区会选举二十一个超级节点,这些超级节点来管理这个链。
0 M1 E' S7 L1 i; H
8 X% Y' C1 N# v主持人
) C! J# k( `+ s: ~4 \3 N那我简单总结一下,POW工作量证明就是谁速度最快谁获胜,POS机制是谁实力最强谁获胜,而DPOS机制是谁获得的社区支持更多谁获胜。. v" L% b2 {/ \/ [0 J7 b* Q8 u, I
6
( P4 o* W, X& j6 P$ ~* b, E! a# T
; Z, M M+ ]8 L& a9 B0 m% F( a主持人/ u p& \; f }, v5 w C$ g7 w0 l
那么除了上面提到的几种共识方式之外,有小伙伴对零知识证明也很感兴趣。什么是零知识证明呢?
) F6 v; z( I% e+ c2 ?. D/ {' i! b/ {1 q2 p# N+ Z
吴博士3 C, m/ N5 p t" U) q, V
5 q# T; K) M3 A% M5 `2 K) u" {* D" p' r
! R1 N4 ~$ B+ E6 k( u* Y零知识证明,具体的来讲其实应该叫做零知识的知识证明。我们就要讲什么是知识证明,知识证明就是相当于,我知道一个知识,我要去向你证明我知道这个知识。那么什么是零知识证明,就相当于是在证明知道这个知识的时候,我没泄露任何关于这个知识的信息,只是想你证明我知道这个知识,但你不知道是什么,你还能相信我是知道的。
/ ?2 G# a; p6 M6 |* K
; a9 E4 ]5 U6 s. M$ s- A) c举个简单的例子来说什么是零知识证明,就比如说阿里巴巴知道开门的咒语但是他要去向强盗证明他知道这个,但是不能把这个咒语告诉强盗,这个就需要用到零知识证明。阿里巴巴会对强盗说你们离我一箭的距离,用弓箭指着我,你们举起右手,我念咒语打开石门,举起左手,我念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。这样强盗就不知道开门的咒语但是又能相信阿里巴巴知道咒语4 ]+ B* _- N. E( z
3 P. u( g. U& k! R# t/ {# g
' O& m @4 I+ g( K* e$ o+ e7
/ X* E% r; [0 @* @* o! K( @/ h C7 y/ M3 |% _7 [$ g: ?# d
主持人
( b; c5 D% Z) s, U" D% h0 k6 r5 a( b* o( t
* Y Y4 k' b5 x$ s5 G5 z# N/ W
吴总给我们的分享确实是少见的通俗易懂,那么我们在许多介绍零知识的文章里都能看到完备性、可靠性、零知识这样三个特性,但是少有文章给我们解释背后的深意,它的可靠性和面临的挑战又有哪些呢?
# Y$ a9 A; ?- u( v5 N# U# a6 j3 M1 Z6 c, ~" V! ~
吴博士
- y3 t9 H" f$ q% x! U. X- N8 ~+ K6 o% Q* w& b" ]; O
4 d# Z; ~, ]$ L( \
完备性其实是在数学里面给出了很规范的定理。这里我就通俗的解释下什么是完备性,完备性就是说这个证明通过一定的步数之后是可以给出最终答案的,要不接收这个证明,要不然否定这个证明。可靠性就很好理解了,就是说这个证明协议是可靠的,知道知识的情况下可以给出证明,不知道证明的情况下是无法给出证明的。" P/ C% F. J9 B, J
- `: `" Z- s8 y" R1 d" x
零知识性我上面就有提到,就是在给出证明的时候不会泄露任何与知识有关的信息。像zcash就使用了零知识证明来保证匿名性。面临的挑战就是性能和可用性的问题,目前用在匿名上的零知识在产生证明上非常慢。所以无法保证在实际中是可用的,就是说交易的时间会特别长
& A( |/ \, ], e6 k" i: V5 H0 o/ U0 r
g2 D# ]/ U* w2 H& W+ w
8; B! [5 x3 t8 ]- O6 t4 A; M) _1 A* V
( {6 [" E, _* }! H3 p
主持人
. y0 [) B3 Y# O% T: a k8 C. b6 [ r% S; [2 s# a5 [' o6 L. O
1 Z+ k3 T8 T, i8 f, v$ P
说到匿名性,我想到了隐私保护,也想请问区块链技术和密码学是如何实现隐私保护的?
- D: h9 s+ d3 w
! n* R) |9 j0 w5 g4 @吴博士8 _* l( x/ m- c* R
v1 z! r( G9 O. c3 S1 _: x% }/ E. u
最开始的时候比特币被认为是匿名的,但是后来通过一些手段可以分析出来某个地址对应的人是谁,这样比特币就失去了他的匿名性就成为了一个伪匿名的。后来通过密码学手段上有三种方法来实现匿名性,一种方法是通过混币的方式进行的,就是讲所有交易杂糅在一起,最简单的混币就是把币冲进交易所再提到一个新地址。第二种方法就是使用零知识的方法,一个使用零知识证明的最典型的就是zcash。第三种方法就是通过环签名的方式进行匿名,最典型的就是门罗币。
0 g% s) N* F; E7 m
* d$ x3 ^0 ^) \ G1 m
/ C$ Z" Z: S- |7 s V9* k7 M+ e* c' [4 [+ @
, y5 i. a! R3 p主持人
5 p! \- i- Q7 y. }) g! T' P8 c, N' O' x% _2 B* W/ B7 Q- ]
, y! q5 _9 l! `# ^( \. P众所周知,区块链是依赖于哈希算法和其他加密术,在现有算力下是难以破解的,不过近几年有量子计算机对区块链的影响这个话题一直围绕着我们,看了很多相关的文章说面对量子计算机,现有加密技术面临被破解的危险,那么我也想问问您对量子计算机可能给区块链技术带来的冲击怎么看?
& ^' W1 F& N2 q8 ?1 h( k2 Q+ }' h7 A+ B3 D8 d: F4 | r
吴博士6 ~# x* Y* e9 ]$ L
1 t/ c6 |- T6 |( Y
! c- y: i( X, p$ Y: B8 T量子计算机会给现有的非对称密码带来很大的冲击,因为现有的公钥密码体系都是建立在困难的数学问题上的,量子计算机能在很短的时间内破解这些数学难题。在区块链里主要是交易签名这块。不过已经有很多学者在研究抗量子密码这方面了。% a: L6 ^% Z Z9 w" Y- l$ _
3 `" J% _7 H5 u# X/ Q4 X/ a5 C+ y; b9 l
10
1 Y, j% [: |4 O t, m) U
) p4 O/ |! t/ e1 p& a主持人$ }( R! [* C& X% @& i+ [& d# i9 Y3 G
/ n$ P# M3 {' o$ @7 B, w
+ V3 x) L+ L+ b* r6 y# W也就是说这个冲击是巨大的,那量子计算与区块链之间的关系是挑战还是抹杀?它们各自的优劣势都有哪些?能协作共存吗?
7 v$ L% M) g/ I$ V- Y
2 U( y* ]; E, [3 U- C3 Q- I. ^; |- w吴彦冰
' M6 G; b( Y+ z' a. U8 r! v+ \" s* I( @% q6 ~$ D( Q! x
9 ], A3 X3 z; X! C# y
就和我上面说的一样,现在很多学者都在研究抗量子的密码算法,有基于格基的。现在的抗量子密码算法中私钥过长,地址也会非常长。但是我相信之后的抗量子密码肯定会用在区块链上,所以大家不用很担心。 k8 b# A+ Z; Q$ P, m& S# P
B. r6 O* p. k, E( w% U1 J& A3 p, @( i1 h4 g
11
# I/ R, o/ ~/ L$ Z6 v& W( G/ F0 L
主持人
* C, F4 p' u9 `6 |. [4 Q: p3 L; j4 s, P6 ]- N5 i' b7 L% b7 k7 n) Z
5 `9 O z: I+ V; Q( f% Z7 y# p我还有最后一个问题,在区块链这一行,一直有两个圈子,一个是币圈,一个是链圈,币圈通证派的观点认为通证是区块链的灵魂,而链圈的观点认为区块链技术只是去中心化公开透明的账本,安全加密,无需代币,您是怎么看待这个问题的? s8 J3 E3 l& n8 h# [9 k1 V( ]
/ S& }( @4 o7 B6 y! f
吴博士
) Y4 m* I5 o. ^8 S
1 R3 X8 I }3 P% _1 d4 ~5 Z% n+ X3 ~9 ?% s. W5 O
无币区块链就相当于是分布式账本吧在上面没有任何激励,比如说像IBM提出的超级账本,比如说像一些联盟链中使用的分布式账本。其实这个B在区块链中作用还是非常大的,他相当于是进行一个激励,可能没这个激励的话,这个系统非常非常难以进行运转。但是可以用在一些联盟链中,由特定的节点负责这个链的运转。
9 ?% m* G& {# l, t; y$ c2 Q0 c' q- u: \$ c! I
; [4 R: x0 h: v+ ^6 g6 z
|