Airgap 讓硬件簽名器變得更安全了嗎?

作者:Douglas Bakkum

來源:https://blog.bitbox.swiss/en/does-airgap-make-bitcoin-hardware-wallets-more-secure/

Does airgap make Bitcoin hardware wallets more secure?

自從 BitBox02 發佈以來,我們收到了很多關於支持 airgap 操作的請求:即在不插入電腦或手機的情況下直接使用硬件簽名器。雖然 airgap 設備近期備受關注,但我們希望深入瞭解其實際的安全優勢,因此對這一主題進行了詳細研究。我們的結論是:airgap 通信對硬件簽名器的安全性提升微乎其微,甚至可能降低用戶體驗。我們使用已公開的漏洞來驗證 airgap 的安全承諾是否屬實。本文記錄了我們的研究發現。

什麼是 Airgap?

Airgap 是一種安全措施,通過移除所有網絡接口,將設備與不可信網絡(如互聯網)物理隔離。例如,airgap 計算機常用於安全關鍵的基礎設施。這一原則本身非常強大,但在實際操作中,通常仍需與聯網設備交換數據,這些跨越 “空氣牆(airgap)” 的數據通常通過 U 盤傳輸。Airgap 系統的安全性完全依賴於被傳輸的數據本身並非惡意內容,也沒有再傳輸過程中被篡改。正如著名的 “Stuxnet 蠕蟲破壞伊朗鈾濃縮設施” 事件所示,如果不徹底檢查要交換的數據,那麼無論是對於核工廠還是密碼學貨幣硬件簽名器來說,airgap 所帶來的安全優勢都是空中樓閣。

就密碼學貨幣錢包而言,“airgap” 這個詞指的是:像硬件簽名器這類簽名設備(用於保護私鑰),與可能不安全的聯網電腦(用於創建待簽名的交易並廣播已簽名的交易)之間,是物理隔離且沒有直接連接的。兩者之間的任何通信都需要跨越 “airgap”,通常是通過物理交換 SD 卡或掃描二維碼來實現。至關重要的是,通信是無法避免的。這樣的通信不僅包括上述的交易數據,還包括用於更新硬件簽名器固件或錢包自身信息(如接收幣的公鑰,也就是地址)等較大體量的數據。

與將硬件簽名器直接插入電腦不同,airgap 硬件簽名器會配合電腦上安裝的支持 PSBT(部分簽名的比特幣交易)的配套軟件來使用。你可以在該應用中創建一筆未簽名交易,然後將其編碼為二維碼供硬件簽名器掃描,或將交易保存為文件,通過 microSD 卡讓硬件簽名器讀取。

當硬件簽名器用私鑰簽名交易後,會通過在屏幕上顯示二維碼或將簽名後的交易寫入 microSD 卡的方式,將已簽名交易返回給電腦。電腦上的配套應用導入簽名交易,然後將其廣播到網絡。

補充說明:雖然本文聚焦於硬件簽名器的安全風險和漏洞,但需要強調的是,硬件簽名器仍被普遍認為是進行密碼學貨幣交易最安全的方式。這是因為能訪問和解鎖貨幣的私鑰始終被安全地保存在硬件內部,無需離開硬件簽名器。相比之下,軟件錢包更容易受到惡意軟件的攻擊而導致盜竊,而將幣存放在交易所也有其自身的一系列風險。此外,有時也有人建議將舊臺式機改造成專用的 airgap 設備,但其安全性難以保證,且容易受到多種攻擊

Airgap 無懈可擊的安全神話

兩臺設備之間沒有物理連接,會更容易讓人覺得這種連接 “安全”。同時,像插 U 盤一樣把硬件簽名器插進電腦,可能又會讓人 “感覺” 沒那麼安全。

然而,我們得出的結論是,這種感知到的安全收益,以及它被宣傳為 “銀彈” 的方式,遠遠超出了其實際情況,這可能導致一種虛假的安全感。

以下是 airgap 在實踐中對安全性提升不大的三個主要原因:

1. 通信依然在進行

儘管沒有 USB 數據線這種物理連接,硬件簽名器和主機電腦之間仍然要交換信息。有線連接和 airgap 連接之間的主要區別在於帶寬。二維碼傳輸的數據量遠少於 USB 連接。然而,我們發現帶寬影響的是用戶體驗,而非安全性。

由於比特幣交易本身的數據量很小,任何通信通道都足以傳輸它們。正如前文 Stuxnet 的案例所示,沒有任何通信通道本身能阻止發送和接收預期數據(在這裡是比特幣交易)之外的數據。這些數據依然可能帶有惡意。因此,硬件簽名器仍然有責任徹底檢查並消毒所有接收到的數據。


如果硬件簽名器收到了被篡改的數據,而沒有正確驗證,那麼它是否 airgap 根本無關緊要。一旦攻擊者找到一個可被利用的漏洞,無論是通過惡意的二維碼、交易文件、還是通過 USB 連接或藍牙傳輸的數據,都可能被用來加載攻擊。

Airgap 傳輸本質上不過是另一種通信通道,只不過需要用戶更多的手動參與。每種通道都有其自身的攻擊向量,只要存在信息交換,硬件簽名器就始終需要盡職盡責地對數據進行消毒。具體來說,硬件簽名器的威脅模型必須假定與其通信的電腦或手機是已被入侵的。因此,除了硬件簽名器本身顯示的內容外,任何其它信息都不值得信任。

2. 通信依然可能被篡改

一個重要的攻擊向量是惡意軟件,它可以篡改通信內容而不被察覺。例如,它可以更改接收地址或找零地址,或者替換掉多籤設置中的聯合簽名方。同樣,硬件簽名器的固件應該有能力捕獲此類行為,但 airgap 本身對此毫無幫助:

  • 二維碼可以在多個層面上被惡意篡改,包括通過控制攝像頭圖像或二維碼渲染的上游庫、攝像頭固件中植入的後門,或者通過運行在主機上的惡意軟件。
  • 通過 microSD 卡,其它程序可以暗中監視其內容,修改 PSBT 文件,或在用戶不知情的情況下向卡中寫入額外數據。具體的訪問權限取決於所使用的操作系統。
  • USB 通信本身同樣無法緩解這一攻擊向量。

一種常見的檢測和避免數據被篡改的方法是加密電腦上運行的配套應用與固件之間的所有通信(BitBox02 使用 Noise Protocol Framework 實現了這一點)。即便如此,如果運行應用的電腦被攻破,通信通道依然無法做到完全安全(這就是為什麼你應該始終在硬件簽名器的內置屏幕上驗證交易詳情),但加密通信會使攻擊者竊聽或篡改信息變得更加困難。

3. Airgap 在日常使用中並沒有更透明

Airgap 簽名器另一個常用的宣傳點是,設備之間共享的數據比使用 USB 連接更透明且可驗證。

“這種更強大的安全模型確保你清楚地知道正在接收什麼信息” – Foundation Devices

“通過使用二維碼傳輸,我們消除了潛在的惡意軟件入侵風險,並提供了無法通過藍牙或 USB 實現的透明度。” – Keystone

“我們的冷錢包只使用二維碼傳輸數據,二維碼格式可控、可驗證且透明。” – Ellipal

為了驗證這一說法,我們來看一筆用 Sparrow 錢包創建的簡單比特幣交易:它包含一個輸入、一個接收方和一個找零地址。

- 示例比特幣交易 -

該錢包支持以兩種方式導出未簽名交易:

  1. 以二進制格式存儲的 PSBT 文件,無法直接讀取。你無法打開它們並檢查其內容。唯一的方法是將它們加載到比特幣錢包中。因此,錢包仍然有責任給數據消毒。

- PSBT 文件的二進制內容 -

  1. 二維碼以可視化的方式呈現相同的信息。由於交易數據量過大,無法通過單個二維碼來顯示,因此會使用動態二維碼。同樣,裡面的信息無法直接讀取,需要通過另一個錢包來驗證數據。

- 包含二進制交易數據的動態二維碼 -

如果你嘗試使用普通的二維碼掃描器去讀取數據,只會看到一堆讀不懂的亂碼:

- 由普通的二維碼掃描器讀取的部分二維碼內容 -

無論通過 PSBT 文件還是二維碼,數據不僅可以在兼容的硬件簽名器上驗證,也可以使用其它錢包來進行驗證。但在我們看來,這種做法是否真的能帶來額外的安全優勢是值得懷疑的(因為消毒數據並讓你在內置屏幕上驗證,本就是硬件錢包的主要職責),而且指望用戶經常這樣做也不現實。

其它考量

每個通信通道都有其優缺點。以下是關於硬件簽名器通信方式的一些額外考量:

  • microSD 卡本身就包含一個微型計算機(即微控制器),運行著可能被破解的固件。如果需要將一個微型計算機插入硬件簽名器才能使用它,這真的算是 airgap 嗎?
  • 外部軟件庫依賴應儘可能減少,以降低攻擊面。這不僅適用於 USB 驅動程序,也適用於 microSD 卡讀卡器和內置攝像頭的驅動程序。
  • 通過偷窺或監控攝像頭的拍攝,都可能洩露你屏幕上的二維碼或應用程序中的文本信息,從而影響隱私。
  • 藍牙和 NFC 等無線通信模式會廣播身份識別信息,可能造成隱私問題。

就像生活中的大多數事物一樣,並不存在 “唯一最佳選擇”。

現實檢驗:Airgap 能讓你免受 2020 年以來的硬件簽名器漏洞攻擊嗎?

讓我們審視一下自 2020 年初以來所有已知的、僅限於比特幣相關的漏洞。列這個清單的目的很簡單:檢查 airgap 通信是否能阻止這些漏洞(被利用)。

總的來說,我們研究過的所有漏洞沒有一個依賴於數據傳輸層 —— 也就是硬件簽名器與電腦或手機之間交換信息的通道。這意味著,無論設備是否 airgap,所有這些漏洞都可能被利用。

如果你對漏洞本身感興趣,我們提供了更多詳細信息的鏈接,以便你瞭解全貌。以下漏洞均未被證實有過實際的攻擊案例,其中一些漏洞更多是理論上的,或因其它原因難以被利用。

  • 供應鏈漏洞:攻擊者可控固件(Coldcard,2020/03)

    該漏洞允許攻擊者刷入惡意固件,並將設備重置為被入侵的 “出廠” 狀態
    詳細分析見:報告廠商公告

    Airgap 不起作用:這是一個物理攻擊向量

  • OP_RETURN 被當作找零輸出處理(Trezor,2020/03)

    該漏洞允許跳過用戶確認,可能影響二層協議(如 Omni layer)

    詳細分析見:廠商公告

    Airgap 不起作用:這是一個交易驗證問題

  • 混合交易中的惡意找零(Trezor,2020/03)

    找零可能被髮送到由攻擊者部分控制的 1-of-2 多籤地址、

    詳細分析見: Shift Crypto 報告第二份報告(2020/03)、廠商公告

    Airgap 不起作用:這是一個交易驗證問題

  • 字段長度檢查不足(Trezor,2020/03)

    該漏洞允許交易中的 prevhash 字段超出預期的 32 字節,其中可能包含一個將資金髮送給攻擊者的隱藏輸出

    詳細分析見: 廠商公告

    Airgap 不起作用:這是一個交易驗證問題

  • 交易輸入清理不一致(Trezor,2020/03)

    該漏洞允許含有單籤輸入和 1-of-2 多籤輸出(部分由攻擊者控制)的交易在未經用戶驗證的前提下被接受。

    詳細分析見:廠商公告

    Airgap 不起作用:這是一個交易驗證問題

  • 通過兩筆隔離見證交易製造鉅額手續費(所有廠商,2020/03)

    惡意錢包可以欺騙用戶兩次簽署同一筆比特幣交易,例如在首次簽名後偽造一個錯誤,要求用戶再次嘗試,並創建一筆帶有鉅額礦工費的交易。攻擊者與礦工勾結即可獲得這些費用。
    詳細分析見: Shift CryptoLedgerTrezorCoinkite

    Airgap 不起作用:這是 BIP-143 的通用驗證設計問題

  • JTAG/SWD 接口在未受保護的處理器上被啟用(Ledger,2020/06)

    Ledger Nano X 的微控制器單元(MCU)的調試接口被啟用。這可能允許供應鏈攻擊,但無法訪問內部密鑰。

    詳細分析見: 報告廠商公告

    Airgap 不起作用:這是一個物理攻擊向量

  • 比特幣衍生分叉/山寨幣跨賬戶簽名(Ledger / Trezor / Keepkey,2020/08)

    用戶可能被誘導簽署一筆比特幣交易,但設備屏幕上顯示的卻是測試網或山寨幣的詳細信息。
    詳細分析見: 報告LedgerTrezor

    Airgap 不起作用:這是一個交易驗證問題

  • 比特幣主網/測試網跨賬戶簽名(Coldcard,2020/08)

    用戶可能被誘導簽署一筆比特幣主網交易,但設備屏幕上顯示的卻是測試網的詳細信息。
    詳細分析見: Shift Crypto 的報告廠商公告

    Airgap 不起作用:這是一個交易驗證問題

  • 針對口令短語(passphrase)處理的勒索攻擊(Trezor/Keepkey,2020/08)

    用戶在主機電腦上用口令短語創建的錢包,可能被惡意軟件利用,在硬件簽名器上使用不同的口令短語,從而勒索未來所有轉入的資金。

    詳細分析見: 報告廠商公告 1廠商公告 2

    Airgap 不起作用:無論使用何種通信方式,口令短語都必須直接在設備上輸入或驗證

  • 遠程多籤盜竊攻擊(Coldcard,2020/11)

    該漏洞源於設備沒有檢查自己是否是新創建的多籤錢包的一部分,這使得攻擊者可以誘騙用戶創建一個由攻擊者控制的多籤錢包。

    詳細分析見: 報告廠商公告 1廠商公告 2

    這是一個普遍的錢包驗證問題,來自外部協作者或者說第三方參與者的數據可能是惡意的:

    • 如果多籤錢包完全由你自己設置,只需將 microSD 卡在多個硬件簽名器之間傳遞即可緩解此漏洞。這也適用於通過二維碼或 USB 連接(儘管目前沒有人實現此功能)的設備。
    • 如果多籤錢包是通過外部協作者或惡意的聯合簽名方設置的,即使設備是完全 airgap 的,也無濟於事。
  • SCP 長度擴展攻擊(Ledger,2021/05)

    該漏洞允許攻擊者解密應用程序數據和固件更新的一個數據塊,但不會造成任何安全影響(因為數據不是機密的,且公開可用)。

    詳細分析見: 廠商公告

    Airgap 不起作用:下載新固件時,數據在任何地方都可以被讀取

這些都是我們已知的所有公開披露的、與硬件簽名器相關漏洞。來源(也涵蓋了更早期的漏洞): Shift CryptoLedgerTrezor硬件簽名器漏洞列表

在更早期的攻擊中,我們能找到的最相關的例子是 2018 年報告的 “使用 U2F(通用二次認證)時的潛在數據洩露”。然而,這個例子同樣與 USB 傳輸層無關,而是關於 U2F 數據在通過 USB 傳輸前是如何被編碼(即解析)的。

除了需要物理劫持硬件簽名器的侵入式攻擊外,漏洞通常出現於邏輯層,即硬件簽名器未能正確驗證或解析交易詳情。

此外,重要的是要意識到 airgap 無法保護你免受惡意固件的攻擊。如果硬件簽名器本身被攻破,存在無數種洩露私鑰的可能(例如,通過比特幣簽名)。

Airgap 仍有用武之地

Airgap 集成

像二維碼或 microSD 卡這樣的通信方式在某些情況下可以用於其它目的,例如便利性和用戶體驗,具體取決於涉及的設備:

  • 當通過 PSBT 標準使用二維碼或 microSD 卡進行通信時,第三方應用可以更輕鬆地與硬件簽名器集成和混合搭配使用。
  • 二維碼是一種便捷的通信方式,適用於可以輕鬆連接相機附件的通用硬件,例如 SeedsignerSpecter DIY
  • 當與限制 USB 連接的設備(如 iPhone)通信時,二維碼也很有幫助。

需要注意的是,雖然有時 “PSBT” 被當做 “airgap” 的同義詞使用,但它實際上是另一種標準,用於將未簽名交易移動到另一個設備進行簽名,與任何特定的通信方式無關。這使得多個設備和軟件錢包之間可以實現互操作性,這也是支持 PSBT 原生化的一個重要理由。

“零通信” 安全

從安全角度來看,我們發現 airgap 唯一值得推薦的用途是:在 “完全” airgap,不接收外部通信的情況下使用硬件簽名器。重要的是,這並不是指硬件簽名器領域常規定義下的 “airgap 通信”,而是指不與不可信設備進行任何通信,即 “零通信”。雖然這在理論上顯而易見,但上文提到的 “遠程多籤盜竊攻擊” 就是一個實際的例子。然而,“零通信” 並不總是可行的:為了準備和最終廣播一筆交易,簽名器需要外部數據來得知當前擁有多少幣以及要發送到哪裡。

“零通信” 操作可以減少在無需外部信息的操作中的攻擊面,例如創建或恢復錢包助記詞、生成接收地址、命名錢包、啟用/禁用 可選的口令短語等。當然,“零通信” 操作可以在任何硬件簽名器上實現,即使是那些沒有被宣傳為 airgap 的設備,例如當硬件簽名器連接到移動電源時,其屏幕上就可以顯示接收地址。

Airgap 通信可以限制那些需要連續與硬件簽名器通信的潛在攻擊,例如持續探測設備的攻擊。然而,硬件簽名器是專用的,具有嚴格的通信協議,會直接中止任何不符合規則的連接。與其它安全挑戰相比,實現嚴格的通信協議是直截了當的,我們尚未發現此類探測攻擊的成功案例。

易用性是安全的基石

mermaid-diagram-2025-08-28-104222

- 交易簽名步驟 -

使用 airgap 硬件簽名器會顯著犧牲易用性。通過 airgap 通信來發送一筆 PSBT 交易,需要更多的步驟、按鍵操作、專注力以及時間。

mermaid-diagram-2025-08-28-104333

- Airgap 模式下的交易簽名步驟 -

用戶變成了通信通道的一部分,他們本質上是一箇中間人,但又沒有好的方法來審核自己正在中轉什麼數據。這增加了操作的摩擦,卻沒有帶來明顯的安全優勢。

一個 airgap 設備需要將大部分用戶界面集成到固件中。除了最基本的操作外,其它操作都更容易在連接了硬件簽名器的外部桌面端或移動應用上完成。

這就是為什麼我們不僅生產硬件,還開發了初學者友好的 BitBoxApp,讓使用 BitBox02 變得非常簡單。通過嚴格的交易驗證規則、嚴密的 USB 通信協議和端到端加密,BitBox02 能夠確保通信通道的安全性,同時提供更簡便的用戶體驗。

此外,未來一些重要的安全或隱私協議可能會讓 airgap 的用戶體驗變得更加複雜。例如,旨在防止用戶私鑰洩露的 “anti-klepto” 協議,該機制率先在 BitBox02 中實現。這個協議需要硬件簽名器與電腦之間進行新一輪的信息交換,以防止交易簽名被惡意篡改。如果一個 airgap 設備要實現這一安全機制,發送一筆交易就需要用戶額外再進行一輪手動的二維碼掃描。

結論

那麼,這對於硬件簽名器製造商的設計決策和用戶的購買決策來說,意味著什麼?在我們看來,選擇通信模式更多是出於對用戶體驗和應用集成的考量,而非安全因素,至少從技術角度來看是這樣。

當然,如果某個市場 “覺得” 某種通信方式比其它方式更好,那麼滿足這一需求在商業上是合理的。不過,雖然營銷難免誇大其詞,但這可能會誤導用戶,最終損害整個行業的聲譽。因此,相互監督、確保營銷宣傳的真實性符合每個人的最佳利益。

一種常見的說法是 “複雜性是安全的敵人”。換句話說,儘可能簡化用戶體驗本身就是一種安全優勢,因為這能降低用戶犯錯的幾率。當我們兩年前設計 BitBox02 時,我們就認為一個可以直接插入新電腦和手機的 USB 接口可以提供最佳的用戶體驗,同時不犧牲安全性。我們在本文中對 airgap 通信的研究表明,我們的決策經受住了時間的考驗。

另一種常見的說法是 “安全與易用性之間存在取捨”。但我們認為這是一個虛假的二元對立,硬件簽名器的目的就是讓安全變得簡單。我們先進的安全模型得到了專家的高度認可,它讓用戶無需擔心資產被盜。我們在設計 BitBox02 和 BitBoxApp 的方式,就是將複雜性隱藏在背後,讓用戶操作更輕鬆。我們確實提供了高級功能選項,這些功能可能並非絕大多數用戶一開始就需要的,但隨著你踏上財務獨立的旅程,其價值會逐漸顯現。例如,直接連接到你自己的比特幣全節點、使用 Tor 網絡實現更好的隱私保護、Coin Control 等。

這篇文章挑戰了目前業內的傳統觀點,我們理解它可能會被視為一個有爭議的看法。我們非常樂意傾聽不同的聲音,並將在未來繼續探索這個話題。期待聽到你的想法


常見問題

硬件簽名器語境下的 airgap 是什麼意思?

Airgap 是一種安全措施,指的是將設備與不可信網絡(如互聯網)物理隔離。在密碼學貨幣錢包中,它意味著簽名設備和聯網電腦之間沒有直接連接,通常通過二維碼或 SD 卡進行通信。

Airgap 能讓硬件簽名器更安全嗎?

雖然 airgap 可以提供一些安全優勢,但本文的結論是:airgap 通信對硬件簽名器的安全性提升微乎其微,甚至可能降低用戶體驗。

Airgap 能否防住所有漏洞?

不能,許多漏洞利用的是硬件簽名器的邏輯層,即設備未能正確驗證或解析交易詳情。這類漏洞無論設備是否 airgap 都可能存在。

使用 airgap 有任何優勢嗎?

Airgap 在用戶體驗和應用集成方面確實有其用處。例如,對於配備攝像頭配件的設備來說,使用二維碼交互會很方便,而 PSBT 標準則能實現多個設備和軟件錢包之間的互操作性。

關於 airgap 和硬件簽名器,核心要點是什麼?

選擇硬件簽名器的通信模式,更多是出於用戶體驗和應用集成,而不是安全性。關鍵在於確保所選方式不會犧牲安全性的同時,還能帶來良好的用戶體驗。

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論