Keet 是一款新穎又好用的聊天應用程式,讓你可以和朋友直接進行視訊或文字聊天。以下是它的幾個亮點:
超安全的聊天:透過端到端加密,只有你和朋友可以看到聊天內容,比 Line 更具隱私保障。
清晰不卡畫的視訊:Keet 的視訊通話品質非常好,因為它不用伺服器,直接連接你和朋友的設備。當然你也可以只使用語音通話。
快速傳大檔案:無論是高畫質照片還是影片,都可以輕鬆傳送,完全不壓縮畫質!
這些功能讓 Keet 很適合喜歡聊天、重視隱私或想用高品質視訊的你。
為什麼 Keet 比其他聊天 App 更安全?
一般聊天 App(例如 Line)大多使用伺服器來傳訊息(「伺服器 - 客戶端」(Server-Client)架構)。這意味著當你發送訊息時,訊息會先傳到伺服器(Server),然後再從伺服器傳送到你的朋友(Client)。這種方式看起來很方便,但也有一些風險:
- 伺服器可能被駭客入侵:伺服器被攻擊後,訊息可能被偷走。
- 隱私不安全:你的聊天記錄全都存在伺服器上,服務商或其他人可能會偷看或審查你的內容。
- 帳號可能被封鎖:伺服器可以隨時停用你的帳號,讓你無法再使用 App。
- 伺服器出問題就不能用:如果伺服器壞掉,所有人都會無法使用 App。
- 運營成本高:伺服器需要很多錢來維護,可能會讓 App 的服務收費或廣告變多。
Keet 採用的是點對點(Peer-to-Peer, P2P)架構。直接連接你和朋友的裝置,訊息完全不經過伺服器。這種設計有以下好處:
- 超高安全性:沒有伺服器,駭客就沒地方可以入侵。
- 完全保護隱私:訊息經過加密,除了你和朋友,誰也看不到。
- 帳號不會被封:因為沒有中央伺服器,沒人可以禁用你的帳號。
- 少出問題:沒有伺服器就不用擔心伺服器掛掉,全都靠你的設備和網路運行。
總結來說,Keet 的 P2P 架構讓它比使用伺服器 - 客戶端架構的聊天應用程式更安全,因為它減少了訊息被竊取、隱私被侵犯和帳號被禁用的風險。
P2P 架構的挑戰
雖然 P2P 聽起來很棒,但它使用在即時通訊(IM)中時,也有一些問題需要克服:
- 雙方要同時在線上:你和朋友必須同時上線才能聊天,跟現在的 App 不太一樣。
- 使用者識別:當使用者透過多個設備發送訊息時,難以確保這些訊息都屬於同一個使用者。
- 訊息可能延遲:如果網路不好,訊息可能傳得很慢,甚至傳不出去。
- 傳檔案比較麻煩:如果朋友沒上線,你發送的檔案就無法即時傳過去。
- 設備比較耗電:因為 P2P 要靠你的裝置處理訊息和檔案,可能會比較耗電和流量。
Keet 怎麼克服這些問題?
keet 的開發團隊 holepunch 很瞭解 P2P 架構的限制,因此結合了加密技術與 P2P,創造了一些厲害的技術來解決這些挑戰:
- 解決「不在線就不能用」的問題:Keet 使用了 Blind-paring 和 Blind-mirror 技術,訊息或檔案可以先加密存到其他節點,等朋友上線時再處理。
- 檔案可以一直存取:檔案會加密存放在某些節點,就算發送者離線,接收者還是可以下載。
- 多設備同步很簡單:Keet 讓用戶用一組助記詞創建身份(ID),可以讓多個裝置共享聊天紀錄,也能刪除或編輯自己發的訊息。
解決「不在線就不能用」的問題
讓我們來看看 Blind-paring 和 Blind Mirror 的概念。
Blind-paring
是一種透過加密技術來管理加入聊天室請求的方法。具體過程如下:
- 請求保存:當使用者 A 想要加入某個聊天室時,這個請求會被加密並保存到某個 peer 上。
- 管理者批准:當聊天室的管理者 B 上線時,可以對這個請求進行簽名批准。
- 使用者加入:當使用者 A 上線時,經過批准的請求會允許 A 加入聊天室。
這些請求雖然保存在某個 peer 上,但這個 peer 並沒有 A 或 B 的金鑰,因此無法解密查看具體的請求內容。
Blind Mirror
是 Blind-paring 的檔案版本。具體過程如下:
- 檔案保存:當使用者 A 傳送了一個檔案後,這個檔案會被加密並保存到某些 peer 上。
- 持續存取:即使使用者 A 離線了,這個檔案仍然能被其他人存取。
- 隱私保護:保存檔案的 peer 沒有解密的金鑰,因此無法查看檔案內容。
這兩種技術都利用了加密技術來保護使用者的隱私和數據安全,確保即使數據保存在其他 peer 上,也無法被未授權的使用者查看。
解決多設備同步問題
在 P2P 架構中,每個 peer(節點)都是平等的。當使用者透過多個設備發送訊息時,如何確保這些訊息都屬於同一個使用者,並讓使用者能夠編輯或刪除來自不同設備的訊息呢?
Keet 借鑑了加密貨幣的技術,加入了 ID(身份)的概念。具體來說,Keet 使用了 24 個助記詞來創建一個唯一的身份(ID)。這些助記詞就像是一組密碼,能夠幫助識別和驗證使用者。
- 身份識別:當使用者在不同設備上發送訊息時,這些設備都會使用相同的 ID 來確認身份。這樣,即使使用不同的設備,系統也能知道這些訊息來自同一個使用者。
- 訊息管理:使用者可以編輯或刪除來自不同設備的訊息,因為所有訊息都與同一個身份(ID)相關聯。
總結
雖然 P2P 聊天 App 一開始會讓人感覺有些不方便,但 Keet 的新技術已經讓它更穩定、更好用。如果你想試試看更私密又安全的聊天方式,不妨下載 Keet 試試看!
我還建立了一個叫 「Taiwan 🇹🇼 用 Keet 了」的群組,歡迎來一起討論: 👉 點這裡加入。
資訊公開:我目前負責 Keet Mobile 客戶端的開發,對架構設計有一些了解。Keet 使用的很多元件都是開源的,你可以在 https://github.com/holepunchto 查看,或看看我整理的 Awesome-pears,裡面有更多 P2P 應用程式喔!
對相關技術感興趣的朋友,也歡迎參考徵才訊息,歡迎 React Native 開發者加入。