Skip to content

v0.8.6:iPad QR 登入與群組加密轉送修正

Choose a tag to compare

@b40609 b40609 released this 22 Oct 06:14

v0.8.6:iPad QR 登入、金鑰保存與群組轉送修正

包含 E2EE、QR 登入與保存恢復修正,以及初始化失敗階段顯示。

下載 v0.8.6 ZIP · SHA-256 校驗檔

修正內容

已用合成金鑰重現底層 Yomi 0.5.0 的缺陷:群組金鑰建立者與接收裝置屬於同一帳號,但使用不同 key ID 時,程式誤將接收裝置的公鑰當成建立者的公鑰,導致群組金鑰解密及目的加密預檢失敗。修正後按建立者的 key ID 取得對應公鑰;本機未保存時沿用既有公鑰查詢,回傳 key ID 不符就拒絕使用。

修補只在載入時變更固定版本的群組金鑰模組,不改寫 node_modules。載入前核對模組 SHA-256,依賴來源不符時拒絕套用。後續升級 Yomi 必須重新檢查此修補。沒有新增群組金鑰註冊或明文發送流程。

另外補上路線初始化的失敗階段,並將介面、套件及安全診斷的版本對齊 0.8.6。舊診斷顯示 0.8.4 是匯出程式的殘留字串,不能據此判定裝錯版本。

  • QR 最終授權請求送出後,即使跨過六分鐘掃碼期限或收到取消訊號,仍接收並保存已核發的登入結果;保留請求本身的網路逾時限制。
  • 匯入多代金鑰時,核對每組公私鑰,並以 LINE 明確核發的 key ID 選擇發送用金鑰,避免缺少或重複時間戳時誤選舊代。所有舊代仍保留供解密使用。
  • 登入先核對帳號,再核對寫入後的 Token、帳號、完整金鑰與 bootstrap;保存不完整就顯示失敗,不再只憑登入授權成功顯示已連結。
  • 重開服務核對帳號及金鑰歸屬;快取缺漏或 JSON 損壞時,可由已保存的 bootstrap 在記憶體恢復,不覆寫原檔、不重新註冊或輪替金鑰。
  • 群組路線只讀取需要的群組目錄,避免無關的好友清單讀取失敗阻擋啟動;群組目錄分批載入,並在讀取、預檢與發送前核對可存取的聊天室。

上游研究:同帳號群組加密問題、多代金鑰綁定問題。本專案依賴 Yomi 已會解碼完整 keychain,並非直接複製 linejs 的修法;本次另以真實 Yomi 程式及合成協定資料重現、驗證本專案的金鑰選擇與群組解密路徑。

安裝修補包

套件包含原始碼、鎖定依賴清單與啟動器,不含 Node.js、node_modules 或私人登入資料。

  1. 在舊程式按「停止轉送」,再從舊程式的 yomi-probe 目錄執行 powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\stop-server.ps1 關閉設定服務;否則啟動器會沿用舊程序。
  2. 將 v0.8.6 ZIP 解壓到新目錄,在其中的 yomi-probe 執行 npm.cmd ci --ignore-scripts。
  3. 原本使用 iPad QR 身分者,雙擊新版根目錄的 啟動iPad實驗模式.cmd。重新整理後應顯示 v0.8.6,使用同一身分的已保存登入及原規則。

程式沿用同一 Windows 使用者下、同一登入身分的資料目錄。更新不需要刪除金鑰、清空轉送紀錄或重新建立規則;若原規則沒有出現,先確認登入身分。只在原登入確實無法恢復時處理重新授權。

實際驗證

Windows 11、Node.js 26.4.0 執行 npm.cmd test:251 項通過、0 失敗、0 跳過。npm.cmd audit --json:0 已知漏洞。

  • 未修正版本在同帳號不同金鑰的合成案例中,目的加密預檢失敗。
  • 修正後,真實協定服務搭配記憶體平台替身完成預檢與文字加密;使用獨立密碼程式解密,內容及驗證標籤核對通過。
  • 群組/聊天室、具名/數字欄位、金鑰序列化後重新載入、來源解密、同一金鑰及其他帳號建立者均通過。
  • 缺少接收私鑰或回傳錯誤 key ID 時拒絕啟動,不發送;同步載入及非同步相容載入均通過,已安裝依賴檔案保持原樣。
  • 既有故障隔離、重啟去重、診斷遮蔽與介面測試通過。
  • 真實 QR bootstrap 搭配獨立產生的八代加密 keychain,完成登入、保存、冷啟動恢復,核對全部金鑰及指定發送金鑰;快取缺漏/損壞、保存靜默失敗、錯帳號、錯金鑰等案例通過。
  • 使用實際 LINE 路線 adapter 與轉送核心,驗證初始化、讀取、發送及重啟去重;好友 API 失敗不阻擋純群組路線,205 個群組分批載入通過。
  • 獨立本機瀏覽器替身服務完成 QR → PIN → 已連結 → 載入聊天室 → 保存群組規則 → 開始/停止轉送;路線運作中、錯誤 0,瀏覽器警告與錯誤為空。此項只驗證介面串接,密碼與協定驗證由前述自動化測試負責。

以上使用合成資料,未讀取真實登入資料或發送平台訊息。朋友原始診斷缺少失敗階段,尚無證據確認其故障就是本次已重現的缺陷;本機回歸通過不能替代朋友帳號的實際收送結果。