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 | Semnat, și niciodată publicat pe cont propriu. Un răspuns de thread poartă o ['nymthread', rootId] eticheta în interiorul zvonului criptat, referindu-se la ID-ul mesajului partajat al rădăcinii. |
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]Un răspuns la thread adaugă un NIP-10 marcat ['e', rootId, '', 'root'] Tag ă |
23333 | Mesajul canalului numit | Efemer, etichetat ['d', channel]Un răspuns la thread adaugă un NIP-10 marcat ['e', rootId, '', 'root'] Tag ă |
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, sincronizarea setărilor criptate și anunțurile post-cheie cuantică (etichetate nym-pq, care poartă o cheie publică ML-KEM-768 cu expirare NIP-40). |
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-10 | Etichete de răspuns marcate – modul în care un fir de canal pune răspunsul la mesajul său rădăcină. |
| 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. |
| Mesaje private și chaturi de grup, între utilizatorii Nymchat | Aceeași sarcină utilă NIP-44 v2, nemodificată, sigilată pentru a doua oară în interiorul ChaCha20-Poly1305, cheiați dintr-o encapsulare ML-KEM-768 (FIPS 203) prin HKDF-SHA256. pq2. prefix astfel încât un cititor să aleagă calea inspectând sarcina utilă. Ambele straturi trebuie să fie rupte pentru a recupera un mesaj. criptare rezistentă la cuantum. |
| 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 | DTLS-SRTP propriu al WebRTC, negociat prin semnalizare NIP-17. |
| 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.