區塊鏈的資訊安全基本原理

本文的目標是讓讀者理解區塊鏈技術的基本原理和基本資訊安全的假設。

區塊鏈的密碼學

區塊鏈在資安上非常倚賴密碼學演算法,一些常用的功能有

  • hash functions
  • public key cryptography
  • ECC(elliptic curve cryptography)

在這裡我們會使用的術語是:computationally infeasible.意思是要完成某事(如破解密碼演算法)的最佳方法是"隨機猜測",直到猜到答案。 如果一個函數有太多可能的輸入值,則無法在現代技術上進行全部的嘗試,那麼通過猜測來破壞演算法在電腦運算上就是不可行的(但量子電腦可能又是另一回事)。

Hash Functions

這基本上是一個數學運算,能將任何資料當作input之後產生一個固定大小的output value.從加密學上來看,hash function是一個one way function.意思是我們無法憑著output value倒推回input value的.以下是hash function在作業時會有的基本屬性:

  • 是單向(one way)的:意指我們無法用答案倒推回問題
  • Large State Space: 為了不讓output value可以被倒推回input.這意味著這個演算法需要有大量可能的output value。
  • Collision Resistance: hash function 具有無限可能的input但可能的output數量是有限的事實意味著多個input會產生相同的output。 而一個好的hash function中,要找到兩個hash到相同output的input在運算上應該是不可行的。
  • Non-Locality: hash function會讓相似的input產生不同的output。 否則,攻擊者可以使用攀登的方法(hill climbing approach),也就是對input進行很小的變更,看看這些變更是否使output更接近攻擊者所需的output。

Public Key Cryptography

也稱為非同步加密(asymmetric cryptography)是一種會產生一對公鑰與私鑰(private key).公鑰是可以被公開的,但私鑰卻是要絕對保存好且不可外洩的.

而這一種演算法也是無法讓我們從公鑰的value去倒推回私鑰的value.例如,分解兩個"質數乘積"的最佳方法是"用猜的",直到找到其中一個質數。 另一個“困難”問題是離散對數問題,其中攻擊者需要在特定底數和求冪結果的情況下找到指數的值。 因式分解和離散對數問題通常用於密碼學,因為它們只能通過猜的來找答案,並且使用足夠大的數字來確保如果是用猜的來破解它們的話需要很長時間。

公鑰密碼學有兩個主要的應用程序:

  • 加密/解密:任何想要傳送訊息給私鑰擁有者訊息的人都可以用公鑰來健行加密,私鑰擁有者就可以用他的私鑰解密,而不用在兩方間交換shared key.這個目的在達到資料的保密性.(達到我們在資安常說的CIA中的C)
  • 數位簽章:公鑰加密允許私鑰擁有者使用他們的私鑰隊資料進行數位簽名。 任何擁有其私鑰副本的人都可以使用此簽章來驗證私鑰是否用於簽署資料並且在傳輸過程中沒有更改。 這可以保護資料的完整性並提供不可否認性.(達到我們在資安常說的CIA中的I與A)

公鑰密碼學的安全性完全依賴於私鑰的安全性。 任何擁有私鑰的人都可以解密訊息或產生合法的數位簽章。以下為一個使用公鑰加密的範例.

ECC(elliptic curve cryptography)

它使用一個在數學上等效於離散對數問題的難題來保證其安全性。 主要優點是它具有與傳統公鑰加密演算法相似的安全等級,同時使用更小size的密鑰。

區塊鍊的簡介

區塊鍊要能運作需要靠一些組件組合在一起才能運作,其中包含了:

  • Block(區塊)
  • Chains(鏈結)
  • 區塊鍊網路

唯有這些組合在一起,區塊鏈才能對使用者提供一些保證。

Block(區塊)

這是資料存放的地方。使用者建立一個交易並且把它廣播到整個區塊鏈網路。每一筆交易都有這個交易建立者使用他的數位簽章進行簽名來證明這筆交易是出自於他的合法交易。當前的區塊建立者定期將這些交易組織成區塊,並使用自己的密鑰對整個區塊進行數位簽名,並將其發送到整個區塊鏈網路,然後會加到分佈式帳本中。

Chains(鍊結)

每個區塊之間的鏈接是hash functions在區塊鏈技術中發揮作用的地方。 區塊鏈中的每個區塊都包含前一個區塊的hash value。 這將區塊綁在一起,因為hash functions的collision resistance 將使攻擊者在運算上的不可行性產生一個虛設版本的區塊,而這個版本的區塊會hash到存儲在它後面區塊中的值。

區塊鏈網路

區塊鏈的分散式帳本主要在以去中心化的方式存儲。 網路中的每個節點(就是每台電腦)都可以存儲自己的帳本副本,這些副本通過區塊鏈的共識演算法保持資料一致。 區塊鏈中的節點通過peer-to-peer networking進行通訊,這意味著每個節點都與其他幾個節點進行通訊,並且訊息是在網路中流傳而不是通過一個中心化節點。

區塊鏈的效益

區塊鏈技術可以為其使用者帶來諸多效益。 一些最常見的效益包括:

  • 匿名性(Anonymity):許多區塊鏈不用實名制即可使用區塊鏈
  • 去中心化(Decentralization):區塊鏈技術的設計目的是在沒有一個中央機構監控的情況下運作
  • 容錯性(Fault Tolerance):區塊鏈旨在任一個或某一些節點發生故障也能保持運作。 沒有節點是“整個系統的心臟”,所以也不會有單點故障
  • 不變性(Immutability):由區塊鏈維護的分佈式帳本主要在使修改或刪除交易紀錄變得困難或不可能
  • 透明度(Transparency):分佈式帳本是所有人都可以看到的
  • 無信任(Trustless):區塊鏈的設計讓使用者可以信任帳本,而無需信任網路中的任何其他人

區塊鏈的安全假設

區塊鏈的安全性是來自於數位簽章和hash functions的安全性假設。數位簽章驗證交易和區塊的完整性(integrity)、真實性(authenticity)和不可否認性(non-repudiation)。 偽造數位簽章理論上是不可能的。

Hash functions用於在區塊鏈中將區塊鏈接在一起。 Hash functions應該保持單向(one-way)、非局部(non-local)和抗碰撞(collision-resistant),並且具有足夠大的狀態空間來抵禦暴力猜測的攻擊。

攻擊基本的區塊鏈安全

從理論上來說,區塊鏈中使用的加密演算法目前是安全的,可以抵禦攻擊。 實際上,這些演算法的安全性容易受到當前和即將到來的威脅(例如量子電腦)的影響。

"公鑰密碼學的安全性是基於私鑰的安全性"。 如果攻擊者竊取了使用者的私鑰,他們可以偽裝成該使用者在區塊鏈上解密訊息並產生有效力的數位簽章。 從加密貨幣的歷史上看,區塊鏈使者甚至是交易所不擅長保護他們的私鑰。 但還是有一些解決方案,包括:

  • 硬體錢包: 類似USD隨身碟的裝置
  • HSM(Hardware Security Modules): 一種專用儲存機密資訊的硬體
  • 紙張錢包: 就是將私鑰字串直接印出來放在安全的地方

以上就是區塊鏈技術的基本原理和基本資安假設的簡單介紹

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet