Huruw kɔ emu nsɛm no so
San kɔ Nymchat so

Nimdeɛ a wɔde gyina so Wɔ hood no ase

Protocol ne nsɛm a esisi

Nea Nymchat de to waya no so ankasa, ma obiara a ɔresi atia no, . auditing it, anaasɛ akenkan nsɛm a esisi fi Nostr client foforo hɔ.

Nsɛm a esisi ahorow

AyamyeWɔde di dwuma maNsɛm a Wɔahyɛ no Nsow
0Profile metadata a ɛwɔ nipadua no muStandard Nostr profile: din, mfonini, frankaa, fa, . lud16.
5Deletion abisade ahorowNIP-09 na ɛwɔ hɔ.
7Nneyɛe a wɔyɛNIP-25, a ɛwɔ a ['k', originalKind] tag enti wɔde reaction bi fael tia channel type a ɛfata.
13NsɔanoNIP-17 nkrasɛm bi mfinimfini fã.
14Kokoam nkrasɛm ho nsɛmmɔnediWamminyin, na wɔannante no ne ne ho nkoaa. Nsɛm a wɔde bɔ mmoa wɔ ntentan no mu kura... ['nymthread', rootId] nkyerɛɛ wɔ asɛm a wɔasere no mu, a ɛkyerɛ asɛm id a akorafoɔ no apira no.
1059Akyɛde a wɔde kyekyereNIP-59 na ɛwɔ hɔ. Nea ɛkɔ relay bi so ankasa ma kokoam nkrasɛm ne kuw nkɔmmɔbɔ.
1984Amanneɛbɔ a wɔde maNIP-56 na ɛwɔ hɔ.
9734 / 9735Zap abisade ne zap agyedeNIP-57 na ɛwɔ hɔ.
10030Amanneɛbɔ emoji pack listsNIP-30 na ɛwɔ hɔ.
20000Geohash channel nkrasɛmEphemeral, a wɔde ahyɛnsode ahyɛ mu ['g', geohash]. Asɛm ntentan mu mmuaeɛ de NIP-10 a wɔahyɛ no hyɛ mu ['e', rootId, '', 'root'] nkyerɛkyerɛmu.
23333Wɔato din channel nkrasɛmEphemeral, a wɔde ahyɛnsode ahyɛ mu ['d', channel]. Asɛm ntentan mu mmuaeɛ de NIP-10 a wɔahyɛ no hyɛ mu ['e', rootId, '', 'root'] nkyerɛkyerɛmu.
24420 / 24421Public type indicators ne akenkan nkrataa a wɔde gye sikaNymchat-specific, ma ɔmanfoɔ akwan.
25051 / 25052Peer-to-peer sɛnkyerɛnne ne fael-transfer tebeaNymchat-a ɛfa ho pɔtee.
30030Amanneɛbɔ emoji nhyehyɛe ahorowNIP-30 na ɛwɔ hɔ.
30078Application data a wɔde di dwumaNIP-78 na ɛwɔ hɔ. Polls, encrypted nhyehyɛe sync, ne post-quantum key dawurubɔ (tagged nym-pq, a ɛkura ML-KEM-768 ɔmanfo safe a NIP-40 bere atwam).
69420Private read receipts ne delivery tebeaNymchat-specific, a wɔde soa sɛ asɛm a wɔka wɔ akyɛde a wɔde kyekyere ho mu. A separate type from 14 wɔahyɛ da, enti NIP-17 afɛfo afoforo nkyerɛ nkrasɛm tẽẽ a ɛda hɔ kwa mma krataa biara a wogye.

NIPs Nymchat de di dwuma

NIPNea ɛma Nymchat
NIP-07 na ɛwɔ hɔFa browser ntrɛwmu kɔ mu.
NIP-09 na ɛwɔ hɔDeletion abisade ahorow.
NIP-10Adanseɛ a wɔahyɛ mbuamu — sɛnea mbuamu wɔ kanal mu kɔtɔ ne mbuamu a ɛdi kan no.
NIP-13 na ɛwɔ hɔAdanse a ɛkyerɛ sɛ woayɛ adwuma. Anyɛ yiye koraa no, wɔtu nkrasɛm a efi adi no kɔ bit 16 so.
NIP-17 na ɛwɔ hɔPrivate direct messages, ne nea wogyina so yɛ kuw nkɔmmɔbɔ.
NIP-25 na ɛwɔ hɔNneyɛe a wɔyɛ.
NIP-30 na ɛwɔ hɔAmanneɛbɔ emoji.
NIP-40 na ɛwɔ hɔExpiration timestamps — nkrasɛm a ɛyera.
NIP-44 na ɛwɔ hɔVersioned encryption, a wɔde di dwuma ma seals, wraps ne nhyehyɛe sync.
NIP-46 na ɛwɔ hɔAkyirikyiri nsaano nkyerɛwee — . bunker://.
NIP-56 na ɛwɔ hɔAmanneɛbɔ a wɔde ma.
NIP-57 na ɛwɔ hɔAprannaa a ɛyɛ zaps.
NIP-59 na ɛwɔ hɔAkyɛde a wɔde kyekyere nneɛma ho.
NIP-78 na ɛwɔ hɔData a wɔde di dwuma wɔ ɔkwan a wɔpɛ so.
NIP-98 na ɛwɔ hɔHTTP auth, ma endpoints a wɔagye no.

Nsɛm a wɔde kyerɛw nsɛm

ƐheDɛn
Nnipa a wɔyɛ ne nsaano nkyerɛweesecp256k1 a Schnorr nsaano nkyerɛwee (BIP-340), sɛnea Nostr kyerɛ no.
Kokoam nkrasɛm ne kuw nkɔmmɔbɔNIP-44 v2: ECDH wɔ secp256k1, HKDF-SHA256, ChaCha20 a HMAC-SHA256, ne padding sɛnea ɛbɛyɛ a ciphertext tenten mma nkra tenten no nkɔ.
Kokoam nkrasɛm ne kuw nkɔmmɔbɔ, Nymchat dwumadiefoɔ ntamNIP-44 v2 payload no, sɛ wɔanɛ mu biara, wɔhyehyɛ no bio wɔ ChaCha20-Poly1305 mu a wɔde ML-KEM-768 (FIPS 203) encapsulation ne HKDF-SHA256 maa no mfonini. Encapsulation ciphertext no ne identity keys mmienu no nyinaa wɔde bɔɔ so sɛ associated data, na ne n'asɛm no kura... pq2. prefix na ɛma ɔkenkanfoɔ no boa kwan no wɔde payload no hwehwɛ. Atie mmienu no biara ɛsɛ sɛ wɔtwe wɔn na wɔanya nsem no. Hwɛ encryption a ɛko tia quantum.
Bluetooth mesh nhyiam ahorowDede XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 ma dawurubɔ nsaano nkyerɛwee, SHA-256 ne HMAC ase.
Nnipa a obi yɛ wɔ ahomegye muAES-GCM-256 na ɛwɔ hɔ. Safoa no firi PBKDF2-SHA256 wɔ 310,000 iterations ma password anaa PIN, anaa ɛfiri WebAuthn PRF output a ɛnam HKDF-SHA256 so ma passkey anaa biometric.
Frɛ ne fael a wɔde kɔ baabi foforoWebRTC ankasa DTLS-SRTP, a wɔyɛɛ nkitahodi wɔ NIP-17-a wɔabɔ no nsɛnkyerɛnne so.
Nneɛma a wɔyɛ no kwaPlatform CSPRNG no nyinaa — nsafe, nonces, ne akyɛde-wrap bere nsɔano jitter.

Metadata ho banbɔ

Nsɛm abien a ɛwɔ akyɛde-kyekyere kwan no so no fata sɛ yɛfrɛ, efisɛ ɛno ne nea ɛtetew NIP-59 ntam efi "encrypted, nanso ɛda adi sɛ efi wo hɔ kɔ wɔn so":

  • Wɔde nsa ahyɛ wrap biara ase denam a safoa a wɔde di dwuma pɛnkoro a wɔayɛ ama saa nkrasɛm no nkutoo, . enti wraps abien biara nni hɔ a wɔkyɛ obi a ɔde kɔma.
  • Wrap biara yɛ created_atrandomly backdated a ɛkɔ soro kodu baanu nnɔnhwerew pii de CSPRNG di dwuma, enti wontumi nhyehyɛ bere a wɔde mena ne nea wogye.

Kuw nkɔmmɔbɔ de bere tiaa mu nsɛm a ɛkyinkyini ka ho nea ogye no safoa a ɛwɔ so — hwɛ Sɛnea kuw encryption yɛ adwuma.

Fibea no akenkan

Crypto primitives no wɔ mu js/nym-crypto.js ne js/modules/key-vault.js wɔ wɛb app no ​​mu, ne ase android-ios-app/lib/core/crypto/ ne lib/services/mesh/noise/ wɔ Flutter app no ​​mu. No adekorabea yɛ AGPL-3.0 na edi mũ — afã biara nni hɔ a wɔato mu a wobetumi agye ahotoso.