返回首頁

GitHub Repo

Hermes Agent 社群回報 Matrix 加密狀態衝突,跨程序發訊可能使後續私訊無法解密

10 月 18 日的 Hermes Agent 社群回報指出,閘道執行期間另開命令列發送 Matrix 訊息,可能造成後續私訊無法解密。回報附有重現步驟與路由修補構想,但尚待維護者確認及正式修復。

Gerald L. Nino · Public domain · Image source
zh-Hant

Hermes Agent 的 Matrix 整合出現一項涉及多程序加密狀態的可靠性回報。使用者於 10 月 18 日指出,閘道持續執行時,若同一設定檔另以 hermes send 發訊,後續機器人私訊可能無法解密;觸發者也可能是代理自行啟動的子程序。回報環境為 Hermes 0.22.2,並附操作步驟與發送端日誌,目前議題仍開啟。來源:問題回報

理解這個問題,須區分 Matrix 的兩層加密狀態。官方文件說明,Olm 用於裝置間的加密通訊,Megolm 則負責房間訊息;新的 Megolm 工作階段金鑰須透過裝置間的安全通道分享。換言之,房間訊息成功送上伺服器,並不足以證明收件裝置已取得解密所需的金鑰。來源:Matrix 加密實作指南

依回報者的程式碼分析,命令列路徑會另建客戶端,與閘道共用裝置身分及 crypto.db。第二個程序推進並寫回 Olm 狀態後,閘道仍可能使用記憶體中的舊快取分享房間金鑰,造成資料庫與程序狀態脫節。值得注意的是,發送端仍記錄分享成功,容易讓監控漏掉收件端故障;不過這項根因判讀尚缺收件端除錯日誌及維護者獨立確認。來源:根因分析

這對將聊天平台當成代理操作介面的團隊具有實際意義:健康檢查應涵蓋收件端可讀性,並檢查誰擁有持續變動的加密狀態。回報者建議將外部發訊轉交執行中的閘道,暫時避免共用同一裝置另開加密客戶端;重啟閘道曾使其後續私訊恢復,但不代表舊訊息必然復原。接下來應觀察修補是否加入程序間轉送、狀態鎖定與競態測試,以及正式版本涵蓋哪些部署情境。來源:修補構想與暫時處理方式

來源

  1. Hermes Agent issue #141208:跨程序 Matrix 發訊造成加密狀態衝突
  2. End-to-End Encryption implementation guide