コンテンツにスキップ
ニムチャットに戻る

知識ベース ボンネットの下で

プロトコルとイベント

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。
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

NIPNymchat がもたらすもの
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 であり、完全です。信頼できるクローズド コンポーネントはありません。