知識ベース ボンネットの下で
プロトコルとイベント
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 | ザップリクエストとザップ受信 | 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
| 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 認証。 |
暗号化
| どこ | 何 |
|---|---|
| アイデンティティと署名 | Nostr が指定するように、Schnorr 署名 (BIP-340) を持つ secp256k1。 |
| プライベートメッセージとグループチャット | NIP-44 v2: secp256k1 の ECDH、HKDF-SHA256、HMAC-SHA256 を使用した ChaCha20、およびパディングにより、暗号文の長さによってメッセージの長さが変わることはありません。 |
| Bluetooth メッシュセッション | ノイズ XX — X25519、ChaCha20-Poly1305 (IETF)、アナウンス署名用の Ed25519、その下の SHA-256 および HMAC。 |
| 安静時のアイデンティティ | AES-GCM-256。キーは、パスワードまたは PIN の場合は 310,000 回の反復で PBKDF2-SHA256 から取得され、パスキーまたは生体認証の場合は HKDF-SHA256 を介した WebAuthn PRF 出力から取得されます。 |
| 通話とファイル転送 | WebRTC 独自の DTLS-SRTP。NIP-17 でラップされたシグナリングを介してネゴシエートされます。 |
| ランダム性 | プラットフォーム全体にわたる CSPRNG (キー、ノンス、ギフトラップのタイムスタンプ ジッター)。 |
メタデータの保護
ギフト包装パスの 2 つの詳細は、NIP-59 を区別するものであるため、注目する価値があります。 「暗号化されていますが、明らかにあなたから彼らへ」から:
- すべてのラップには署名が付いています ワンタイムキー そのメッセージのみに対して生成される、 したがって、2 つのラップが送信者を共有することはありません。
- あらゆるラップの
created_atは ランダムに最大 2 つまで遡ります 時間 CSPRNG を使用しているため、送信時間と受信時間を一致させることはできません。
グループチャットにローテーションエフェメラルを追加 受信者 その上にキーがあります — を参照してください グループ暗号化の仕組み.
ソースを読む
暗号プリミティブは次のとおりです js/nym-crypto.js そして
js/modules/key-vault.js Web アプリ内および以下
android-ios-app/lib/core/crypto/ そして
lib/services/mesh/noise/ Flutterアプリで。の
リポジトリ
AGPL-3.0 であり、完全です。信頼できるクローズド コンポーネントはありません。