Μετάβαση στο περιεχόμενο
Επιστροφή στο Nymchat

Βάση γνώσεων Κάτω από την κουκούλα

Πρωτόκολλο και γεγονότα

Τι βάζει το Nymchat στην πραγματικότητα, για όποιον τάσσεται εναντίον του, ελέγχοντάς το ή διαβάζοντας συμβάντα από άλλο πελάτη της Nostr.

Είδη εκδηλώσεων

ΕίδοςΧρησιμοποιείται γιαΣημειώσεις
0Μεταδεδομένα προφίλΤυπικό προφίλ Nostr: όνομα, εικόνα, banner, σχετικά, lud16.
5Αιτήματα διαγραφήςNIP-09.
7ΑντιδράσειςNIP-25, με α ['k', originalKind] ετικέτα, ώστε να κατατεθεί μια αντίδραση στον σωστό τύπο καναλιού.
13ΣφραγίδαΤο μεσαίο στρώμα ενός μηνύματος NIP-17.
14Ιδιωτικό μήνυμα φήμεςΑνυπόγραφο και δεν δημοσιεύτηκε ποτέ από μόνο του.
1059Συσκευασία δώρουNIP-59. Τι πραγματικά φτάνει σε ένα ρελέ για προσωπικά μηνύματα και ομαδικές συνομιλίες.
1984ΑναφοράNIP-56.
9734 / 9735Zap αίτημα και zap απόδειξηNIP-57.
10030Προσαρμοσμένες λίστες πακέτων emojiNIP-30.
20000Μήνυμα καναλιού GeohashΕφήμερο, με ετικέτα ['g', geohash].
23333Μήνυμα με όνομα καναλιούΕφήμερο, με ετικέτα ['d', channel].
24420 / 24421Δημόσιοι δείκτες πληκτρολόγησης και αποδείξεις ανάγνωσηςΕιδικά για το Nymchat, για δημόσια κανάλια.
25051 / 25052Σηματοδότηση peer-to-peer και κατάσταση μεταφοράς αρχείωνΕιδικά για το Nymchat.
30030Προσαρμοσμένα σύνολα emojiNIP-30.
30078Δεδομένα εφαρμογήςNIP-78. Δημοσκοπήσεις και συγχρονισμός κρυπτογραφημένων ρυθμίσεων.
69420Ιδιωτικές αποδείξεις ανάγνωσης και κατάσταση παράδοσηςΕιδικά για το Nymchat, που μεταφέρεται ως φήμη μέσα σε μια συσκευασία δώρου. Ένα ξεχωριστό είδος από 14 σκόπιμα, έτσι ώστε άλλοι πελάτες NIP-17 να μην αποδίδουν κενά άμεσα μηνύματα για κάθε απόδειξη.

NIP που εφαρμόζει το Nymchat

ΤΣΙΜΠΩΤι δίνει στο Nymchat
NIP-07Συνδεθείτε με μια επέκταση προγράμματος περιήγησης.
NIP-09Αιτήματα διαγραφής.
NIP-13Απόδειξη εργασίας. Τα εξερχόμενα μηνύματα εξορύσσονται σε τουλάχιστον 16 bit.
NIP-17Ιδιωτικά άμεσα μηνύματα και η βάση για ομαδικές συνομιλίες.
NIP-25Αντιδράσεις.
NIP-30Προσαρμοσμένα emoji.
NIP-40Χρονικές σημάνσεις λήξης — μηνύματα που εξαφανίζονται.
NIP-44Κρυπτογράφηση με έκδοση, που χρησιμοποιείται για σφραγίδες, αναδιπλώσεις και συγχρονισμό ρυθμίσεων.
NIP-46Απομακρυσμένη υπογραφή — bunker://.
NIP-56Αναφορά.
NIP-57Κεραυνοί κραδασμοί.
NIP-59Συσκευασίες δώρου.
NIP-78Αυθαίρετα δεδομένα εφαρμογής.
NIP-98HTTP auth, για τα φιλοξενούμενα τελικά σημεία.

Κρυπτογράφηση

ΟπουΤι
Ταυτότητα και υπογραφέςsecp256k1 με υπογραφές Schnorr (BIP-340), όπως ορίζει η Nostr.
Ιδιωτικά μηνύματα και ομαδικές συνομιλίεςNIP-44 v2: ECDH σε secp256k1, HKDF-SHA256, ChaCha20 με HMAC-SHA256 και συμπλήρωση ώστε το μήκος κρυπτογραφημένου κειμένου να μην απομακρύνει το μήκος του μηνύματος.
Συνεδρίες Bluetooth meshNoise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 για υπογραφές ανακοίνωσης, SHA-256 και HMAC από κάτω.
Ταυτότητα σε ηρεμίαAES-GCM-256. Το κλειδί προέρχεται από το PBKDF2-SHA256 στις 310.000 επαναλήψεις για κωδικό πρόσβασης ή PIN ή από έξοδο WebAuthn PRF μέσω HKDF-SHA256 για κωδικό πρόσβασης ή βιομετρικό στοιχείο.
Κλήσεις και μεταφορές αρχείωνΤο δικό του DTLS-SRTP του WebRTC, το οποίο έγινε αντικείμενο διαπραγμάτευσης μέσω σηματοδοσίας τυλιγμένο με NIP-17.
ΤυχαιότηταΗ πλατφόρμα CSPRNG παντού — πλήκτρα, nonces και το jitter της χρονικής σφραγίδας συσκευασίας δώρου.

Προστασία μεταδεδομένων

Δύο λεπτομέρειες στη διαδρομή αναδίπλωσης δώρου αξίζει να αναφερθούν, γιατί είναι αυτά που χωρίζουν το NIP-59 από "κρυπτογραφημένα, αλλά προφανώς από εσάς σε αυτούς":

  • Κάθε περιτύλιγμα υπογράφεται από έναν κλειδί μιας χρήσης που δημιουργήθηκε μόνο για αυτό το μήνυμα, έτσι δεν υπάρχουν δύο αναδιπλώσεις που να μοιράζονται έναν αποστολέα.
  • Κάθε περιτύλιγμα created_at είναι τυχαία χρονολόγηση με έως και δύο ώρες χρησιμοποιώντας το CSPRNG, επομένως οι χρόνοι αποστολής και λήψης δεν μπορούν να ευθυγραμμιστούν.

Οι ομαδικές συνομιλίες προσθέτουν περιστρεφόμενα εφήμερα παραλήπτης πλήκτρα πάνω από αυτό — βλ Πώς λειτουργεί η ομαδική κρυπτογράφηση.

Διαβάζοντας την πηγή

Τα crypto primitives είναι μέσα js/nym-crypto.js και js/modules/key-vault.js στην εφαρμογή Ιστού και κάτω android-ios-app/lib/core/crypto/ και lib/services/mesh/noise/ στην εφαρμογή Flutter. Ο αποθήκη είναι AGPL-3.0 και πλήρης — δεν υπάρχει κλειστό στοιχείο για την ανάληψη εμπιστοσύνης.