區塊鏈的運作方式與安全機制

為什麼區塊鏈需要雜湊函數(Hash)?

因為數據資料在傳輸過程存在可能受到監聽的風險,如果我在 A 輸入端,輸入了帳號密碼給 B 端,另外由 B 接受輸出取得 A 的帳號密碼,中間可能存在潛藏的不安全因子。

資安風險檢查:信箱個資安全性檢測

https://www.avast.com/hackcheck/

雜湊函數 Hash 的特性

  1. 無論原始內容為何,結果長度相同
  2. 原始內容相同則結果相同
  3. 原始內容不同則結果不同(機率上)
    ex. SHA-256 有 2 的 256 次方可能的結果,比已知宇宙內容構成還多
  4. 無法從結果反推原始資料

為什麼區塊鏈需要加密(Encryption)?

基於保護機密訊息,雙方在訊息傳遞的過程中需要加密中間的資訊,以防其他不被信任的要素來干擾這個網路。區塊鏈的加密機制在這個過程中扮演的關鍵角色:

  1. 保護機密訊息
  2. 驗證發信者身分

常見的區塊鏈加密機制:凱薩密碼的明文與密文

在凱薩密碼加密和解密的過程,需要了解的重要資訊是位移量

對稱與非對稱加密

  • 對稱加密:加密與解密使用同一個密鑰(對於網路本身來說,還是有一些危險性)
  • 非對稱加密:加密與解密使用不同密鑰(目前最廣為人知的非對稱加密是RSA公私鑰加密)

RSA 公私鑰加密

由 Ron Rivest , Adi Shamir , Leonard Adleman 共同提出,故名 RSA。RSA是基於密碼學的原理以數學的方式創造了一組公鑰與私鑰。基礎的運作方式如下:

  • 由私鑰加密的訊息,只能由公鑰解密。
  • 由公鑰加密的訊息,只能由私鑰解密。

為什麼區塊鏈需要分散式系統?

分散式系統,是一組電腦透過網路相互連結傳遞訊息與通訊後並協調它們的行為而形成的系統。元件之間彼此進行互動以實現一個共同的目標。

每個分散式系統有自己的世界觀,每個系統可能有不同的環境,但彼此要互相溝通別的系統的世界觀,找到一個共同協調出來的認知結果,作為最後的共識。

區塊鏈的共識機制

共識機制的故事:拜占庭將軍問題 – 要攻擊還是撤退?

如果沒有共同的共識,或是系統中藏有惡意對象(不安好心)故意製造危機,就容易造成系統遭擊潰。

拜占庭容錯演算法

區塊鏈的硬體運作:虛擬機器 VM

舉例目前相當知名的虛擬機器是 Java 程式,在機器和虛擬機器之間以同樣的程式可以跑在不同的環境之下。


重新理解區塊鏈系統

帳戶系統(Account System)

在一個中心化的系統內,你的訊息內必須要設定一組帳號密碼,由第三方系統幫你保管;而在去中心化的系統內,由一組公鑰和私鑰對保管你的資料。ex. 以加密貨幣現在的帳戶系統運作機制來說,任何人都可以經由你公鑰的Hash與你完成交易,只有你可以透過私鑰進入帳戶,由公鑰私鑰對完成這組數位簽章。

交易系統(Transaction)

現在想要完成一筆區塊鏈交易,世界上的某個礦工要驗證這筆交易,就要確認這筆交易是否真的有權限執行這筆交易?某簽章內確認的內容是否真的合乎規範?在整個去中心化的系統中,需要驗證這個數位簽章的發送對象是否是擁有私鑰的人。

  • from:
  • to:智能合約
  • amount:
  • additional data:

區塊(Block)

每個區塊記錄的資訊可能有很多,有許多帳本的內容需要經過確認,以虛擬貨幣為例的話,核心概念是要記錄哪些帳戶,有哪些交易以及產生的Hash基本驗算是否能被正確驗證。

  • 哪個鏈?哪個版本?
  • 上一個區塊的 Hash
  • 時間戳記

鏈(Chain)

每個 Block Hash 都跟上一個區塊相互鏈結,為什麼需要將區塊做成區塊鏈?主要的其中一個原因是要提高竄改的成本。要完成竄改的話,必須要完整的把整條鏈都完成竄改,不然只要其中一個區塊無法被驗證,交易的真確性是否受到操弄的事實便很容易被暴露出來。

那為什麼區塊鏈上的參與者願意加入這個系統?主要是基於這個區塊鏈系統本身的共識機制:

  • Proof Of Work 工作量證明(主流的舉例為比特幣、以太幣)
  • Proof Of Stake 權益證明

區塊鏈上的共識機制:Proof Of Work 工作量證明

主要在工作量證明POW上,主要能控制的是 nonce 值(nonce 是一個在加密通信只能使用一次的數字),在比特幣系統中,需要耗費大量的資源在解一個沒意義的 nonce,而只有最先解出來的礦工可以得到工作量證明,暴力解出這個數學題目,且區塊可以被下個區塊鏈結(在比特幣系統中,合約是認可最長的鏈,假設同時有兩個區塊都解出這個 nonce,但只有可以被鏈結的出塊可以得到認可,因此也有孤兒塊的問題產生,只是為了解決到底誰擁有這個記帳權)。

區塊鏈上的共識機制:Proof Of Stake 權益證明

BIP32 & BIP44 – Hierarchical Deterministic Wallet

m / purpose' / coinType' / account' / change / index

衍伸的 Process 是很固定的

一開始有一個 Seed(看起來是一串密碼),每次都有同樣的路徑及同樣的 Seed,最後可以得到一樣的結果。

BIP39 – 使用助記詞(Mnemonic Phrases)輔助記憶私鑰種子

日常生活中使用數位交易的電子錢包,或 Chrome 的插件,都經常會接觸到這種助記詞。


智能合約

智能合約是運作在區塊鏈虛擬機器上的程式。負責將程式執行的結果狀態,儲存在區塊鏈上。