# 安全性與資料處理

Canonical page: https://phishdestroy.github.io/TgWitness/zh-Hant/docs/reference/security/

威脅模型、存取模型、靜態機密資料、網路暴露風險、會話匯入，以及如何回報漏洞。

TgWitness 可在您的電腦或伺服器上運行。帳戶連線、公開代理伺服器清單維護以及可選的外部服務均設有 明確的路由政策。通知、時間戳記、異地副本及見證人 皆可分別進行設定。本頁面列出受保護的內容、保護方式，以及哪些事項 需由操作者自行處理。

| 領域 | 簡而言之 |
| --- | --- |
| 存取 | 管理員金鑰加上對帳戶／聊天室的範圍式存取權限、七項權限設定及可撤銷的連線；預設為 localhost |
| 靜態資料的隱私 | 會話、API 配對、簽名金鑰及代理伺服器設定均採用 Fernet 進行加密 |
| 訊息與媒體 | 資料以未加密形式儲存：請啟用磁碟加密並設定嚴格的存取權限 |
| 完整性 | 每筆記錄均附有 SHA-256 雜湊鏈及 Ed25519 數位簽名 |
| 未涵蓋 | 系統管理員、外洩的控制面板憑證、擷取的完整性 |

有關漏洞通報，請參閱[安全政策](https://github.com/phishdestroy/TgWitness/blob/main/.github/SECURITY.md)。

## 存取模式

主控制面板憑證賦予完全控制權。其他使用者可獲得其專屬的 [範圍限定存取權限](https://phishdestroy.github.io/TgWitness/zh-Hant/docs/reference/access/)：包含指定的工作區與聊天室、權限設定、有效期限、 IP 限制、登入次數限制以及可撤銷的連線。若存取權限僅限於特定聊天室， 即使已勾選相關權限，亦無法執行整個工作區的操作。 工作區共用同一個執行程序，且資料不會與主機管理員隔離。

該面板預設在 localhost 上監聽。透過瀏覽器登入時，系統會將存取 令牌兌換為會話憑證；瀏覽器會將其作為承載者令牌傳送。該令牌儲存於 sessionStorage 中，而非認證 Cookie。鎖定／登出會清除 瀏覽器會話。關閉瀏覽器或結束會話並不會停止資料收集。

已發行的憑證與會話憑據會以雜湊值形式儲存於加密保管庫中。 撤銷憑證將終止相關會話；權限變更則會影響後續 請求。已下載的檔案無法被收回。管理員亦可限制 自身的瀏覽器會話，但直接使用主控制面板憑證的腳本仍可 保留完整存取權限，並繞過這些瀏覽器會話限制。

驗證失敗會根據客戶端位址進行速率限制。IP 限制採用 應用程式所偵測到的位址；在依賴此機制前，請先確認 反向代理伺服器的運作行為。Witness 憑證仍為獨立的唯讀檢查點／狀態憑證。

### 試用存取

`/api/demo-access` 是一個刻意未經身份驗證的引導程式，專用於明確 啟動且隔離的合成示範環境。它會發出一個獨立於進程生命週期的權限， 絕不會發出真實的面板代幣或 TGWITNESS_TOKEN 覆寫代幣。 其發行與使用需具備 迴路對等節點及主機，不得包含轉發標頭，亦不得進行跨來源請求。若存在 其他工作區或已授權的會話，則此路徑將被停用。活躍工作區絕不會 發行此權能。此示範無法連結帳戶或變更資料蒐集設定。

## 面板內容與匯出功能

本頁面未使用任何外部字型、分析工具、CDN 資源或嵌入式遠端媒體。 來自 Telegram 的文字以純文字形式插入，而非 HTML。下載的附件 以二進位附件形式提供。JSONL 匯出檔保留原始字串；HTML 則會對其進行 轉義；可能成為公式的 CSV 儲存格會加上單引號作為前綴。

匯出檔案不包含驗證與簽署密鑰，但會刻意保留 所收集的來源元資料、識別碼，以及可能包含的個人或敏感內容。 原始來源元資料中可能包含 Telegram 存取雜湊值與檔案參照。

## 靜態資料的隱私

Telegram API 憑證、StringSession 以及 Ed25519 私鑰均採用 Fernet 進行加密。預設情況下，其金鑰儲存於同一受保護的資料目錄中。 此舉可降低意外洩露明文的風險；但無法防範 能讀取整個目錄的攻擊者。TgWitness 不會對訊息內容及媒體檔案進行**加密** 。請使用磁碟加密並設定嚴格的作業系統權限。Unix 私鑰 檔案以權限模式 0600 建立；新建立的資料目錄則採用權限模式 0700。 現有目錄的權限不會被變更。Windows 會繼承目錄的存取控制清單 (ACL)：請將其 限制為服務帳戶及經授權的管理員。

### 外部主金鑰

對於新的資料目錄，TGWITNESS_VAULT_KEY_FILE 可提供外部隨機 主金鑰。 系統會透過 HKDF-SHA256 及獨立的隨機鹽值，為每個工作區衍生出不同的 Fernet 金鑰。 為進行復原，必須保留 vault.external.json 檔案。若主金鑰遺失或 錯誤，系統將無法運作。現有的本地金庫不會被靜默遷移。 正在執行的程序可存取該金鑰；此非 HSM 隔離機制。控制面板會 顯示所選模式，並明確說明訊息／媒體儲存內容不會 由應用程式進行加密。完整威脅模型請參閱[「連線」、「代理伺服器」及「資料保護」](https://phishdestroy.github.io/TgWitness/zh-Hant/docs/reference/connection/) 章節。

## 代理伺服器與網路路由

代理伺服器設定會加密儲存於金庫中。密碼及 MTProxy 機密資訊 不會透過 API 傳回，也不會寫入證據記錄中。每個工作區皆可自行選擇 其 Telegram 路由及 [IP 模式](https://phishdestroy.github.io/TgWitness/zh-Hant/docs/reference/connection/#ip-modes)。

「隱藏 IP」模式會拒絕直接使用 Telegram 備用連線，並要求透過代理伺服器處理外部 HTTP 請求。明確選取的「備用連線」模式則允許在延遲後直接存取 Telegram； 「隧道／VPN」模式則允許直接連線。 選擇隧道 模式並不會安裝或驗證 VPN。這些設定不會控制所有裝置 流量、瀏覽器、套件管理員或由本地代理主機進行的 DNS 解析。

MTProxy 僅傳輸 Telegram 流量。外部請求可使用獨立的 SOCKS5/HTTP 代理、工作區的 SOCKS5/HTTP 路由，或允許的直接路由； 亦可將其停用。獨立見證器擁有其專屬的傳輸設定。 一般 SOCKS5/HTTP CONNECT 認證並不會由這些代理 協定本身進行加密。偽造的 TLS MTProxy 密鑰目前仍不被支援。

## 登入與會話匯入

轉換後的 .tgwitness-session 檔案在 載入並儲存至金庫之前，會包含明文授權密鑰。離線命令列介面 (CLI) 接受經過審核的 Telethon 資料結構。 面板匯入功能另支援 Pyrogram SQLite、現代單一帳戶 TData ZIP， 以及已建檔的 JSON 輸入格式。此功能需經身份驗證，限四個檔案／8 MiB， 並在記憶體中處理上傳內容，無需解壓縮存檔或儲存原始檔案。 正規化的憑證僅會回傳給發出請求且已驗證的瀏覽器； 在 Telegram 授權成功後，這些憑證會儲存於加密的保管庫中。 請保護原始檔案與轉換後的檔案，並避免多個客戶端同時複製同一組授權憑證。

資料處理過程會驗證容器校驗和、本地解密雜湊值以及結構 長度。系統會暫時使用使用者提供的桌面版本地通行碼，且不會儲存該密碼。 此有限解析器無法保證所有桌面版皆相容。 QR 圖像在本地端生成，包含短效期的 Telegram 登入憑證，且 絕不會傳送至外部渲染服務。鎖定裝置、切換工作區、重新登入， 以及路由變更都會取消待處理的 QR 嘗試。重新載入或關閉分頁可能會導致 該嘗試維持待處理狀態直至過期。成功的 QR 登入仍會強制執行帳戶綁定。 一般 API 請求體仍限制為 16 KiB；經認證的匯入路徑接受 最多 12 MiB 的編碼 JSON，並會另行強制執行較小的解碼檔案限制。

登入代碼及 Telegram 兩步驟驗證密碼均不會被永久儲存。電話號碼／代碼雜湊狀態僅在 授權期間暫存於記憶體中。Telegram 連線會話賦予帳戶存取權限；切勿 將資料目錄、會話、憑證、金庫金鑰或私人簽署金鑰上傳至 GitHub。

## 日誌與傳輸

預設的 API 驗證回應已進行替換，以避免回傳憑證 值。應用程式存取記錄功能已停用。請勿設定反向代理伺服器 以記錄 Authorization 標頭或請求正文。HTTP 會以明文傳輸憑證 和登入密鑰：只要連線離開 localhost，請務必使用 HTTPS 或 SSH 隧道。

## 完整性限制

哈希鏈、資料庫觸發器及簽名機制可偵測特定修改； 但無法阻止本地系統管理員重寫並重新簽署日誌。 請將簽名檢查點及公鑰指紋儲存於獨立系統中。 「證據模式」與「異地副本」（兩者預設皆為關閉）會將檢查點雜湊值傳送至 時間戳記服務，並將加密副本傳送至 S3 相容儲存空間；詳見證 [據格式](https://phishdestroy.github.io/TgWitness/zh-Hant/docs/reference/evidence/)說明。透明度日誌、HSM 支援的簽名以及正式 證據鏈認證功能尚未實作。

## 若您懷疑有問題

請保留原始資料目錄，並使用另一份副本進行分析。請勿 在公開問題中包含私人的 Telegram 資料或憑證。本工具未聲稱 具備任何獨立的安全認證。
