Luncat ka eusi
Balik deui ka Nymchat

Dasar pangaweruh Handapeun tiung

Protokol jeung acara

Naon Nymchat sabenerna nempatkeun dina kawat, pikeun saha ngawangun ngalawan eta, auditing eta, atawa maca acara ti klien Nostr sejen.

Jenis acara

JenisDipaké pikeunCatetan
0Metadata profilProfil Nostr standar: ngaran, gambar, spanduk, ngeunaan, lud16.
5Paménta ngahapusNIP-09.
7RéaksiNIP-25, kalawan a ['k', originalKind] tag jadi réaksi ieu Filed ngalawan tipe channel katuhu.
13SegelLapisan tengah pesen NIP-17.
14Rumor pesen pribadiUnsigned, jeung teu pernah diterbitkeun sorangan. A thread reply ngabalukarkeun a ['nymthread', rootId] tag dina rumor disadiakeun, referencing id pesan dibagikeun root.
1059Bungkus kadoNIP-59. Naon anu sabenerna ngahontal relay pikeun pesen pribadi sareng obrolan grup.
1984NgalaporkeunNIP-56.
9734 / 9735Paménta Zap sareng resi zapNIP-57.
10030Daptar bungkus emoji khususNIP-30.
20000Pesen saluran GeohashEphemeral, ditandaan ['g', geohash]A thread reply nambahkeun hiji NIP-10 ditandatanganan ['e', rootId, '', 'root'] Ieu téh.
23333Pesen saluran ngarannaEphemeral, ditandaan ['d', channel]A thread reply nambahkeun hiji NIP-10 ditandatanganan ['e', rootId, '', 'root'] Ieu téh.
24420 / 24421Indikator ketikan umum sareng kuitansi bacaNymchat-spésifik, pikeun saluran umum.
25051 / 25052Sinyal peer-to-peer sareng status transfer fileNymchat-spésifik.
30030set emoji customNIP-30.
30078Data aplikasiNIP-78. Polling, singkronisasi setélan énkripsi, sareng pengumuman konci pos-kuantum (tagged nym-pq, mawa konci publik ML-KEM-768 kalayan béakna NIP-40).
69420Kuitansi dibaca pribadi sareng status pangirimanNymchat-spésifik, dibawa salaku gosip jero bungkus kado. Hiji jenis misah ti 14 ngahaja, jadi klien NIP-17 séjén teu ngajadikeun pesen langsung kosong pikeun unggal resi.

NIPs Nymchat implements

NIPNaon méré Nymchat
NIP-07Login nganggo ekstensi browser.
NIP-09Paménta ngahapus.
Ngeunaan 10Merekkeun tag respon – kumaha kanael thread respon titik kana pesan root na.
NIP-13Buktina gawé. Pesen kaluar ditambang sahenteuna 16 bit.
NIP-17Pesen langsung pribadi, sareng dasar pikeun obrolan grup.
NIP-25Réaksi.
NIP-30Emoji custom.
NIP-40Cap waktu kadaluwarsa - pesen leungit.
NIP-44enkripsi Versioned, dipaké pikeun anjing laut, wraps tur setelan singkronisasi.
NIP-46Penandatanganan jauh - bunker://.
NIP-56Ngalaporkeun.
NIP-57Petir nyecep.
NIP-59Bungkus kado.
NIP-78Data aplikasi wenang.
NIP-98HTTP auth, pikeun titik tungtung hosted.

Kriptografi

dimanaNaon
Idéntitas jeung tanda tangansecp256k1 kalawan tanda tangan Schnorr (BIP-340), sakumaha Nostr nangtukeun.
Talatah pribadi sareng obrolan grupNIP-44 v2: ECDH on secp256k1, HKDF-SHA256, ChaCha20 kalawan HMAC-SHA256, sarta padding jadi panjangna ciphertext teu masihan panjang pesen jauh.
Pesen pribadi sareng obrolan grup, antara pangguna NymchatThe sarua NIP-44 v2 payload, unmodified, ditutup dua kali di jero ChaCha20-Poly1305 keyed ti ML-KEM-768 (FIPS 203) encapsulation ngaliwatan HKDF-SHA256. pq2. Prefix jadi pembaca nyokot jalur ku inspecting payload. Dua lapisan kudu dipigawé pikeun recover hiji pesan. tingali énkripsi tahan kuantum.
sesi bolong BluetoothNoise XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 pikeun tanda tangan ngumumkeun, SHA-256 sareng HMAC di handapeun.
Idéntitas dina sésanaAES-GCM-256. Koncina asalna tina PBKDF2-SHA256 di 310.000 iterations pikeun sandi atawa PIN, atawa ti kaluaran WebAuthn PRF ngaliwatan HKDF-SHA256 pikeun passkey atanapi biometric.
Telepon sareng transfer fileDTLS-SRTP WebRTC sorangan, disawalakeun pikeun sinyal NIP-17-dibungkus.
RandomnessPlatform CSPRNG sapanjang - konci, nonces, sareng jitter timestamp bungkus kado.

Perlindungan metadata

Dua rinci dina jalur kado-bungkus patut nelepon kaluar, sabab éta naon misahkeun NIP-59 tina "énkripsi, tapi écés ti anjeun ka aranjeunna":

  • Unggal bungkus ditandatanganan ku a konci hiji-waktos dihasilkeun pikeun pesen éta waé, jadi euweuh dua bungkus babagi pangirim.
  • Unggal bungkus created_at nyaeta acak backdated ku nepi ka dua jam ngagunakeun CSPRNG, jadi ngirim jeung nampa kali teu bisa dijejeran up.

Obrolan grup nambahan puteran ephemeral panarima konci dina luhureun éta - tingali Kumaha énkripsi grup jalan.

Maca sumberna

Primitif crypto aya dina js/nym-crypto.js jeung js/modules/key-vault.js dina aplikasi wéb, sareng di handapeun android-ios-app/lib/core/crypto/ jeung lib/services/mesh/noise/ dina aplikasi Flutter. The gudang nyaeta AGPL-3.0 tur lengkep - euweuh komponén katutup nyandak kana kapercayaan.