# 確保安全

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

了解 Telegram 的傳輸路徑、公開代理伺服器清單以及可選的外部服務。了解每項密鑰能解鎖哪些功能、防護措施涵蓋哪些範圍，以及哪些部分需要您自行處理。

**127.0.0.1**預設為面板位址

**256 位元**隨機面板代碼

**0**內容分發網路（CDN）、分析工具或遠端字型

**Ed25519**每筆記錄均附有簽名

## 所有內容的匯集之處

該收集器、其控制面板以及所有儲存的記錄，均保留在您運行該工具的電腦或伺服器上。預設情況下，Telegram 是唯一的輸出目的地；其他每個目的地皆需透過獨立開關設定。

06 / 機器留下的痕跡您的安裝

您的電腦或伺服器

**面板**127.0.0.1:8787 · 承載者憑證

**收集器**每個工作區僅限一個 Telegram 客戶端

資料目錄

**日誌**SQLite · 雜湊鏈結 · 簽名

**媒體**檔案名稱採用 SHA-256 生成

**Vault**Fernet · 會話、API 配對、簽名金鑰、代理伺服器

- **Telegram**隨時 · 透過您的路徑

  該帳戶的 MTProto 連線方式：直接連線、SOCKS5、HTTP 或 MTProxy。「隱藏 IP」模式會等待可用的代理伺服器；若要啟用直接連線備用機制，則需選用明確允許此功能的模式。
- **站外文案**可選 · 預設為關閉

  日誌、檔案及檢查點在上傳至 S3 相容儲存空間前，均會以 AES-GCM 加密。金鑰由您自行保管；附件名稱採用帶有金鑰的雜湊值，而非其內容雜湊值。
- **通知**可選 · 預設為關閉

  包含問題清單及聊天室標題的變更次數。訊息摘錄僅在您啟用該功能時才會發送。
- **時間戳權威性**可選 · 預設為關閉

  僅包含簽名檢查點的 SHA-256 值與一個隨機的非ce值。不包含任何訊息內容，亦不包含聊天室名稱。
- **Witness**可選 · 預設為關閉

  透過唯讀憑證擷取經簽名的檢查點與擷取計數器。該工具無法讀取對話內容或變更設定。

預設設定：僅 Telegram 連線會離開這台機器。

可選的儲存位置可針對每個工作區進行設定。訊息內容與媒體檔案將以未加密形式儲存於資料目錄中：請透過磁碟加密與檔案權限來保護該目錄。

## 每個秘密所揭示的真相

| 機密 | 儲存位置 | 它能帶來什麼 | 若發生洩漏 |
| --- | --- | --- | --- |
| **面板代幣** | 資料目錄中的 `panel-token.txt`；瀏覽器僅將其保留於該分頁中 | 每個工作區中的所有內容：閱讀與匯出、變更範圍、登入帳戶 | 停止 TgWitness、刪除 `panel-token.txt`，然後重新啟動：將建立一個新的代幣 |
| **Telegram 會話** | Vault，加密版（`credentials.enc`） | Telegram 帳號本身 | 請在 Telegram 的*「設定」→「裝置」*中結束該會話 |
| **簽名金鑰** | Vault，加密版（`signing.enc`） | 透過您的數位指紋進行驗證的簽名記錄 | 檢查點儲存於其他位置，透過「見證」與時間戳記，可顯示先前存在的內容 |
| **金庫金鑰** | 資料旁標示的 `vault.key`，或用於新資料目錄的外部主金鑰 | 解密金庫 | 請將會話金鑰與簽署金鑰也視為已外洩 |
| **Witness 代幣** | 關於 Witness 主機 | 唯讀：簽名檢查點與系統狀態 | 請在「Witness」頁面中刪除該內容；並建立一個新的頁面 |
| **站外文案關鍵詞** | Vault；只需下載一次即可進行資料恢復 | 解密離線副本 | 凡持有儲存物件者皆可解密該物件：請將該副本視為已外洩 |

## 保護範圍涵蓋哪些內容

### 已涵蓋

- 若匯出紀錄中出現遭變更、刪除或重新排序的項目：雜湊鏈或簽名將無法通過驗證。
- 若日誌在檢查點之後被刪減或重建，且該檢查點已儲存於其他位置：則保留的檢查點將不再與當前日誌內容相符。
- 面板代幣猜測機制：256 位元隨機位元組，以恆定時間進行比對；若每分鐘失敗 15 次，該位址將被拒絕。
- 具敵意之聊天內容：文字以純文字形式插入，絕不以 HTML 格式呈現；附件將以檔案形式下載；該面板不會從其他網站載入任何內容。
- 一個包含外部金庫金鑰的複製資料目錄：若無主金鑰，會話與簽名金鑰將保持加密狀態。

### 交由您決定

- 主控制面板的代幣擁有完全控制權。可授予他人有限度的存取權限，使其僅能存取所需的帳戶、聊天室及操作；請務必將主金鑰保密。
- 該伺服器的管理員可讀取所有內容，並能重寫及重新簽署該日誌。請將指紋與檢查點儲存於另一套系統中。
- TgWitness 不會對訊息內容及媒體檔案進行加密。請使用磁碟加密並設定嚴格的存取權限。
- 若透過 localhost 以外的純 HTTP 連線，網路將暴露該存取憑證。請使用 HTTPS 或 SSH 隧道。
- 簽名用以證明所記錄的內容未被篡改，而非證明每個 Telegram 事件均已被記錄。

可透過權限設定、有效期限及會話限制，[分享案件存取權限](https://phishdestroy.github.io/TgWitness/zh-Hant/docs/access/)。證人代幣仍為獨立的憑證。

## 強化安裝安全性

已完成 0 / 8

1. **請使用專用的 Telegram 帳號**——切勿使用您的主要帳號。控制面板代幣與會話可讓您完全掌控該帳號。
2. **請將控制面板維持在 127.0.0.1。**僅可透過 HTTPS（內建的 Caddy 設定）或 SSH 隧道進行遠端存取。
3. 對存放資料目錄的磁碟進行加密：訊息內容與媒體檔案均以原始接收狀態儲存。
4. **將資料目錄限制**在服務帳戶內。在 Unix 系統上，新建立的目錄預設權限為 0700；在 Windows 系統上，請設定該資料夾的權限。
5. **請將金庫主金鑰存放於其他**伺服器上：在建立資料目錄之前，請先設定 `TGWITNESS_VAULT_KEY_FILE`。
6. **請將簽名金鑰的指紋和檢查點儲存**於另一套系統中，並在另一台主機上新增一名見證者。
7. **切勿將** `data/`、會話金鑰、`panel-token.txt` 或金庫金鑰**上傳**至 GitHub 或聊天室。
8. 請勿在反向代理伺服器上記錄 `Authorization` 標頭或請求正文。

**我可以在不丟失資料的情況下變更面板代幣嗎？**

是的。該代幣僅用於開啟控制面板。停止 TgWitness 運作，從資料目錄中刪除 `panel-token.txt`，然後重新啟動；日誌、會話及金鑰均保持不變。若設定為 `TGWITNESS_TOKEN`，則會使用環境變數值而非檔案內容。

**為何訊息在靜止狀態下未經加密？**

收集者必須讀取這些記錄，才能進行搜尋、比對版本及匯出。若僅在同一台機器上使用金鑰進行加密，對於能夠讀取該機器的人而言，幾乎起不到任何防護作用。磁碟加密能保護已停用或遭竊的磁碟；嚴格的權限設定則能保護正在運行的磁碟。

## 回報漏洞

請透過 GitHub 儲存庫中的**「安全性」→「回報漏洞」**功能進行回報。請包含版本資訊、影響範圍以及最簡化的重現步驟。切勿傳送憑證、帳戶目錄或真實證據檔案。若無法進行私下回報，請開啟一個問題，請求開設私人頻道，並避免在其中提及漏洞利用細節。
