知識庫 在引擎蓋下
協定和事件
Nymchat 實際上在網路上放置了什麼,對於任何反對它的人來說, 對其進行審核,或從另一個 Nostr 用戶端讀取事件。
為了方便起見,此頁面是機器翻譯的。英文原件為適用版本。
事件種類
| 種類 | 用於 | 筆記 |
|---|---|---|
0 | 個人資料元數據 | 標準 Nostr 個人資料:名稱、圖片、橫幅、關於、 lud16. |
5 | 刪除請求 | NIP-09。 |
7 | 反應 | NIP-25,附 ['k', originalKind] 標籤,以便針對正確的頻道類型提交反應。 |
13 | 海豹 | NIP-17 訊息的中間層。 |
14 | 私訊闢謠 | 未簽名,也從未單獨出版。 |
1059 | 禮品包裝 | NIP-59。實際上到達私人訊息和群組聊天的中繼。 |
1984 | 報告 | NIP-56。 |
9734 / 9735 | Zap 請求和 Zap 收據 | NIP-57。 |
10030 | 自訂表情符號包列表 | NIP-30。 |
20000 | Geohash 通道訊息 | 短暫的,標記的 ['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-98 | HTTP 驗證,用於託管端點。 |
密碼學
| 在哪裡 | 什麼 |
|---|---|
| 身份和簽名 | 具有 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.js 和
js/modules/key-vault.js 在網路應用程式中,並在
android-ios-app/lib/core/crypto/ 和
lib/services/mesh/noise/ 在 Flutter 應用程式中。這
儲存庫
是 AGPL-3.0 並且是完整的-沒有封閉的元件需要信任。