Βάση γνώσεων Κάτω από την κουκούλα
Πρωτόκολλο και γεγονότα
Τι βάζει το 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 / 9735 | Zap αίτημα και zap απόδειξη | NIP-57. |
10030 | Προσαρμοσμένες λίστες πακέτων emoji | NIP-30. |
20000 | Μήνυμα καναλιού Geohash | Εφήμερο, με ετικέτα ['g', geohash]. |
23333 | Μήνυμα με όνομα καναλιού | Εφήμερο, με ετικέτα ['d', channel]. |
24420 / 24421 | Δημόσιοι δείκτες πληκτρολόγησης και αποδείξεις ανάγνωσης | Ειδικά για το Nymchat, για δημόσια κανάλια. |
25051 / 25052 | Σηματοδότηση peer-to-peer και κατάσταση μεταφοράς αρχείων | Ειδικά για το Nymchat. |
30030 | Προσαρμοσμένα σύνολα emoji | NIP-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-98 | HTTP auth, για τα φιλοξενούμενα τελικά σημεία. |
Κρυπτογράφηση
| Οπου | Τι |
|---|---|
| Ταυτότητα και υπογραφές | secp256k1 με υπογραφές Schnorr (BIP-340), όπως ορίζει η Nostr. |
| Ιδιωτικά μηνύματα και ομαδικές συνομιλίες | NIP-44 v2: ECDH σε secp256k1, HKDF-SHA256, ChaCha20 με HMAC-SHA256 και συμπλήρωση ώστε το μήκος κρυπτογραφημένου κειμένου να μην απομακρύνει το μήκος του μηνύματος. |
| Συνεδρίες Bluetooth mesh | Noise 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 και πλήρης — δεν υπάρχει κλειστό στοιχείο για την ανάληψη εμπιστοσύνης.