Przejdź do treści
Wracając do Nymchata

Baza wiedzy Pod maską

Protokół i wydarzenia

To, co Nymchat faktycznie podaje do wiadomości, dla każdego, kto przeciw temu buduje, audytowanie go lub odczytywanie zdarzeń z innego klienta Nostr.

Rodzaje wydarzeń

UprzejmyUżywany doNotatki
0Metadane profiluStandardowy profil Nostr: nazwa, zdjęcie, baner, informacje, lud16.
5Żądania usunięciaNIP-09.
7ReakcjeNIP-25, z ['k', originalKind] tag, aby reakcja została zgłoszona względem odpowiedniego typu kanału.
13FokaWarstwa środkowa komunikatu NIP-17.
14Plotka o wiadomościach prywatnychNiepodpisane i nigdy nie publikowane samodzielnie.
1059Opakowanie na prezentNIP-59. Co faktycznie dociera do przekaźnika prywatnych wiadomości i czatów grupowych.
1984RaportowanieNIP-56.
9734 / 9735Żądanie Zap i potwierdzenie zapNIP-57.
10030Niestandardowe listy pakietów emojiNIP-30.
20000Wiadomość na kanale GeohashEfemeryczne, oznaczone ['g', geohash].
23333Nazwany komunikat kanałuEfemeryczne, oznaczone ['d', channel].
24420 / 24421Publiczne wskaźniki pisania i potwierdzenia odczytuSpecjalnie dla Nymchata, dla kanałów publicznych.
25051 / 25052Sygnalizacja peer-to-peer i status przesyłania plikówSpecyficzne dla Nymchata.
30030Niestandardowe zestawy emojiNIP-30.
30078Dane aplikacjiNIP-78. Synchronizacja ankiet i zaszyfrowanych ustawień.
69420Prywatne potwierdzenia przeczytania i status dostawySpecyficzny dla Nymchata, noszony jako plotka w opakowaniu na prezent. Oddzielny rodzaj od 14 celowo, aby inni klienci NIP-17 nie wyświetlali pustych komunikatów bezpośrednich przy każdym paragonie.

NIP wdraża Nymchat

SKAKAĆCo daje Nymchat
NIP-07Zaloguj się za pomocą rozszerzenia przeglądarki.
NIP-09Żądania usunięcia.
NIP-13Dowód pracy. Wiadomości wychodzące są analizowane do co najmniej 16 bitów.
NIP-17Prywatne wiadomości bezpośrednie i podstawa czatów grupowych.
NIP-25Reakcje.
NIP-30Niestandardowe emoji.
NIP-40Sygnatury czasowe wygaśnięcia — znikające wiadomości.
NIP-44Szyfrowanie wersjonowane, używane do pieczęci, opakowań i synchronizacji ustawień.
NIP-46Zdalne podpisywanie — bunker://.
NIP-56Raportowanie.
NIP-57Uderzenia piorunów.
NIP-59Opakowania na prezenty.
NIP-78Dowolne dane aplikacji.
NIP-98Uwierzytelnianie HTTP dla hostowanych punktów końcowych.

Kryptografia

GdzieCo
Tożsamość i podpisysecp256k1 z podpisami Schnorra (BIP-340), jak określa Nostr.
Prywatne wiadomości i czaty grupoweNIP-44 v2: ECDH na secp256k1, HKDF-SHA256, ChaCha20 z HMAC-SHA256 i dopełnienie, aby długość tekstu zaszyfrowanego nie zdradzała długości wiadomości.
Sesje siatki BluetoothNoise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 dla podpisów ogłaszających, SHA-256 i HMAC poniżej.
Tożsamość w spoczynkuAES-GCM-256. Klucz pochodzi z PBKDF2-SHA256 po 310 000 iteracji dla hasła lub PIN-u lub z wyniku WebAuthn PRF za pośrednictwem HKDF-SHA256 dla hasła lub klucza biometrycznego.
Połączenia i przesyłanie plikówWłasny DTLS-SRTP WebRTC, negocjowany za pośrednictwem sygnalizacji opakowanej w NIP-17.
LosowośćCała platforma CSPRNG — klucze, nonces i wahania znacznika czasu pakowania prezentu.

Ochrona metadanych

Warto przywołać dwa szczegóły w ścieżce pakowania prezentów, bo to one wyróżniają NIP-59 od „zaszyfrowane, ale oczywiście od ciebie do nich”:

  • Każda okładka jest podpisana przez a klucz jednorazowy wygenerowane wyłącznie dla tej wiadomości, więc nie ma dwóch opakowań tego samego nadawcy.
  • Każde opakowanie created_at Jest losowo datowane wstecznie o maksymalnie dwa godziny przy użyciu CSPRNG, więc czasy wysyłania i odbierania nie mogą się zgadzać.

Czaty grupowe dodają rotacyjne efemeryczne odbiorca klucze na górze – patrz Jak działa szyfrowanie grupowe.

Czytając źródło

Kryptowaluty są w modzie js/nym-crypto.js I js/modules/key-vault.js w aplikacji internetowej i pod android-ios-app/lib/core/crypto/ I lib/services/mesh/noise/ w aplikacji Flutter. The magazyn jest AGPL-3.0 i jest kompletny — nie ma zamkniętego komponentu, któremu można zaufać.