本篇文章更新時間:2026/02/27
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持 。
內容目錄
讀 TerminalPhone 專案:一支 Bash 腳本打造的極簡密語工具
編輯前言:這篇筆記源自我對匿名通訊工具的興趣,原文來自 GitLab 專案 Here ForAwhile / terminalphone。我一直以為安全語音通訊一定需要龐大的後端基礎設施,但這個專案完全顛覆了我的想像:一行行 Bash 就做到了完整的 Tor 隱藏服務通訊、語音壓縮與加密。
核心觀點
- TerminalPhone 是以 Tor 隱藏服務為基礎的匿名語音與文字通訊工具,不需要伺服器、不需要帳號,.onion 就是身份。
- 通訊採 錄完再傳 模式,透過 Opus 壓縮與 AES 或 ChaCha20 等強力加密完成傳輸。
- 整個系統僅靠 一支 Bash 腳本,透過 sox、openssl、socat、Tor 等工具組合出完整的 E2E 加密語音通訊鏈。
深入解析
TerminalPhone 給我的第一印象是「這不可能吧」。通常我們想到語音通訊,會覺得那是複雜的 RTP、WebRTC、伺服器協調、端對端連線,但這裡的做法極度簡潔:像對講機一樣,只在你錄完語音後一次性傳送。
原文強調:TerminalPhone 是一個 "Encrypted push-to-talk voice communication over Tor hidden services" 的實作。
這個理念讓它避開了即時串流的複雜性,也降低了在 Tor 上卡頓的風險。以下是我覺得最值得記住的兩個面向。
匿名性建基於 Tor:
- 每個使用者都有自己的 hidden service
- .onion 地址本身就是 ID
- 無需 IP、無需開埠、無需帳號
這讓 TerminalPhone 的「身份」與「通訊路徑」完全綁在 Tor 內部。更棒的是,它內建 Snowflake 支援,對於需要翻牆或面臨審查的使用者也能啟用 WebRTC 代理。
安全性設計的務實態度:
文章內建三層安全理念:
- 應用層加密(AES-256-CBC 為預設)
- PBKDF2 派生金鑰(1 萬次 iteration)
- 可選的 HMAC-SHA256 簽章避免重放攻擊
但作者同時誠實指出限制:沒有 forward secrecy,秘密金鑰一旦洩漏,所有訊息都會暴露。我欣賞這種透明而不炫技的態度。
筆者觀察
這不是語音通訊,而是一種「極簡、反分析的通訊哲學」
TerminalPhone 採取非連續傳輸的「錄完再送」模式,其實帶來了另一層安全性:傳輸模式本身難以流量分析。這對於使用 Tor 的應用來說是極大的優勢。
這專案提醒我,工具不必複雜才能可靠
它沒有花俏 UI、沒有巨量依賴,卻把:
- 匿名性
- 端對端加密
- 音訊處理
- 通訊握手與協商
全部以 Bash 與常見 CLI 工具優雅地串起來。這種極簡主義在資訊安全領域幾乎快要看不到了。
實際應用層面的建議
如果你真的想用 TerminalPhone,這里是我覺得必須注意的:
- 必須妥善保護 shared secret,它是整個安全性的根本。
- 若你需要抗攻擊能力,務必啟用 HMAC。
- 若你要與非技術用戶溝通,Termux 版本是相對簡單的切入點。
- 若要更高匿名性,可以搭配 ExcludeNodes 過濾特定國家。
總結來說,TerminalPhone 讓我重新感受到 Linux 工具鏈的生命力:有時候,安全通訊不一定需要複雜框架,一支 Bash 也做得到,而且非常漂亮。
