翻譯 + 在地脈絡:OpenArchive 如何協助記錄者保全證據(Tor Project blog 2026-05-18)
- Dominant language
- JavaScript
- Stars
- 47
- Forks
- 7
- Avg merge
- 2h 51m
- Merged PRs (30d)
- 288
Description
## 脈絡
補上「公民社會基礎設施」這條主題線。OpenArchive 的 Save app 結合 Tor、ProofMode、Internet Archive 與 DWeb(Veilid、Iroh)多重後端,是現場記錄者實務上的關鍵選擇;對 g0v、IORG、Doublethink Lab 等本地 NGO 與訊息戰研究社群同樣實用。
與站上既有內容串接:
- [`community/relay-on-campus.md`](../tree/main/docs/zh-TW/community/relay-on-campus.md)
- [`blog/posts/2026-onionoo-mcp-public.md`](../tree/main/docs/zh-TW/blog/posts/2026-onionoo-mcp-public.md)
- [`taiwan/whistleblower-law.md`](../tree/main/docs/zh-TW/taiwan/whistleblower-law.md)
來源觸發票:[toomore/anoni-net-ws#306](https://github.com/toomore/anoni-net-ws/issues/306)
## 來源
- 原文標題:Preserving evidence: How OpenArchive fosters accountability and media sovereignty
- 原文 URL:https://blog.torproject.org/preserving-evidence-openarchive-fosters-accountability-media-sovereignty/
- 原文發佈日期:2026-05-18
- 翻譯文章的 `date:` 設為實際撰寫當天
- 授權:Tor Project blog 預設 CC BY 3.0(撰稿時 verify)
## 三語檔案路徑
- zh-TW:`docs/zh-TW/blog/posts/2026-openarchive-preserving-evidence.md`
- zh-CN:`docs/zh-CN/blog/posts/2026-openarchive-preserving-evidence.md`
- en:`docs/en/blog/posts/2026-openarchive-preserving-evidence.md`
slug 從 articles-blog #306 建議值縮短,符合 `anoni-docs-style.md` 與 `sitemap.md` 的命名慣例(全小寫、連字號、年份+主題)。
## 內容重點
直接帶 articles-blog #306 Phase B 已 enriched 的內容。
**為什麼要翻譯:**
1. OpenArchive 是少數兼顧手機端易用性與去中心化存證的開源工具,Save app 結合 Tor、ProofMode、Internet Archive 等多重後端,是現場記錄者實務上的關鍵選擇
2. 文章首次完整介紹 DWeb P2P 後端使用 Veilid(加密 P2P 網路)與 Iroh(資料儲存與複製)兩個底層協定,是匿名與隱私網路新一代技術的具體應用案例
3. 「人權中心設計方法論」(human rights-centered design)的具體實踐流程,值得介紹給本地讀者
**台灣觀點**(en 版本要重寫進文章正文):
1. 台灣公民記者、社運紀錄者、香港流亡社群在台都有存證需求,Save app 的多重備份與抗審查特性可直接落地推廣
2. ProofMode 與 SHA256 雜湊存證機制與台灣司法上對「數位證據完整性」的要求(電子簽章法、刑事訴訟法電磁紀錄章節)有相通之處,可進一步探討本地適用性
3. Veilid 與 Iroh 等新一代 P2P 協定的中文資料極少,借這篇引介能為本地技術社群(HITCON、COSCUP、g0v)開啟討論
## 技術拆解
寫進譯稿時建議放在「DWeb P2P 後端」段落之後,當作給工程讀者的延伸閱讀小節。重點是說明 Save app 多數能力是把現有開源元件組起來,OpenArchive 自己新做的部分集中在 DWeb 後端的整合層,工程師要做類似系統時不必從零重寫。
### 1. 行動端 App(GPL-3.0)
- Android:[`OpenArchive/Save-app-android`](https://github.com/OpenArchive/Save-app-android)(Kotlin)
- iOS:[`OpenArchive/Save-app-ios`](https://github.com/OpenArchive/Save-app-ios)(Swift)
- 多語系翻譯走 Transifex 上的 OTF Localization Lab 工作坊
### 2. Tor 與加密傳輸(Apache-2.0)
Save 沒有自己包 Tor client,而是接 Guardian Project 的 [NetCipher](https://github.com/guardianproject/NetCipher)(Java / Apache-2.0)。NetCipher 負責把 Tor 的 SOCKS proxy 接到 Android 的 HTTP/HTTPS client,OkHttp、HttpURLConnection 都能套,是 Android 圈處理「app 強制走 Tor」的事實標準。要在自家 app 加 Tor 出口,從這個 library 起步比自己 fork tor-android 省事很多。
TLS 走系統內建 stack。
### 3. 內容真實性與 metadata(GPL-3.0)
[ProofMode](https://github.com/guardianproject/proofmode-android)(Guardian Project / Kotlin)在拍攝當下產生 SHA256 雜湊與包含時間、位置、感測器讀數的 metadata,並以裝置上的 PGP 私鑰簽章。Save app 直接整合 ProofMode 而非自己接,工程師如果要做「拍照即證據鏈」的功能,這是現成 library,不必重新處理 EXIF、雜湊與簽章流程。
### 4. 儲存後端(多選)
Save 內建三類上傳目的地,使用者可同時開多個達成多重備份:
- **Internet Archive**(archive.org):公開長期保存
- **Nextcloud**:對接任意 Nextcloud 實例,讓組織自架儲存
- **DWeb P2P Storage**(beta,內部代號 Raven):見下節
第三類是 OpenArchive 自己組合的新堆疊,前兩類完全是接既有服務的 REST/WebDAV API。
### 5. DWeb 後端的技術組成
[`OpenArchive/save-dweb-backend`](https://github.com/OpenArchive/save-dweb-backend) 是 Rust 寫的 daemon,透過 RPC 跟 Kotlin/Swift 端對接。底層協定都不是 OpenArchive 自己發明:
- **[Veilid](https://veilid.com/)**(Cult of the Dead Cow 主導,Rust)負責 peer discovery、私有 routing、公鑰加密。Veilid 提供類洋蔥路由的 private route,OpenArchive 把它當「匿名傳輸層」用,但官方文件明白標註「應視為實驗中、演化中的安全屬性,不等同保證的匿名層」。
- **[Iroh](https://www.iroh.computer/)**(n0/number0 維護,Rust)負責 blob 內容定址儲存與 hash 驗證,類似 IPFS 的 content-addressing 模型但實作更精簡。
- **`veilid_iroh_blobs`**:把 Iroh blob 傳輸塞進 Veilid route 的橋接層,不直接走 Iroh 預設的 peer 連線,目的是讓 blob 同步繼承 Veilid 的路由匿名性。
群組層的設計也用既有密碼學原語組起來:
- 群組身分用 Veilid DHT record,搭配 ED25519 keypair 與簽章 metadata
- 群組內共享 secret 用 ChaCha20-Poly1305 對稱加密
- 檔名與 hash 的對應表用 CBOR 編碼存進個人 repo
完整架構(含 mermaid 流程圖)見 [save-dweb-backend README](https://github.com/OpenArchive/save-dweb-backend#readme) 與 [Privacy Overview](https://hackmd.io/@s74XZjUBQDuPPS04AgPvow/HkacodHgyx)。
### 6. 給工程讀者的延伸路徑
想做類似系統時可以從這幾個切入點開始,多數情況不必從零重寫:
- 「mobile app 走 Tor + 多 backend 上傳」的整體模式:直接讀 Save-app-android 原始碼
- 拍攝端證據鏈:用 ProofMode,不必自己處理 EXIF、SHA256、PGP 簽章
- Android app 內掛 Tor:用 NetCipher,不必 fork tor-android
- P2P 儲存:save-dweb-backend 是 Veilid + Iroh 在真實 mobile 場景的少數開源實作範例
- 想理解「為什麼挑 Veilid 不挑 libp2p、為什麼挑 Iroh 不挑 IPFS」:看 OpenArchive 與 Hypha 合作的 [DWeb Mobile Archiving 白皮書](https://www.open-archive.org/news/oa-hypha-white-paper)
## 寫作風格
依 `anoni-net-docs/.claude/rules/anoni-docs-style.md`,特別注意:
- 不寫「不是…而是…」、不使用「——」、不使用「願景式」標題
- 不使用「meta 評語 + 冒號 + 揭曉」鋪墊句型
- 標題用事件型直述(避免比喻性副標如「這條路」)
- 受眾用詞用「正體中文使用者」而非「台灣使用者」(OpenArchive 對港澳流亡社群同樣有用,要把受眾打開)
依 `seo-checklist.md`:frontmatter 必有 `title`、`description`(80–160 字、含「對台灣讀者意義」線索)、`icon`。
依 `brand-identity.md`:cyan 主色,必要的 OG 圖規格 1200×630。
## 寫作流程
套用 skill:`.claude/skills/docs-translate-blog/SKILL.md`
1. zh-TW 完稿
2. 等使用者校稿
3. zh-CN(中國地區觀點)+ en(原文 + 三地觀點段落)
4. PR 進 `anoni-net/docs`、回報 articles-blog #306
## 完成後
- `cd anoni-net-docs/docs && mkdocs serve` 視覺確認三語版本
- 跑 `seo-checklist.md` 的上線前最終檢查清單
- PR 合併後在 articles-blog #306 留 comment 連到本 ticket,並在 articles-blog 端執行:
```
cd articles-blog && python -m articles_blog.cli mark-issue-created \
--config ./config.yaml \
--url "https://blog.torproject.org/preserving-evidence-openarchive-fosters-accountability-media-sovereignty/" \
--issue-number <本 ticket 編號>
```
- 發佈後依 `.claude/rules/sns-posting-conventions.md` 衍生 SNS 草稿:
- `./sns/2026-openarchive-preserving-evidence_linkedin.txt`
- `./sns/2026-openarchive-preserving-evidence_x.txt`
- `./sns/2026-openarchive-preserving-evidence_mastodon.txt`
- `./sns/2026-openarchive-preserving-evidence_bluesky.txt`
## 相關
- source ticket:[toomore/anoni-net-ws#306](https://github.com/toomore/anoni-net-ws/issues/306)
- 同主題參考稿:`docs/zh-TW/blog/posts/2026-onionoo-mcp-public.md`(Tor 工具引介格式)
- 同 categories 串接:「翻譯文章」分類下既有的 `2026-financial-companies-as-censors.md`
Contributor guide
Assessment
This issue has not been assessed yet.