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.
Dla wygody ta strona została przetłumaczona maszynowo. Obowiązującą wersją jest oryginał w języku angielskim.
Rodzaje wydarzeń
| Uprzejmy | Używany do | Notatki |
|---|---|---|
0 | Metadane profilu | Standardowy profil Nostr: nazwa, zdjęcie, baner, informacje, lud16. |
5 | Żądania usunięcia | NIP-09. |
7 | Reakcje | NIP-25, z ['k', originalKind] tag, aby reakcja została zgłoszona względem odpowiedniego typu kanału. |
13 | Foka | Warstwa środkowa komunikatu NIP-17. |
14 | Plotka o wiadomościach prywatnych | Niepodpisane i nigdy nie publikowane samodzielnie. |
1059 | Opakowanie na prezent | NIP-59. Co faktycznie dociera do przekaźnika prywatnych wiadomości i czatów grupowych. |
1984 | Raportowanie | NIP-56. |
9734 / 9735 | Żądanie Zap i potwierdzenie zap | NIP-57. |
10030 | Niestandardowe listy pakietów emoji | NIP-30. |
20000 | Wiadomość na kanale Geohash | Efemeryczne, oznaczone ['g', geohash]. |
23333 | Nazwany komunikat kanału | Efemeryczne, oznaczone ['d', channel]. |
24420 / 24421 | Publiczne wskaźniki pisania i potwierdzenia odczytu | Specjalnie dla Nymchata, dla kanałów publicznych. |
25051 / 25052 | Sygnalizacja peer-to-peer i status przesyłania plików | Specyficzne dla Nymchata. |
30030 | Niestandardowe zestawy emoji | NIP-30. |
30078 | Dane aplikacji | NIP-78. Synchronizacja ankiet i zaszyfrowanych ustawień. |
69420 | Prywatne potwierdzenia przeczytania i status dostawy | Specyficzny 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-07 | Zaloguj się za pomocą rozszerzenia przeglądarki. |
| NIP-09 | Żądania usunięcia. |
| NIP-13 | Dowód pracy. Wiadomości wychodzące są analizowane do co najmniej 16 bitów. |
| NIP-17 | Prywatne wiadomości bezpośrednie i podstawa czatów grupowych. |
| NIP-25 | Reakcje. |
| NIP-30 | Niestandardowe emoji. |
| NIP-40 | Sygnatury czasowe wygaśnięcia — znikające wiadomości. |
| NIP-44 | Szyfrowanie wersjonowane, używane do pieczęci, opakowań i synchronizacji ustawień. |
| NIP-46 | Zdalne podpisywanie — bunker://. |
| NIP-56 | Raportowanie. |
| NIP-57 | Uderzenia piorunów. |
| NIP-59 | Opakowania na prezenty. |
| NIP-78 | Dowolne dane aplikacji. |
| NIP-98 | Uwierzytelnianie HTTP dla hostowanych punktów końcowych. |
Kryptografia
| Gdzie | Co |
|---|---|
| Tożsamość i podpisy | secp256k1 z podpisami Schnorra (BIP-340), jak określa Nostr. |
| Prywatne wiadomości i czaty grupowe | NIP-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 Bluetooth | Noise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 dla podpisów ogłaszających, SHA-256 i HMAC poniżej. |
| Tożsamość w spoczynku | AES-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ów | Wł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_atJest 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.
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ć.