Skip to di tin dɛn we de insay
Bak na Nymchat

Di tin dɛn we pɔsin fɔ no bɔt Ɔnda di hud

Protokɔlɔ ɛn di tin dɛn we apin

Wetin Nymchat rili put pan di waya, fɔ ɛnibɔdi we de bil agens am, ɔditin am, ɔ rid ivintɛns frɔm ɔda Nostr klaynt.

Ivent kayn dɛn

KaynYuz fɔNotis dɛn
0Profayl mɛtadataStandard Nostr profayl: nem, pikchɔ, baner, bɔt, lud16.
5Dilishɔn rikwest dɛnNIP-09 we dɛn kɔl.
7Di we aw pipul dɛn kin bievNIP-25, wit wan ['k', originalKind] tag so wan riakshɔn de fayl agens di rayt chanɛl tayp.
13StampDi midul layt fɔ wan NIP-17 mɛsej.
14Prayvet mɛsej rɔmɔrNɔ sayn, ɛn nɔ ɛva pablish fɔ insɛf.
1059Gift wrap we dɛn kin rapNIP-59 we dɛn kɔl. Wetin rili rich wan rilay fɔ prayvet mɛsej ɛn grup chat.
1984Fɔ ripɔtNIP-56 we dɛn kɔl.
9734 / 9735Zap rikwest ɛn zap risitNIP-57 we dɛn kɔl.
10030Kastom emoji pak list dɛnNIP-30 we dɛn kɔl.
20000Geohash chanɛl mɛsejEphemeral, we dɛn dɔn tag ['g', geohash].
23333Nem chanɛl mɛsejEphemeral, we dɛn dɔn tag ['d', channel].
24420 / 24421Pɔblik tayp indikɛtɔ ɛn rid risitNymchat-spɛsifi k, fɔ pɔblik chanɛl dɛn.
25051 / 25052Pia-to-pia signal ɛn fayl-transfa stetɔsNymchat-spɛsifi k.
30030Kastom imɔji sɛt dɛnNIP-30 we dɛn kɔl.
30078Aplikeshɔn dataNIP-78 we dɛn kɔl. Poll, ɛn ɛnkript sɛtin dɛn de sink.
69420Prayvet rid risit ɛn dilivri stetɔsNymchat-spɛsifi k, we dɛn kin kɛr as rɔmɔr insay gift wrap. Wan sɛpret kayn frɔm 14 bay wilful, so ɔda NIP-17 klaynt dɛn nɔ de rɛnd blank dairekt mɛsej fɔ ɛvri risit.

NIPs Nymchat de impliment

NIP we dɛn kɔlWetin i de gi Nymchat
NIP-07 we dɛn kɔlLogin wit wan brɔwza ɛkstenshɔn.
NIP-09 we dɛn kɔlDilishɔn rikwest dɛn.
NIP-13 we dɛn kɔlPruf fɔ se yu dɔn wok. Mesej dɛn we de kɔmɔt, dɛn kin mayn to at le 16 bit.
NIP-17 we dɛn kɔlPrayvet dairekt mɛsej, ɛn di bɛnifit fɔ grup chat.
NIP-25 we dɛn kɔlDi we aw pipul dɛn kin biev.
NIP-30 we dɛn kɔlKastom emoji.
NIP-40 we dɛn kɔlExpiration timestamps — mɛsej dɛn we de lɔs.
NIP-44 we dɛn kɔlVersioned encryption, we dɛn kin yuz fɔ sil, rap ɛn sɛtin dɛn we dɛn kin sink.
NIP-46 we dɛn kɔlRimot sayn — . bunker://.
NIP-56 we dɛn kɔlFɔ ripɔt.
NIP-57 we dɛn kɔlLaytnin de zap.
NIP-59 we dɛn kɔlGift we dɛn kin rap.
NIP-78 we dɛn kɔlData we dɛn kin yuz fɔ aplikeshɔn we dɛn nɔ want.
NIP-98 we dɛn kɔlHTTP auth, fɔ di ɛndpɔynt dɛn we dɛn dɔn ɔs.

Kriptografi we dɛn kin yuz

UsayWetin
Aydentiti ɛn sayn dɛnsecp256k1 wit Schnorr signature (BIP-340), as Nostr spɛsifa.
Prayvet mɛsej ɛn grup chatNIP-44 v2: ECDH pan secp256k1, HKDF-SHA256, ChaCha20 wit HMAC-SHA256, ɛn pad so sayfatɛks lɔng nɔ de gi di mɛsej lɔng away.
Bluetooth mesh seshɔn dɛnNoys XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 fɔ anɔys sayn, SHA-256 ɛn HMAC ɔnda.
Aydentiti we yu de rɛstAES-GCM-256 we de na di wɔl. Di ki kɔmɔt frɔm PBKDF2-SHA256 na 310,000 itɛreshɔn fɔ paswɔd ɔ PIN, ɔ frɔm WebAuthn PRF autput tru HKDF-SHA256 fɔ paski ɔ bayometrik.
Kɔl ɛn fayl transfaWebRTC in yon DTLS-SRTP, we dɛn negoshiet oba NIP-17-rap signal.
Na random tin we pɔsin kin duDi pletfɔm CSPRNG ɔlsay — ki, nonces, ɛn di gift-wrap tɛmstamp jitter.

Metadata protɛkshɔn

Tu ditel dem fo di gift-wrap path na im fit kol out, bikos na dem separet NIP-59 frɔm "ɛnkript, bɔt i klia se frɔm yu to dɛn":

  • Ɛvri wrap gɛt sayn wit a wan tɛm ki we dɛn mek fɔ da mɛsej de nɔmɔ, . so no tu wrap nɔ de sheb wan pɔsin we de sɛn.
  • Everi wrap's created_at na randomly bakdɛt bay te to tu awa dɛn yuz di CSPRNG, so dɛn nɔ go ebul fɔ layn di tɛm fɔ sɛn ɛn gɛt.

Grup chat ad rotating ephemeral di pɔsin we de gɛt am ki dɛn pan tap dat — si Aw grup ɛnkripshɔn de wok.

We yu de rid di say we dɛn pul am

Di kripto primitiv dɛn de insay js/nym-crypto.js ɛn js/modules/key-vault.js insay di wɛb ap, ɛn ɔnda android-ios-app/lib/core/crypto/ ɛn lib/services/mesh/noise/ insay di Flutter ap. Di di say usay dɛn de kip tin dɛn na AGPL-3.0 ɛn kɔmplit — nɔ klos kɔmpɔnɛnt nɔ de fɔ tek pan trɔst.