自服務勒索軟體:針對本地AI工具的安全防護
本地AI軟體可讀取裝置上的敏感檔案。Brendan Keaton開發了一個實驗性工具——Annex,類似於自服務勒索軟體,在AI代理執行期間加密使用者指定檔案,防止資料洩露。該工具利用AES-256-GCM加密,幷包括多重防護措施,如確定性金鑰生成、檔案銷燬和PIN驗證。
Brendan Keaton在其部落格中介紹了一個名為Annex的實驗性專案,旨在解決本地AI工具帶來的安全威脅。隨著本地AI代理(如編碼助手)的普及,它們能夠訪問裝置上的敏感檔案,包括API金鑰、個人資料等。儘管有一些緩解措施(如.llmignore檔案),但本質上仍是基於信任的協議,無法完全防止惡意代理或提示注入攻擊。即使是更安全的方案(如虛擬機器或不同使用者空間)也可能被突破。
Annex的核心理念是“自服務勒索軟體”:在使用者啟動AI代理之前,透過一個加密會話將指定檔案完全加密(包括檔名),使得AI工具無法讀取。AI任務完成後,使用者透過PIN碼解密檔案。加密採用AES-256-GCM標準,金鑰並非隨機生成,而是由四個輸入(當前UTC日期、遞增會話計數、使用者註冊時獲得的六個恢復碼之一、以及伺服器端唯一秘密)結合SHA256雜湊生成。這種確定性方法雖然不常見,但允許在資料庫或邏輯故障時恢復檔案,且攻擊者需同時獲取伺服器秘密、恢復碼、PIN和裝置本身。
檔案加密流程包括:收集檔案資訊、計算原始檔案的SHA256校驗和、加密(小檔案使用12位元組隨機數,大檔案分塊加密)並重新命名為隨機檔名新增.annex副檔名、透過多次覆寫和隨機重新命名等方式安全銷燬原檔案、最後向伺服器確認完成。該過程考慮了不同作業系統的TRIM特性,並利用Rust的zeroize crate從記憶體中清除金鑰。此外,還會處理臨時檔案(如.bak、.swp、VSCode備份和shell歷史)。
解密時需輸入PIN碼,防止AI代理直接呼叫API獲取金鑰,且後端設有低速率限制以防暴力破解。專案還包括崩潰恢復機制,透過維護加密檔案清單確保完整性。Keaton指出,此工具可防止AI代理修改測試用例以透過測試,並建議未來可增加出口防火牆或部分檔案加密等強化措施。專案程式碼已在GitHub上以MIT許可證釋出,但尚未審計,作者歡迎反饋和改進建議。