# 關於 Keystone 产品開源的介紹

By [Keystone 硬件錢包](https://paragraph.com/@keystonecn) · 2022-05-22

---

在 Keystone 的開源之路上，我們又往前邁出了重要一步。本文將全面介紹我們已經開源的所有項目，以及 Keystone 如何實現開源和我們未來的開源理念。

Keystone 開源了哪些代碼和設計
===================

在 Keystone 中，已經[開源的項目](https://github.com/KeystoneHQ/Keystone-developer-hub)有：安全芯片的固件代碼、硬件電路設計和 BOM 物料清單、錢包應用層代碼和部分安卓系統層代碼。同時还發布了第三方[代碼審計報告](https://github.com/KeystoneHQ/Keystone-developer-hub/tree/main/audit-report)，我們也是首家公開此報告的硬件錢包公司。

Keystone 設備原理圖（電路圖）和物料清單（BOM）都已經在 [GitHub](https://github.com/KeystoneHQ/Keystone-developer-hub/tree/main/hardware) 發布。如果您對 DIY 自己的硬件錢包特別感興趣，那這些內容就為您展示了如何一步一步 DIY Keystone 硬件錢包，同時你也可以通過這些內容來研究 Keystone 的內部構造。

我們是第一家開源[安全芯片固件代碼](https://github.com/KeystoneHQ/keystone-se-firmware)的硬件錢包公司（也是目前已知的硬件錢包中唯一一家開源硬件錢包廠商），另外，我們的[安全芯片 Datasheet](https://github.com/KeystoneHQ/Keystone-developer-hub/blob/main/se/Keystone_Secure_Element_Datasheet.md) 也是開源的。由於涉及到安全芯片廠商的知識產權，我們與其他硬件錢包一樣，只能實現部分開源（通用微控制器 MCU 也無法開源底層代碼）。但是，由於安全芯片固件代碼是開源的，您可以驗證以下重要的加密操作：

*   如何根據隨機熵生成助記詞和主私鑰
    
*   如何派生子私鑰和公鑰
    
*   如何在安全芯片中完成整個簽名過程
    
*   如何讓私鑰永遠不離開安全芯片
    

Keystone 还允許用戶自行[投擲骰子生成隨機熵值](https://support.keyst.one/v/traditional-chinese/gao-ji-gong-neng/zhu-ji-ci/shi-yong-tou-zi-chuang-jian-zhu-ji-ci)，進而派生私鑰，從而減少了對安全芯片底層代碼（真隨機數生成器）的依賴。如何驗證這個結果，您可以在[此處](https://blog.keyst.one/how-to-verify-the-recovery-phrase-created-by-dice-rolling-af01c16b765e)找到答案。對於想要進一步驗證安全元件操作過程的測試人員，可以在與我們簽署保密協議之後，拿到開發版。

Keystone 使用的是安卓操作系統，它為我們的開發提供了成熟的工具鏈，比如相機（用來掃描二維碼）、觸摸屏（增強可讀性，預防錯誤）以及其他功能，讓用戶有更好的操作體驗。安卓的安全芯片在許多支付程序和銀行終端中普遍應用，所以安全係數很高，因此我們在安卓操作系統上構建了一個[完全開源的錢包應用層](https://github.com/KeystoneHQ/Keystone-developer-hub/blob/main/se/Keystone_Secure_Element_Datasheet.md)。但是，由於操作系統層某些部分的所屬權屬於各個廠商，所以這部分也不能完全開源。為了進一步提高安全性，防止安卓系統可能發生的攻擊，您可以在我們的[開源代碼](https://github.com/KeystoneHQ/Keystone-system)中查看我們做了哪些操作：

*   關閉 adb 並刪除 adb 後台進程
    
*   刪除不相關的系統進程和應用程序
    
*   阻止安裝第三方應用程序
    
*   修補 Linux 內核漏洞
    

在 Keystone 開源這件事情上，我們还接受了具有公信力的第三方代碼審核，並將[審計報告](https://github.com/KeystoneHQ/Keystone-developer-hub/tree/main/audit-report)發布在了 Github 上。我們選擇了中國最好的代碼審計供應商之一：一家由前 360 公司的核心人員和主要項目負責人創建的[審計公司](https://peckshield.com/)，他們在區塊鏈相關產品和防禦安卓黑客方面經驗豐富。大家可以看到，我們已經修復了報告中提到的大大小小所有問題，僅有的兩個未修復的問題，其本身是低風險問題，未修復的原因主要是跟我們業務邏輯有沖突。具體如下：

*   PVE010：這個問題與我們的業務邏輯有沖突——我們允許用戶使用指紋授權交易。並且，在安全芯片內，有多重機製確保種子或助記詞不被泄露。比如，安全芯片的所有數據全部默認加密，而且想要竊取種子或者助記詞，主要方式是安裝病毒固件到 Keystone 中，但是只有我們官方簽名的固件包才能進行固件升級，並且，固件升級也依賴用戶的密碼授權，這就杜絕了廠商作惡的可能性。
    
*   PVE011：這個問題也與我們的業務邏輯有沖突——為了保護用戶的硬件錢包[免受旁路攻擊](https://mirror.xyz/keystonecn.eth/SFGEVsIQOPls5SGV2CBr54tj6KNpCs5hoqXE-WlPa5M)，我們設計了多重[拆機自毀機製](https://mirror.xyz/keystonecn.eth/A5blBF-KWF5sGCm5TzCXpmQj_5xy3wUYYXjUeCInWrM)。Keystone 設備一旦檢測到暴力拆機，可以主動銷毀私鑰等敏感數據。如果刪除數據依賴用戶輸入密碼，那拆機自毀機製就無法發揮作用。
    

使用多重簽名實現信任最小化
=============

實現信任最小化最有效的方法之一就是支持比特幣 PSBT [多重簽名](https://support.keyst.one/v/traditional-chinese/gao-ji-gong-neng/duo-qian-gong-neng)或者以太坊的 Gnosis Safe 多簽。

正如 Michael Flaxman 在此[播客](https://stephanlivera.com/episode/97/)中所提到的，多重簽名錢包中每增加一個簽名者，安全性就會提高一個等級，即使增加的簽名方是閉源硬件錢包。因為如果攻擊著想要攻擊一筆多簽交易，他就必須攻擊所有參與簽名的硬件錢包。如果您使用的是來自不同供應商的硬件錢包，那這種情況將難以實現。

目前，我們以經完成了與 [Gnosis Safe](https://support.keyst.one/3rd-party-wallets/defi-dapp-with-keystone/gnosis-safe)、 [Blue Wallet](https://support.keyst.one/v/traditional-chinese/di-san-fang-qian-bao/bi-te-bi-qian-bao/bluewallet)、[Spectre](https://support.keyst.one/v/traditional-chinese/di-san-fang-qian-bao/bi-te-bi-qian-bao/specter)、[Wasabi Wallet](https://support.keyst.one/v/traditional-chinese/di-san-fang-qian-bao/bi-te-bi-qian-bao/wasabi)、[Sparrow](https://support.keyst.one/v/traditional-chinese/di-san-fang-qian-bao/bi-te-bi-qian-bao/sparrow)、[BTCPay Server](https://support.keyst.one/v/traditional-chinese/di-san-fang-qian-bao/bi-te-bi-qian-bao/btcpay-server)、[Electrum Wallet](https://support.keyst.one/v/traditional-chinese/di-san-fang-qian-bao/bi-te-bi-qian-bao/electrum)、Fully Noded 等多個數字貨幣錢包的兼容，並且支持 PSBT 多重簽名。多重簽名被認為是安全儲存數字貨幣的[最佳選擇](https://twitter.com/mflaxman/status/1310580116808970240)，用戶可以使用 Keystone 硬件錢包作為簽名者創建多重簽名錢包，以此驗證未簽名的多重簽名交易。您可以在[本文](https://medium.com/shiftcrypto/the-pitfalls-of-multisig-when-using-hardware-wallets-9b0e98e4c19c)中查看此功能的重要性。

下一步計畫
-----

目前，為了防止網絡釣魚攻擊，Keystone 僅允許用戶通過簽名的固件包進行升級， Ledger、Trezor 和 Keepkey 用戶最近都成為網絡釣魚攻擊的受害者。所以只是單單提醒用戶謹慎安裝第三方固件不足以應對威脅，因為並非所有用戶都具備必要的背景知識，能意識到固件升級過程中潛在的網絡攻擊。

僅允許由我們簽署的固件包進行升級確實防範了大量網絡攻擊，但也有缺點，那就是用戶必須信任我們發布的固件升級包。為了減小這種信任，並滿足那些想要自定義固件的高級用戶，我們未來會發布 Cypherpunk 版本的 Keystone，這個版本的 Keystone 不再預裝任何固件，因此用戶必須編譯自己的固件，在 Github 上選擇可用的私鑰進行簽名，並且，用戶可以自行替換升級包校驗的秘鑰對，從而只識別用戶自行簽名的升級包。

作為目前區塊鏈社區中支持[多重簽名這一最佳解決方案](https://twitter.com/mflaxman/status/1310580116808970240)的一員，我們非常自豪地告訴大家，我們與 [Nunchuk](https://nunchuk.io/)、[ColdCard](https://coldcard.com/) 和 [BitBox](https://shiftcrypto.ch/) 的開發人員一起起草了 [BIP129](https://github.com/bitcoin/bips/blob/master/bip-0129.mediawiki)（比特幣安全多重簽名設置，BSMS ）。該 BIP 將比特幣多重簽名的安全性，提升到了一個全新的水平。不久的將來，我們也將實施此 BIP 準則。

羅馬不是一天建成的
=========

關於開源，我們為什麼要一步一步實現？有這樣幾個原因。首先，我們有責任保護我們的用戶免受日益增加的黑客攻擊，而將代碼開源的同時也將暴露漏洞，行業內有一句話：「security through obscurity」。所以，Keystone 硬件錢包開源的同時也產生了新的潛在威脅。我們需要執行更嚴格的代碼標準，對這些漏洞進行分析修復，然後才能發布。

世界上沒有絕對的事情，也沒有任何電子產品永遠是完全透明100%開源的，但開源對區塊鏈社區來說仍然非常重要。開源代碼不僅使內部工程師作惡變得更加困難，而且還能促進硬件錢包與軟件錢包等其他產品的集成。現在我們的產品與其他軟件錢包的兼容性越來越高，這也是我們理應為比特幣社區做出的貢獻，同時這也有助於減少用戶對我們產品的信任依賴。

---

*Originally published on [Keystone 硬件錢包](https://paragraph.com/@keystonecn/keystone-4)*
