Show HN:Keeper – 為 Go 語言設計的嵌入式金鑰儲存庫(歡迎來挑戰安全性)
Keeper 是一個為 Go 語言設計的加密金鑰儲存庫,它使用 Argon2id 和 XChaCha20-Poly1305 加密資料並儲存在嵌入式 bbolt 資料庫中,提供包含硬體安全模組(HSM)與遠端金鑰管理系統(KMS)整合在內的多種安全等級。
背景
Keeper 是一個專為 Go 語言開發的嵌入式秘密存儲庫,旨在為應用程式提供比環境變數或純文字檔案更安全的本地存儲方案。它採用 Argon2id 進行金鑰衍生,並預設使用 XChaCha20-Poly1305 進行加密,將秘密存放在嵌入式的 bbolt 資料庫中。開發者將其定位為輕量級的加密層,特別適合需要審計追蹤與崩潰安全旋轉機制,但又不想部署如 HashiCorp Vault 等大型基礎設施的 Go 專案。
社群觀點
在 Hacker News 的討論中,社群對於 Keeper 的「嵌入式」定位展現了濃厚興趣。許多開發者認為,雖然市場上已有成熟的秘密管理工具,但大多數都需要獨立的伺服器與複雜的運維成本。Keeper 的出現填補了應用程式內部秘密管理的空白,特別是針對那些需要隱藏憑證、避免秘密洩露至環境變數或檔案系統的場景。然而,也有評論者對其威脅模型提出質疑,認為如果審計系統與受保護的秘密存放在同一台可能被攻破的機器上,其安全性與審計價值將大打折扣。對此,開發者回應其核心目標在於提供一個可審計且具備隔離性的存儲層,而非單純的靜態加密。
安全性設計是討論的另一個焦點。部分資深開發者對 Keeper 採用的「無聊但正確」的密碼學設計表示讚賞,例如使用 HKDF 衍生金鑰、對策略鍵進行雜湊處理以防止列舉攻擊,以及整合 memguard 保護主金鑰。不過,社群也迅速指出了潛在的漏洞,例如在驗證 HMAC 時,若欄位為空則無條件回傳正確的邏輯錯誤。這類被戲稱為「氛圍密碼學」的實作疏忽引發了關於 AI 輔助開發與自動化測試的討論。開發者承認了這些問題,並解釋部分錯誤可能是由於 AI 自動生成文件時誤改了程式碼邏輯,承諾會針對旋轉邏輯與驗證機制進行更深入的審核。
此外,關於專案命名的爭議也浮上檯面。多位留言者提醒,Keeper 這一名稱與知名的企業級秘密管理服務 Keeper Security 衝突,可能導致法律風險或使用者混淆,開發者對此表示接受並考慮更名。在功能對比上,社群成員分享了如 age 或 fnox 等工具,但討論最終達成共識:Keeper 的獨特性在於它是一個「函式庫優先」的解決方案,專門解決運行中的二進位程序如何在不依賴外部雲端服務或本地明文檔案的情況下,安全地管理其內部狀態。
延伸閱讀
在討論中,社群成員提到了多個相關的秘密管理工具供參考。其中包括基於 age 檔案系統的秘密管理器 secret,以及支援跨平台與多語言(Rust, PHP, .NET, JS, Go)的嵌入式存儲方案 SecureStore。此外,也有人提到 fnox 作為統一管理開發、CI 與生產環境秘密的 CLI 工具,與 Keeper 這種低層級的嵌入式存儲庫形成了互補關係。針對安全性審核,有開發者利用 beigeboxoss.com 的 AI 框架對 Keeper 進行了初步的漏洞掃描並提交了 Issue。