打造區塊鏈應用的安全性 - 第 1 篇:區塊鏈如何運作以及使用私鑰

作者:Stephen Evanczuk

資料提供者:DigiKey 北美編輯群

編者說明:區塊鏈技術及其交易方法的細節非常複雜。本系列文章共有兩篇,第一篇簡要介紹區塊鏈的結構及其交易程序。該部分將提供相關的背景知識,幫助您瞭解為何私鑰保護是區塊鏈安全的核心所在,然後會介紹一個立即可用的私鑰保護解決方案。第二篇介紹開發人員如何使用此立即可用的硬體式解決方案,更輕鬆地保護區塊鏈交易。

安全問題推動了區塊鏈技術的發展,該技術則因加密虛擬貨幣而被許多開發人員所熟知。但是,區塊鏈技術還可為開發人員提供應用性相當廣泛的安全基礎架構。此技術採用去中心化架構,消除了對中央式授權的需求,而是依賴私鑰和加密方法來保護資產以及資產在各方之間的交換。因此,區塊鏈系統的安全性主要取決於金鑰的安全性,以及金鑰在演算法中是否正確使用。

雖然市面上已有合適的演算法可用,但在實作時需要大量的專業技術和經驗,方能開發出安全的解決方案,並將其整合至目標應用中。開發人員需要以更容易取得的方式,確保新興區塊鏈應用的金鑰安全性。

本文將簡要說明區塊鏈成為關注焦點的原因,以及該技術的工作原理,然後介紹 Infineon Technologies 的硬體式區塊鏈安全解決方案。

區塊鏈的崛起

區塊鏈技術幾乎在社會的每個領域都受到關注,其應用範圍包括加密虛擬貨幣、身份保護、供應鏈管理以及投票等。此技術常常被稱為「分佈式帳本技術」,整合了非集中式架構、身份驗證及記錄保存等多項功能;不需透過任何中央授權或中介便能監督或執行交易,因此廣受注目。

金融機構被區塊鏈吸引,是因為相較於現有的技術和實務,此技術有潛力實現更快速、更低成本的支付機制。而在金融科技之外,關注身份驗證與交易可追溯性的公司被區塊鏈吸引,是因為此技術能夠追蹤記錄,確保記錄是真實的且能有效地維持不變。區塊鏈的不可變性取決於其構建方式,而其真實性則取決於交易的執行方式。

從根本上講,此技術的核心取決於能否保護在構建傳送交易的區塊時所涉及的安全金鑰。雖然區塊鏈技術及其交易方法的細節已經超出本文的範圍,但是簡要回顧區塊鏈結構及其交易流程,可以為您提供相關的背景知識,幫助您瞭解為何私鑰保護對區塊鏈的安全性至關重要。但是請注意,與本文這個簡化的概念性區塊鏈技術概要相比,現實世界中的區塊鏈系統所倚賴的結構及協定要複雜得多。

不可變鏈

顧名思義,區塊鏈是指用來記錄一組交易的一連串區塊。在比特幣與以太坊等公有區塊鏈中所用的結構細節與協定,可能會與個別組織所存取的私密區塊鏈大相徑庭。此外,還有一些半私密區塊鏈,稱為「許可區塊鏈」,由相互協作的實體群組存取。

不過,在每種類型的區塊鏈中,區塊都是建構在一些通用元素之上 (圖 1):

  • 前一區塊的雜湊值 (Prev_Hash),此值將用作區塊鏈的連結
  • 區塊的關聯交易,由一個稱為「雜湊樹」或「Merkle 樹」的根 (Tx_Root) 所代表,其中包含交易 (Txi) 的雜湊值 (Hashi)
  • 隨機數,其對於生成有效區塊至關重要
  • 時間戳記,記錄區塊的建立時間

比特幣區塊鏈的簡化示意圖圖 1:在比特幣區塊鏈的簡化視圖中,每個區塊都包含一個時間戳記、一個隨機數、一個雜湊樹或 Merkel 樹,以及鏈中前一區塊的雜湊值 (Prev_Hash)。(圖片來源:Wikimedia Commons/CC-BY-SA-3.0)

在區塊鏈中加入 Prev_Hash 值,為整個區塊鏈的完整性提供了框架。若駭客修改區塊n-1 中的某些過往交易,即便是其更正區塊n-1 中的 Merkle 樹和 Tx_Root,仍會讓區塊n 中的雜湊值無效。如下所述,區塊鏈系統的分佈式特性解決了此類雜湊不匹配問題。

隨機數在區塊建立規則中扮演著重要的角色,可讓區塊鏈有效地維持不變。比特幣與以太坊等加密虛擬貨幣的公有區塊鏈,會對新區塊自身的雜湊值施加人為約束,然後再將其用於延伸鏈。當為了建立新的區塊而收集一組 Prev_Hash 交易時,這些規則通常會要求新建區塊的最後雜湊值,要低於某個指定的最大值。在區塊鏈系統中使用的雜湊演算法,會針對相同的輸入產生相同的結果,即使對輸入作出最小的改變,也會傳回無法預料的全新結果。

隨機數提供了一種改變雜湊值的方式,但是對區塊鏈系統及其使用者至關重要的元素,則不會受到影響。找到符合區塊鏈規則的雜湊值隨即成為使用不同數值產生隨機數的蠻力做法。透過使用一連串不同數值產生隨機數,然後每次重新對區塊進行雜湊處理,最終會找到符合規則的雜湊值。執行這種工作的人因而被稱為區塊鏈挖礦者。

這個最後接受的隨機數稱為「工作證明」,因為此數值代表已成功完成運算相當密集的挖礦流程。這個過程與工作證明也反映出區塊鏈系統的去中心化特性。在找到可接受的隨機數之後,挖礦者即取得以其新建的區塊來延伸區塊鏈的權利 (以及與加密虛擬貨幣挖礦相關的報酬)。

其他挖礦者與區塊鏈使用者,可透過新區塊以及成功挖礦者找到的隨機數來計算雜湊值,輕鬆地確認新區塊的有效性。

在區塊鏈的去中心化架構中,在區塊鏈分佈式網路中的個別節點,會根據挖礦期間套用的同一套規則分析每個區塊與交易。因此,區塊鏈可以自我更正,其原因在於節點會忽略任何因結構錯誤或雜湊值不符合或不正確而導致無效的區塊。加密虛擬貨幣及其他區塊鏈系統,充分利用區塊鏈去中心化的這個共識來實施額外的安全機制,讓駭客破壞這一過程的嘗試變得更加困難和複雜。

運算密集型工作證明規則,再加上以共識為主的區塊驗證過程,這給想要修改區塊鏈中過往交易的駭客帶來了無可逾越的障礙。任何駭客若想要從修改過的區塊重建鏈,就必須以超過挖礦者群體的速度完成工作證明。單單這一點,駭客就會發現自己陷入了虛擬的處理資源軍備競賽之中,戰場從個人電腦上的圖形處理單元,轉到現場可編程閘陣列,最終又轉到專業應用的特定積體電路上。除了需要大量投資在運算資源的困難外,單單隨之而來的功耗需求就令人望而卻步。

即使已經滿足前述處理運算能力,以及電源利用率要求,駭客仍須面對修改後的鏈,可能被以共識為主的機制拒絕的難題。在執行多個區塊下結果出現重大差異極為少見,一旦出現,就會在受影響的區塊鏈系統中造成引人注目的重大中斷,進而潛在需要罕見的硬分叉,這會打造全新版本的系統。

驗證交易

前面所談到的區塊鏈結構與流程,全都有一個前提,即區塊中 Merkle 樹所代表的交易都是有效的。如果無效交易因不名原因進入了區塊鏈系統,則前述工作證明與去中心化區塊驗證都將徒勞無功。實際上,區塊鏈技術的基本動力在於能夠可靠地將一組有效交易加入不可改變的區塊鏈中。從這個角度來說,區塊會在使用者請求交易時產生。區塊鏈技術不仰賴中央授權來核准交易,而是倚賴發出請求的使用者所擁有的私鑰加密方法。

為發起請求,使用者使用其私鑰對請求進行數位簽章,並將該請求提交至一個包含其他未確認交易的集區 (圖 2)。而區塊鏈挖礦者則從此集區中提取一組未確認的交易,並使用請求者在每個未確認交易中包含的公鑰,驗證每個請求是否來自於各自的私鑰擁有者。在加密虛擬貨幣中,挖礦者會試圖超越其他嘗試在區塊鏈中建立下個區塊的挖礦者,因而會迅速忽略簽名無效的請求。

私鑰/公鑰對提供區塊鏈交易基礎的示意圖圖 2:私鑰/公鑰對提供請求者進行區塊鏈交易簽署 (左圖),以及區塊鏈挖礦者進行驗證 (右圖) 的基礎。(圖片來源:Wikimedia Commons/CC-BY-SA-3.0)

確保私鑰保持私密性

在區塊鏈的去中心化架構中,擁有一組交易的私鑰,即意味著擁有這些交易。沒有客戶服務代表隨時準備去追查丟失的資金,或依照聯邦政府的規定去恢復這些金額。因此,私鑰遺失或遭竊,經常是加密虛擬貨幣發生巨額損失後上頭條的原因,而分析師預期這種趨勢將持續下去。

區塊鏈技術基本依賴於私鑰進行交易簽署與驗證,這使得保護這些私鑰機密性的需求變得相當關鍵。對使用者來說,安全性較差的金鑰,可能會使他們失去控制而無法參與區塊鏈系統。

駭客會使用釣魚攻擊及其他類似的方式,來取得未謹慎儲存在行動裝置或電腦中的未加密私鑰。一般而言,加密的金鑰也同樣容易受到攻擊。金鑰產生軟體通常會允許使用者輸入密碼,用來加密使用者裝置中的金鑰。安全研究人員發現,這種方式也有所有基於密碼的方法所共有的問題。使用者經常會用強度差、容易猜到的密碼來加密金鑰。

即便使用者採取必要的防範措施來保護私鑰,該金鑰也可能因為金鑰產生軟體的錯誤而在安全性上受到損壞。軟體式金鑰產生器經常需要使用以可預測模式運作的亂數產生器 (RNG),而竊賊使用簡單的指令碼即可揭穿這些模式。更糟的是,金鑰產生演算法當中的程式錯誤或故障,會讓金鑰受到熟悉該金鑰產生軟體公用程式的任何人士的攻擊。

即使完美地實作強健的演算法,也無法保證安全無虞。使用者仍舊要面對真實的風險,亦即執行該理想化程式碼的系統,還執行了已被駭客完全破解的軟體。當金鑰產生軟體執行時,此軟體即與被破解的軟體共用記憶體與處理器循環,從而讓駭客有機會看到機密的資料。

提供受信任執行環境 (TEE) 的處理器可在單獨的執行空間中執行受信任與不受信任的程式碼,實現進一步的保障。這種方法減少了駭客通過作業系統、中介軟體或其他應用程式漏洞攻擊演算法與私鑰等機密資料的機會。

即便內建安全執行與金鑰保護能力,許多硬體裝置仍舊容易遭受更精密的微架構和實體攻擊。微架構攻擊會利用處理器設計中的弱點。這些類型的攻擊曾因 Meltdown 和 Spectre 而廣受關注,兩者都是利用微處理器記憶體存取及指令處理中的漏洞。

實體攻擊的類型也很廣泛,例如利用監測電力使用、電磁輻射或計時特性的旁路攻擊,乃至暴露受保護資訊等。在有些實體攻擊中,駭客會使用雷射誘發故障,或造成電源供應器突波,來推斷內部訊號。在更為直接的實體攻擊中,駭客會打開半導體裝置並使用微探針,嘗試讀取資料及指令序列。

若想防範這麼廣泛的安全威脅,就需要一種安全控制器,能夠將基本安全功能與更深入的保護功能結合起來,抵禦各種用來攻擊半導體裝置的微架構與實體方法。Infineon Blockchain Security 2Go 入門套件 (BLOCKCHAINSTARTKITTOBO1) 即以這種類型的安全控制器打造而成,能為保護簽署交易所用的私鑰提供立即可用的解決方案,解決加入區塊鏈時所面臨的重大難題 (圖 3)。

Infineon Blockchain Security 2Go 智慧卡示意圖圖 3:Infineon Blockchain Security 2Go 智慧卡可簡化交易簽署等區塊鏈安全作業,而不會暴露重要的私鑰。(圖片來源:Infineon)

區塊鏈系統整合商無需耗費時間來構建安全的簽署方法,而只需為使用者提供該 Blockchain Security 2Go 入門套件或 Infineon Security 2GO 10 卡套裝 (BLOCKCHAIN10CARDSTOBO1) 的智慧卡即可。

結論

區塊鏈技術具有超越加密虛擬貨幣的廣泛應用性。然而,此技術也相當複雜且依賴於所使用的私鑰,需要有強大的安全機制,才能避免使用者喪失對交易的控制權並防止區塊鏈系統受到破壞。

雖然設計人員可以選擇花時間構建安全的簽署方法,但 Infineon Blockchain Security 2Go 入門套件能提供立即可用的區塊鏈安全解決方案,節省您的時間與資源。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk 撰寫電子產業的相關資訊已有超過二十年的經驗,涉及的主題多元,涵蓋硬體、軟體、系統以及包含 IoT 在內的應用。他以神經元網路為研究主題,取得神經科學博士學位,並且在航太產業,針對廣泛運用的安全系統和演算法加速方法進行研究。目前,在撰寫科技和工程文章之餘,他投入辨識和推薦系統的深度學習應用。

關於出版者

DigiKey 北美編輯群