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, sarta pernah diterbitkeun sorangan.
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].
23333Pesen saluran ngarannaEphemeral, ditandaan ['d', channel].
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, sareng setelan énkripsi singkronisasi.
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.
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.
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.