Lumaktaw sa nilalaman
Bumalik sa Nymchat

Batayan ng kaalaman Sa ilalim ng talukbong

Protocol at mga kaganapan

Kung ano talaga ang inilalagay ni Nymchat sa wire, para sa sinumang nagtatayo laban dito, pag-audit nito, o pagbabasa ng mga kaganapan mula sa isa pang kliyente ng Nostr.

Mga uri ng kaganapan

MabaitGinagamit para saMga Tala
0Metadata ng profileStandard Nostr profile: pangalan, larawan, banner, tungkol sa, lud16.
5Mga kahilingan sa pagtanggalNIP-09.
7Mga reaksyonNIP-25, na may isang ['k', originalKind] tag para maghain ng reaksyon laban sa tamang uri ng channel.
13selyoAng gitnang layer ng isang NIP-17 na mensahe.
14Alingawngaw ng pribadong mensaheHindi nilagdaan, at hindi kailanman nai-publish sa sarili nitong.
1059pambalot ng regaloNIP-59. Ano ang aktwal na umaabot sa isang relay para sa mga pribadong mensahe at panggrupong chat.
1984Pag-uulatNIP-56.
9734 / 9735Zap request at zap receiptNIP-57.
10030Mga listahan ng custom na emoji packNIP-30.
20000Mensahe ng channel ng GeohashEphemeral, naka-tag ['g', geohash].
23333Pinangalanang mensahe ng channelEphemeral, naka-tag ['d', channel].
24420 / 24421Mga tagapagpahiwatig ng pampublikong pag-type at mga nabasang resiboPartikular sa Nymchat, para sa mga pampublikong channel.
25051 / 25052Peer-to-peer signaling at katayuan ng paglilipat ng filePartikular sa Nymchat.
30030Mga custom na emoji setNIP-30.
30078Data ng aplikasyonNIP-78. Nagsi-sync ang mga botohan, at naka-encrypt na mga setting.
69420Pribadong read receipts at delivery statusPartikular sa Nymchat, dinadala bilang isang bulung-bulungan sa loob ng isang pambalot ng regalo. Isang hiwalay na uri mula sa 14 sadyang, kaya ang ibang mga kliyente ng NIP-17 ay hindi nagbibigay ng mga blangkong direktang mensahe para sa bawat resibo.

Ang mga NIP ay ipinapatupad ng Nymchat

NIPAno ang ibinibigay nito sa Nymchat
NIP-07Mag-login gamit ang isang extension ng browser.
NIP-09Mga kahilingan sa pagtanggal.
NIP-13Katibayan ng trabaho. Ang mga papalabas na mensahe ay mina sa hindi bababa sa 16 bits.
NIP-17Mga pribadong direktang mensahe, at ang batayan para sa mga panggrupong chat.
NIP-25Mga reaksyon.
NIP-30Custom na emoji.
NIP-40Mga timestamp ng pag-expire — nawawalang mga mensahe.
NIP-44Bersyon na pag-encrypt, ginagamit para sa mga seal, wrap at pag-sync ng mga setting.
NIP-46Remote signing — bunker://.
NIP-56Pag-uulat.
NIP-57Kumalat ang kidlat.
NIP-59Mga balot ng regalo.
NIP-78Arbitrary na data ng aplikasyon.
NIP-98HTTP auth, para sa mga naka-host na endpoint.

Cryptography

saanAno
Pagkakakilanlan at mga lagdasecp256k1 na may mga lagda ng Schnorr (BIP-340), gaya ng tinukoy ng Nostr.
Mga pribadong mensahe at panggrupong chatNIP-44 v2: ECDH sa secp256k1, HKDF-SHA256, ChaCha20 na may HMAC-SHA256, at padding upang hindi maabot ng haba ng ciphertext ang mensahe.
Mga session ng Bluetooth meshIngay XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 para sa pag-anunsyo ng mga lagda, SHA-256 at HMAC sa ilalim.
Pagkakakilanlan sa pamamahingaAES-GCM-256. Ang susi ay mula sa PBKDF2-SHA256 sa 310,000 na pag-ulit para sa isang password o PIN, o mula sa isang WebAuthn PRF na output sa pamamagitan ng HKDF-SHA256 para sa isang passkey o biometric.
Mga tawag at paglilipat ng fileAng sariling DTLS-SRTP ng WebRTC, nakipag-usap tungkol sa NIP-17-wrapped signalling.
pagiging randomAng platform CSPRNG sa kabuuan — mga key, nonces, at ang gift-wrap timestamp jitter.

Proteksyon ng metadata

Dalawang detalye sa landas ng pagbabalot ng regalo ay nagkakahalaga ng pagtawag, dahil sila ang hiwalay na NIP-59 mula sa "naka-encrypt, ngunit malinaw na mula sa iyo sa kanila":

  • Ang bawat balot ay nilagdaan ng a isang beses na susi nabuo para sa mensaheng iyon lamang, kaya walang dalawang balot na nagbabahagi ng isang nagpadala.
  • Bawat balot created_at ay random na na-backdate ng hanggang dalawa oras gamit ang CSPRNG, kaya ang mga oras ng pagpapadala at pagtanggap ay hindi maaaring ihanay.

Ang mga panggrupong chat ay nagdaragdag ng umiikot na ephemeral tatanggap mga susi sa ibabaw niyon — tingnan mo Paano gumagana ang pag-encrypt ng pangkat.

Binabasa ang pinagmulan

Ang crypto primitives ay nasa js/nym-crypto.js at js/modules/key-vault.js sa web app, at sa ilalim android-ios-app/lib/core/crypto/ at lib/services/mesh/noise/ sa Flutter app. Ang imbakan ay AGPL-3.0 at kumpleto — walang saradong bahagi na dapat tanggapin sa tiwala.