在了解了區塊鏈的基本結構與應用之後,我們要開始探討「安全」這件事。
區塊鏈的特性是公開、分散、不可逆,但這並不代表它就「絕對安全」。
事實上,每一層都有可能出現攻擊面。
因此在進入各種實際漏洞之前,先理解「威脅模型(Threat Model)」非常重要。
⸻
🔹 什麼是威脅模型?
威脅模型(Threat Model)是一種思考方式,
用來幫助我們系統性地了解:
• 我要保護什麼?(資產)
• 誰可能攻擊?(攻擊者)
• 他們會怎麼攻擊?(攻擊面與手法)
簡單說,威脅模型讓你知道:「假如我是駭客,我會怎麼動手?」
在區塊鏈系統中,一個良好的威脅模型會幫助我們釐清風險,
例如:
• 智能合約可能被重入攻擊
• 私鑰可能被盜取
• 節點可能被 DDoS 攻擊
• 前端介面可能被釣魚或注入惡意程式碼
🔹 如何界定攻擊者
在區塊鏈的環境中,攻擊者不只是駭客,也可能是:
• 惡意的使用者
• 協議參與者(礦工、驗證者)
• 第三方服務(API、錢包插件)
• 甚至是「自己」(開發者不小心寫錯程式)
我們要假設任何外部輸入都有風險,任何函式都可能被利用。
🔹 資產與攻擊面
在建立威脅模型時,第一步是「明確定義資產」。
這裡的資產不只是錢,而是任何「有價值」的東西:
類別 資產內容 可能攻擊面
使用者層/私鑰、錢包、身份/駭客釣魚、惡意網站
應用層/智能合約邏輯、token、NFT/程式漏洞、權限錯誤
網路層/節點、通訊協定/節點攻擊、網路分叉
前端層/DApp 網頁、API/XSS、假網站、DNS 攻擊
💡 觀念重點:
安全不是只有「合約沒漏洞」這麼簡單,而是整個鏈上鏈下系統都要納入考量。
🔹 攻擊面的視覺化思考
一個簡單的威脅模型可以想像成「多層堡壘」:
使用者資產(最內層)── 合約邏輯 ── 節點 / 網路 ── 前端界面(最外層)
攻擊者可能從外往內滲透,例如:
• 從釣魚網站偷錢包私鑰
• 找智能合約邏輯錯誤轉走資金
• 攻擊節點造成交易延遲
• 修改前端連線讓使用者簽錯交易
建立威脅模型的 3 個步驟:
1. 識別資產 — 你要保護什麼?
2. 界定攻擊者 — 誰可能攻擊?動機是什麼?
3. 分析攻擊面 — 哪些部分可能出現弱點?
透過這種方式,我們就能像工程師一樣思考安全,而不只是「怕被駭」。
以前我常覺得「安全」是資安人員的事,但學了威脅模型之後才發現,
它其實是每一位開發者都應該具備的基本思維。
在寫智能合約前,如果能先畫出自己的威脅模型,
就能更早發現風險、減少出事後的損失。
就像設計房子之前要先知道「可能的入侵點在哪裡」,
區塊鏈開發也一樣──要先知道「駭客可能從哪裡進」。