核心概念#

作者對「虛擬貨幣」的前景不太關心,但對其底層技術——區塊鏈(Blockchain)非常看好,因為它能從根本上解決資訊安全問題、支持合約的自動執行。區塊鏈的加密基礎是橢圓曲線加密(Elliptic Curve Cryptography)。

不對稱、不透明之美#

  • 人們通常喜歡對稱,但不對稱有時卻自有其美——對於資訊安全來說,完全對稱和透明會帶來很多安全隱患
  • 區塊鏈由 Block(存儲信息的保險箱)和 Chain(信息與交易的歷史記錄)組成

區塊鏈的三個核心特點:

  1. 不可篡改:一旦比特幣被創造,原始信息無法篡改,只能添加新的流通和交易信息
  2. 不對稱驗證:外界可以確認信息真偽,但無法知道其中內容。比特幣的私鑰可以產生公鑰供接受者驗證,但無法從公鑰反推私鑰
  3. 智能合約:區塊鏈可以按約定自動執行合約,一旦達成就不能更改,可用於解決三角債、拖欠工資等問題

區塊鏈超出了傳統加解密的範疇。傳統方式是用密鑰加密信息、再用另一把密鑰解密;而區塊鏈讓拿到公鑰的人只能驗證信息的真偽,而看不到信息本身。這利用了信息的不對稱性保護隱私。

橢圓曲線加密的原理#

  • 橢圓曲線其實和橢圓沒有關係,是滿足 $y^2 = x^3 + ax + b$ 的一組曲線,上下對稱且非常平滑
  • 從曲線上的任意一點 $A$ 畫一條直線,最多和曲線有 3 個交點

點乘運算:

  • 從 $A$ 點出發,畫線經過 $B$ 點,與曲線交於 $C$ 點,定義為 $A \cdot B = C$
  • 取 $C$ 的鏡像點 $D$,再與 $A$ 連線得到新的交點 $E$,即 $A \cdot D = E$
  • 不斷重複此過程,經過 $K$ 次點乘運算後停在 $Z$ 點

關鍵性質:

  • 點乘滿足交換律和結合律
  • 為防止發散,設定邊界 Max,超過後用反射回來(取模運算)
  • 實際使用時將連續曲線離散化,所有點的取值都是整數
  • 給定 $A$ 和 $K$,容易算出 $Z$(即 $K \times A = Z$);但給定 $A$ 和 $Z$,要反推 $K$ 是幾乎不可能的——這種不對稱性正是加密的基礎

加密流程(以比特幣的 SECP256K1 標準為例,$y^2 = x^3 + 7$):

  1. 曲線方程和起始點 $A$ 是公開的
  2. 小艾選擇私鑰 $K_a$(隨機數),計算公鑰 $Z_a = K_a \times A$ 並公布
  3. 小白同樣選擇私鑰 $K_b$,計算公鑰 $Z_b = K_b \times A$ 並公布
  4. 小艾用 $K_a \times Z_b$ 作為加密密碼,小白用 $K_b \times Z_a$ 解密
  5. 由交換律可證明 $K_a \times Z_b = K_a \times (K_b \times A) = K_b \times (K_a \times A) = K_b \times Z_a$

橢圓曲線加密的密鑰最短為 160 位,遠比 RSA 的最短 1024 位短得多,但安全性相當甚至更好。2003 年,用 1 萬台 PC 花了一年半才破解一個 109 位的密鑰,而 160 位密鑰的破解量是其 1 億倍。

本章小結#

通過分析比特幣背後的數學基礎,可以看到不對稱性所帶來的好處——不僅可以解決資訊安全問題,而且能將信息的訪問和確認兩步分開,從根本上解決保護隱私的問題。橢圓曲線加密可謂是匠心獨運,區塊鏈的發明人在此基礎上又發明了一整套信息驗證機制,也是神來之筆。