跳至內容
返回 Nymchat

知識庫 在引擎蓋下

協定和事件

Nymchat 實際上在網路上放置了什麼,對於任何反對它的人來說, 對其進行審核,或從另一個 Nostr 用戶端讀取事件。

事件種類

種類用於筆記
0個人資料元數據標準 Nostr 個人資料:名稱、圖片、橫幅、關於、 lud16.
5刪除請求NIP-09。
7反應NIP-25,附 ['k', originalKind] 標籤,以便針對正確的頻道類型提交反應。
13海豹NIP-17 訊息的中間層。
14私訊闢謠未簽名,也從未單獨出版。
1059禮品包裝NIP-59。實際上到達私人訊息和群組聊天的中繼。
1984報告NIP-56。
9734 / 9735Zap 請求和 Zap 收據NIP-57。
10030自訂表情符號包列表NIP-30。
20000Geohash 通道訊息短暫的,標記的 ['g', geohash].
23333命名頻道訊息短暫的,標記的 ['d', channel].
24420 / 24421公共打字指示器和已讀回執Nymchat 特定的,用於公共頻道。
25051 / 25052點對點訊號和文件傳輸狀態Nymchat 特定的。
30030自訂表情符號集NIP-30。
30078應用資料NIP-78。民意調查和加密設定同步。
69420私人閱讀收據和遞送狀態Nymchat 特有的,作為謠言放在禮品包裝中攜帶。一種單獨的類型 14 故意這樣做,因此其他 NIP-17 用戶端不會為每個收據呈現空白直接訊息。

Nymchat 實現的 NIP

Nymchat 提供了什麼
NIP-07使用瀏覽器擴充功能登入。
NIP-09刪除請求。
NIP-13工作證明。傳出消息至少被挖掘為 16 位元。
NIP-17私人直接訊息,以及群組聊天的基礎。
NIP-25反應。
NIP-30自訂表情符號。
NIP-40過期時間戳記-消失的訊息。
NIP-44版本化加密,用於密封、包裝和設定同步。
NIP-46遠端簽名—— bunker://.
NIP-56報告。
NIP-57電閃雷鳴。
NIP-59禮品包裝。
NIP-78任意應用程式資料。
NIP-98HTTP 驗證,用於託管端點。

密碼學

在哪裡什麼
身份和簽名具有 Schnorr 簽章 (BIP-340) 的 secp256k1,如 Nostr 指定的那樣。
私訊和群聊NIP-44 v2:secp256k1、HKDF-SHA256、ChaCha20 上的 ECDH 和 HMAC-SHA256 以及填充,以便密文長度不會洩露訊息長度。
藍牙網狀網路會話Noise XX — X25519、ChaCha20-Poly1305 (IETF)、Ed25519 用於公佈簽章、SHA-256 和 HMAC。
靜止時的身份AES-GCM-256。密鑰來自 PBKDF2-SHA256(密碼或 PIN 碼的 310,000 次迭代),或來自通過 HKDF-SHA256 的 WebAuthn PRF 輸出,用於密鑰或生物識別。
通話和文件傳輸WebRTC 自己的 DTLS-SRTP,透過 NIP-17 封裝的訊號進行協商。
隨機性整個平台 CSPRNG — 密鑰、隨機數字和禮品包裝時間戳抖動。

元資料保護

禮品包裝路徑中的兩個細節值得一提,因為它們是單獨的 NIP-59 來自“加密,但顯然是從你到他們”:

  • 每份包裝都有簽名 免洗鑰匙 僅針對該訊息產生的, 所以沒有兩個包裹共用一個寄件者。
  • 每一個包裹的 created_at隨機回溯最多兩個 小時 使用 CSPRNG,因此發送和接收時間無法對齊。

群組聊天添加旋轉短暫 接受者 上面的鍵——參見 群組加密的工作原理.

閱讀原始碼

加密原語位於 js/nym-crypto.jsjs/modules/key-vault.js 在網路應用程式中,並在 android-ios-app/lib/core/crypto/lib/services/mesh/noise/ 在 Flutter 應用程式中。這 儲存庫 是 AGPL-3.0 並且是完整的-沒有封閉的元件需要信任。