跳至內容
返回 Nymchat

知識庫 關閉網路

藍牙網狀網絡

無需網路、手機服務和任何基礎設施即可發送訊息 善良。附近的設備透過藍牙 LE 進行連結並相互中繼,以便訊息到達 人們透過在無線電範圍之間跳躍來超越無線電範圍。

網格是什麼

網格是與中繼一起運行的第二個傳輸,而不是單獨的應用程式或單獨的 身份。公共頻道和私人訊息都可以處理它,應用程式決定哪個 自行採取的路線:線上發送透過網路進行,並在以下情況下回退到藍牙 它不可用,而只能透過無線電到達的對等點無論如何都留在網格上。

這是一個泛洪網路。每個設備將封包轉發給它能接收到的設備,並設有跳數限制: 7,對已見過的內容進行去重,以防止封包永無止境地循環。即使兩個人無法直接聽到彼此,只要他們之間有一連串的設備,仍能交換訊息。

在此基礎上,每對同伴都運行一個 噪音XX 握手並討論其 自己的加密會話。資料包被填充,當資料包很大時,資料包會被碎片化,所以資料包的大小 您發送的內容盡可能少地說明它是什麼。

洪水只會波及到當時正在傾聽的人,因此有三件事能讓訊息 超越那點:裝置 記住近期的公共歷史 並將它 傳給任何錯過的人, 附近的同儕攜帶著密封郵件 對於超出 範圍的人,且任何在沒有網路的情況下發送的內容都是 稍後發佈 當網路恢復時。

打開它

開啟藍牙網狀網路面板並按 打開。接下來會發生什麼取決於 你正在運行它。

Nymchat 藍牙網格面板,顯示網格狀態、配對裝置、網格上的對等點和無線電日誌。
網格面板:狀態、配對設備、聽到的對等點和即時無線電日誌。

在 Android 和 iOS 上

該應用程式同時運行兩個藍牙角色——為自己做廣告並掃描其他人 - 因此任何兩個附近的設備都會連接起來,無論其中一個設備注意到另一個設備。格蘭特 當詢問藍牙權限時,它會自行找到對等點。

在瀏覽器中

Web 應用程式透過 Web 藍牙在 Chromium 瀏覽器上加入相同網格:Chrome、Edge、 歌劇和勇敢。在不實作網頁藍牙的 Safari 和 Firefox 上,mesh 控制項完全隱藏而不是提供,然後失敗。

瀏覽器以葉子加入

瀏覽器只能帶藍牙 中央 作用:它不能為自己做廣告,所以 其他設備無法發現它。它向外連接到附近的電話並透過 他們。您可以透過瀏覽器自己的裝置選擇器選擇每個裝置一次,然後 自行重新連線。兩個瀏覽器無法直接相互連結。

與 Bitchat 共享網格

Nymchat 實現 Bitchat的 網路上的網狀協議,逐字節 — 相同的 GATT 服務和特徵 UUID、相同的封包標頭、相同的訊息類型、相同的預設躍點限制。兩人 應用程式不會透過任何東西橋接;它們只是在同一個網格上,並且是一個 Nymchat 設備 Bitchat 裝置發現對方並直接交換加密訊息。

通告資料包還可以攜帶 nostrLink:從網格對等點到的簽名鏈接 他們真正的Nostr身份。當有人在場並進行驗證時,您透過藍牙認識的同伴 顯示為您在中繼中認識的同一個人。

下文所述的歷史對帳與攜帶郵件也是 Bitchat 的格式,因此 這兩個應用程式不僅在同一個網狀網路中並存 —— 它們還會同步彼此的公開 歷史並攜帶彼此的信封。

網格所承載的歷史

洪水會向當時在無線電範圍內的所有人發送公共訊息。如果晚了一分鐘進房,訊息就消失了。因此,每個裝置都會保留一段近期所收到的公共訊息視窗 —— 最多可達 6小時,上限為 1,000 個封包 — 並與遇到的每個對等節點對齊該視窗,大約每 15 秒. 你所缺少的一切,他們都會寄給你;他們所缺少的一切,你也會寄給他們。

比較是透過一個緊湊的機率集合(Golomb 編碼過濾器)完成的,因此 調和一千條訊息的成本大約只需一千位元組,而非十六位元組。 這與 Bitchat 使用的格式相同,因此兩個應用程式會同步彼此的歷史紀錄, 而不是各別持有房間的一半紀錄。

視窗儲存在裝置上,因此在重啟後仍會保留。這讓手機能扮演城鎮傳令官的角色:在兩群從未進入彼此通訊範圍的人群之間穿梭,或是數小時後再回來,它便能遞交另一方遺漏的資訊。

僅限公開訊息

只有公開流量才會以此方式傳輸 —— 即任何在無線電範圍內的人都能看到的訊息。私密訊息、握手程序與加密會話絕不會包含在內。

由他人攜帶的郵件

如果你寫信給一個不在無線電範圍內的人,就沒有人可以遞交訊息。 Nymchat 會將其加密至該人的金鑰,並將加密副本交給幾位會... 在附近。他們攜帶著它,如果遇到收件人就會將其送達。

這份副本對任何攜帶它的人來說都是不透明的。它所持有的唯一路由資訊是一個標籤,而該標籤... 每日輪替 而且只能由已經知道 收件人密鑰的人計算,因此在不同日期寄給同一個人的兩個信封在其他人看來並不相關。 只有收件人能打開其中一個——而當他們打開時,他們會知道是誰 寫的,因為寄件人的身份被封存在裡面。

副本不會倍增。每位傳送者持有的額度在將一份份額轉交給他人時會減半,因此訊息僅會傳播給少數幾位傳送者,隨即停止。郵件會在...後過期。 24 小時,且只有身分經過驗證的同儕才可能獲得任何。

在可以的地方,Nymchat 會將信封封口至 a 免洗鑰匙 而不是發送給 收件人長期的金鑰。每台設備都會發布一小批這些金鑰,並經過簽署以確保 無法偽造,且這批金鑰的傳輸方式與歷史記錄的攜帶方式相同 —— 這正是 讓它在所有者不在時仍能保持可用性的原因,恰好是在郵件被遞送的時候。 收件人在使用完每個金鑰後都會將其刪除。這種刪除機制才是關鍵:一個 從空中截取的信封在之後無法被開啟,即使是後來取得了收件人身分金鑰的人也一樣。

刪除等待大約 48 小時,因為可能有數個載體持有相同的信封副本,且它們會在各自的載體與你碰面時送達; 如果在第一份副本上刪除,會使隨後的所有副本看起來都像是遺失郵件。當寄件者 從未見過你的批次(Batch)——即你尚未共享過房間的設備——時,他們會 回退到你的長效金鑰(Long-lived key)。訊息仍會送達;只是缺少了那個更強的保證。

承運商所學到的東西

遞給某人一個信封,是在告訴他們存在著一段訊息,且是你所發送的。 從不透露內容,也從不透露收件人 —— 僅僅是傳達這個事實。 如果你不想進行這種交易,Ghost Mode 則完全不使用快遞員(見下文)。

在沒有網路的情況下發送

您在離線時發送的訊息會立即透過無線電傳送,並傳達給附近的人——除此之外沒有其他人能收到,因為就轉送站而言,這條訊息從未存在過。 Nymchat 會保留它,並在網路恢復的那一刻立即發佈,同時保留原始發送時間,使其留在您在對話中撰寫的位置。

任何已經透過藍牙收到的人都不會看到第二次:重新發佈的副本 帶有一個標記,讓他們的裝置能夠辨識它。暫存訊息會在之後過期 24 小時; 若未能成功發送,則會被標記為失敗,而不是維持在 已送出狀態。

然而,它並不只是等待。與此同時,Nymchat 會詢問附近仍有訊號的同儕,請他們代表自己發布訊息 —— 房間內只要有一個連線就足以讓所有人接收。訊息在發出前會由您的裝置簽署,因此承載它的同儕僅僅是一個郵筒:它無法更改所發布內容的任何一個字,若有嘗試,中繼節點也會予以拒絕。這種機制同樣適用於反向操作,因此即便裝置本身沒有訊號,仍然可以 閱讀 透過一個已有通道的鄰居來建立通道。

這是一個捷徑,絕非唯一的副本。沒有任何機制能告訴您的裝置鄰近節點是否真的成功發佈,因此無論如何,訊息都會在您的連線中保持排隊狀態。 如果兩者都成功,這兩個副本將是位元組完全相同的訊息,且轉發器會保留其中一個。 只有頻道訊息會以此方式傳輸 —— 要求某人發送私人訊息會洩露您的寫信對象 —— 而且絕不會在「幽靈模式」(Ghost Mode) 下使用,因為在那種模式下,簽章會直接指向您的真實身份。

幽靈模式

網狀設備是一種可以重複播報自身資訊的無線電,這正是它變得簡單的原因 跨地點和會話進行追蹤。幽靈模式是選擇加入的答案。

當它開啟時, 每一個 公告攜帶的標識符被一次替換 值,並且它們全部一起旋轉:

  • 雜訊靜態金鑰 — 對等 ID 和指紋從中派生;
  • Ed25519 簽署金鑰;
  • 廣告中的藍牙名稱;
  • 暱稱;
  • 宣告的 nostrLink,它保持真實但變得短暫,因此同行仍然可以 沒有任何問題可以解決您的 npub 問題。

旋轉發生在大約 15分鐘。退休身分 保持可解密狀態長達 8個紀元 所以遲到的答覆仍然到達,並且 對話開始時,幽靈被永久固定在網格上,而不是默默地 遷移到您真實密鑰下的中繼。

當幽靈模式處於活動狀態時,頭像和橫幅共享被拒絕:重複的圖像連結兩個 紀元在一起的速度比任何密鑰都快。

上述兩個傳遞路徑也因此被關閉,原因相同。一個幽靈化(ghosted)的設備絕不會要求任何人為其攜帶郵件——如果你進行了輪換,而快遞員仍持有信封,這就是兩個身份之間的連繫。而釘在網狀網絡(mesh)上的對話絕不會重新發佈到中繼器(relays),因為該副本會使用你的真實密鑰簽署,並準確地告訴對方那個幽靈究竟是誰。幽靈化的設備也不會發佈一次性密鑰:反正沒有任何東西可以被攜帶到它那裡或從它那裡帶走,因此該批次只會成為拋棄式身份在無法獲得任何傳遞的情況下所發佈的又一件東西。

幽靈模式不是匿名的

它使設備更難追蹤。它不會使其變得不可追蹤。藍牙 硬體位址由作業系統控制,而不是由應用程式控制,並且定時和 社交模式保持相關性-同一個人,在同一地點,與同一個人交談 相同的人,相同的時間。

限制

  • 範圍是藍牙範圍。 在開闊空間可達數十公尺,穿牆距離則較短。Mesh 是透過跳轉而非加大功率來延伸覆蓋範圍。Mesh 面板中的節點列表會告訴您具體情況:Ping 一個節點,它會回報往返時間以及該節點實際上距離多少跳。
  • 頻寬較小。 幀的上限為 512 位元組和更大的訊息 是支離破碎的。它是為文本而不是媒體而構建的。
  • 交付是盡力而為。 一次 7 跳的洪水不作任何承諾, 延伸它的路徑亦然:被承載的歷史唯有當你遇到一個 保存它的裝置時才會抵達你手中,而信使只有在碰巧遇到收件人時才會送達。 沒有人承載的消息會持續等待,而在 24 小時後,它便不再等待。
  • 瀏覽器是葉子,如上所述,並取決於附近的電話。
  • 收音機消耗電池,因為掃描和廣告不斷 是網格發揮作用的原因。