Baza de cunoștințe Sub capotă
Protocol și evenimente
Ceea ce Nymchat pune de fapt pe fir, pentru oricine construiește împotriva lui, auditarea acestuia sau citirea evenimentelor de la alt client Nostr.
Această pagină este tradusă automat pentru comoditate. Originalul în limba engleză este versiunea care se aplică.
Tipuri de evenimente
| Fel | Folosit pentru | Note |
|---|---|---|
0 | Metadatele profilului | Profil standard Nostr: nume, poză, banner, despre, lud16. |
5 | Cereri de ștergere | NIP-09. |
7 | Reacții | NIP-25, cu a ['k', originalKind] etichetă, astfel încât să fie înregistrată o reacție împotriva tipului de canal potrivit. |
13 | Sigiliu | Stratul de mijloc al unui mesaj NIP-17. |
14 | Zvon de mesaj privat | Nesemnat și niciodată publicat pe cont propriu. |
1059 | Pachet cadou | NIP-59. Ceea ce ajunge de fapt la un releu pentru mesaje private și chaturi de grup. |
1984 | Raportare | NIP-56. |
9734 / 9735 | Solicitare zap și chitanță zap | NIP-57. |
10030 | Liste de pachete de emoji personalizate | NIP-30. |
20000 | Mesajul canalului Geohash | Efemer, etichetat ['g', geohash]. |
23333 | Mesajul canalului numit | Efemer, etichetat ['d', channel]. |
24420 / 24421 | Indicatori publici de tastare și chitanțe de citire | Specific Nymchat, pentru canale publice. |
25051 / 25052 | Semnalizarea peer-to-peer și starea transferului fișierelor | Specific Nymchat. |
30030 | Seturi de emoji personalizate | NIP-30. |
30078 | Date aplicației | NIP-78. Sondajele și setările criptate se sincronizează. |
69420 | Confirmări de citire private și starea livrării | Specific Nymchat, purtat ca un zvon într-un ambalaj cadou. Un fel separat de 14 în mod deliberat, astfel încât alți clienți NIP-17 nu redă mesaje directe goale pentru fiecare chitanță. |
NIP-uri Nymchat implementează
| NIP | Ce îi dă lui Nymchat |
|---|---|
| NIP-07 | Conectați-vă cu o extensie de browser. |
| NIP-09 | Cereri de ștergere. |
| NIP-13 | Dovada muncii. Mesajele trimise sunt extrase la cel puțin 16 biți. |
| NIP-17 | Mesaje directe private și baza pentru chat-urile de grup. |
| NIP-25 | Reacții. |
| NIP-30 | Emoji personalizat. |
| NIP-40 | Marcaje temporale de expirare — mesaje care dispar. |
| NIP-44 | Criptare cu versiuni, folosită pentru sigilii, împachetări și sincronizarea setărilor. |
| NIP-46 | Semnarea de la distanță — bunker://. |
| NIP-56 | Raportare. |
| NIP-57 | Zăpește fulger. |
| NIP-59 | Ambalaje pentru cadou. |
| NIP-78 | Date de aplicare arbitrare. |
| NIP-98 | Autentificare HTTP, pentru punctele finale găzduite. |
Criptografie
| Unde | Ce |
|---|---|
| Identitate și semnături | secp256k1 cu semnături Schnorr (BIP-340), după cum precizează Nostr. |
| Mesaje private și chaturi de grup | NIP-44 v2: ECDH pe secp256k1, HKDF-SHA256, ChaCha20 cu HMAC-SHA256 și umplutură astfel încât lungimea textului cifrat să nu dea lungimea mesajului. |
| Sesiuni de rețea Bluetooth | Zgomot XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 pentru semnături de anunț, SHA-256 și HMAC dedesubt. |
| Identitate în repaus | AES-GCM-256. Cheia provine de la PBKDF2-SHA256 la 310.000 de iterații pentru o parolă sau PIN, sau de la o ieșire WebAuthn PRF prin HKDF-SHA256 pentru o parolă sau biometrică. |
| Apeluri și transferuri de fișiere | Propul DTLS-SRTP al WebRTC, negociat prin semnalizare NIP-17-wrapped. |
| Aleatorie | Platforma CSPRNG de-a lungul întregii — chei, non-uri și fluctuația de marcaj temporală a ambalajului cadou. |
Protecția metadatelor
Două detalii din calea ambalajului cadou merită să fie menționate, deoarece ele separă NIP-59 de la „criptat, dar evident de la tine la ei”:
- Fiecare wrap este semnat de a cheie unică generat numai pentru acel mesaj, deci nu există două wrap-uri care să împartă un expeditor.
- Fiecare wrap's
created_ateste retrodatate aleatoriu cu până la două ore folosind CSPRNG, deci orele de trimitere și primire nu pot fi aliniate.
Chaturile de grup adaugă efemere rotative destinatar cheile pe deasupra — vezi Cum funcționează criptarea grupului.
Cripto-primitivele sunt în js/nym-crypto.js şi
js/modules/key-vault.js în aplicația web și mai jos
android-ios-app/lib/core/crypto/ şi
lib/services/mesh/noise/ în aplicația Flutter. The
repertoriu
este AGPL-3.0 și complet — nu există nicio componentă închisă care să aibă încredere.