Πολιτική ασφαλείας
Το Herkos χειρίζεται ιδιωτικά κλειδιά και κρυπτογραφημένα μηνύματα, γι' αυτό παίρνουμε στα σοβαρά τις αναφορές ασφαλείας και προτιμούμε να μαθαίνουμε για ένα πρόβλημα νωρίς παρά αργά.
Αναφορά κενού ασφαλείας
Μην ανοίγετε δημόσιο issue για προβλήματα ασφαλείας.
Αναφέρετέ το ιδιωτικά μέσω της λειτουργίας του GitHub για ιδιωτική αναφορά κενών ασφαλείας ή με email στο security@herkos.email.
Χρήσιμα στοιχεία που μπορείτε να συμπεριλάβετε: ποιο είναι το πρόβλημα, πώς αναπαράγεται, σε ποια πλατφόρμα και έκδοση το δοκιμάσατε και τι θα μπορούσε να πετύχει ένας επιτιθέμενος. Μια απόδειξη σκοπιμότητας (proof of concept) βοηθά πολύ.
Μην συμπεριλαμβάνετε ποτέ σε μια αναφορά το δικό σας nsec, μυστικό κλειδί ή μυστικό bunker.
Στόχος μας είναι να επιβεβαιώνουμε τη λήψη των αναφορών μέσα σε λίγες ημέρες. Επειδή το Herkos είναι μικρό έργο, παρακαλούμε δώστε εύλογο χρόνο για μια διόρθωση πριν από τη δημόσια γνωστοποίηση. Με χαρά θα σας αναφέρουμε στην ανακοίνωση ασφαλείας, εκτός αν προτιμάτε διαφορετικά.
Τι καλύπτεται
Η ίδια η εφαρμογή Herkos: χειρισμός και αποθήκευση κλειδιών, κρυπτογράφηση και
αποκρυπτογράφηση μηνυμάτων (συμπεριλαμβανομένων των ελέγχων αποστολέα NIP-59 και της απομόνωσης Bcc
στο local_packages/nostr_mail), το κλείδωμα εφαρμογής, η επικοινωνία με relay και γέφυρες,
ο χειρισμός συνημμένων και η διαδικασία μεταγλώττισης και κυκλοφορίας εκδόσεων.
Τι δεν καλύπτεται
- Το ίδιο το πρωτόκολλο Nostr και τα NIP του — αναφέρετέ τα στους υπεύθυνους του πρωτοκόλλου.
- Relay, γέφυρες και διακομιστές Blossom που λειτουργούν τρίτοι. Το Herkos έρχεται με προεπιλογές αλλά δεν τα λειτουργεί· αναφέρετε τα προβλήματα στους διαχειριστές τους.
- Το upstream έργο Nostr Mail Client, εκτός αν το πρόβλημα αφορά συγκεκριμένα αλλαγές που έγιναν στο Herkos.
- Ελλείψεις θωράκισης που ήδη τεκμηριώνουμε ως γνωστό περιορισμό (βλ. παρακάτω).
Γνωστοί περιορισμοί, ειπωμένοι ξεκάθαρα
Πρόκειται για σχεδιαστικούς συμβιβασμούς, όχι για κενά ασφαλείας. Προτιμούμε να τους γράψουμε εδώ παρά να τους ανακαλύψει κάποιος με τον δύσκολο τρόπο:
- Η αλληλογραφία προς παραδοσιακές διευθύνσεις δεν κρυπτογραφείται από άκρο σε άκρο. Τα μηνύματα μεταξύ χρηστών του Nostr χρησιμοποιούν το gift wrap του NIP-17 και κρυπτογραφούνται από άκρο σε άκρο. Όταν γράφετε σε μια κανονική διεύθυνση email, μια γέφυρα μετατρέπει το μήνυμα και μπορεί να το διαβάσει.
- Το κλείδωμα εφαρμογής (PIN και βιομετρικά) είναι ένα φράγμα ευκολίας, όχι κρυπτογράφηση των αποθηκευμένων δεδομένων. Σταματά κάποιον που πιάνει μια ξεκλείδωτη συσκευή· δεν προστατεύει από έναν επιτιθέμενο με πλήρη πρόσβαση στη συσκευή ή στον χώρο αποθήκευσής της.
- Στα Windows δεν μπορεί να επιβληθεί αποκλειστικά βιομετρικός έλεγχος ταυτότητας. Το Windows Hello δεν επιτρέπει την επιλογή μεθόδου, οπότε το PIN του συστήματος παραμένει πάντα διαθέσιμο ως εναλλακτική.
- Αν χάσετε το κλειδί σας, χάνετε τον λογαριασμό. Δεν υπάρχει ανάκτηση, εκ σχεδιασμού.
- Τα μεταδεδομένα δεν κρύβονται πλήρως. Τα relay μπορούν να παρατηρούν μοτίβα σύνδεσης, και κάθε relay βλέπει τη διεύθυνση IP σας, ακόμη κι όταν δεν μπορεί να διαβάσει το περιεχόμενο των μηνυμάτων. Αυτό που το Herkos δεν αποκαλύπτει (από τις 30/09/2026) είναι ποιος γράφει σε ποιον όταν ένα relay ζητά ταυτοποίηση NIP-42:
- Αναζήτηση του πού θα γίνει η παράδοση. Οι λίστες relay και Blossom ενός παραλήπτη
ζητούνται μέσω ξεχωριστής σύνδεσης που δεν σας ταυτοποιεί ποτέ, πρώτα σε
relay που δεν απαιτούν ταυτοποίηση (
purplepag.es,user.kindpag.es,nos.lol,offchain.pub). - Προφίλ και ο προγραμματιστής αποστολών. Το όνομα και η εικόνα που εμφανίζονται για οποιονδήποτε άλλον (kind 0), καθώς και η λίστα relay του DVM προγραμματισμού όταν προγραμματίζετε ή ακυρώνετε ένα email, ζητούνται με τον ίδιο τρόπο: πρώτα ανώνυμα και, αν ένα relay επιμείνει, με το προσωρινό κλειδί που περιγράφεται παρακάτω, ποτέ με το δικό σας (από την 01/10/2026· πριν, ένα relay που ζητούσε ταυτοποίηση λάμβανε το κλειδί σας και μπορούσε να καταλάβει ποιανού το προφίλ κοιτάζατε). Μόνο το δικό σας προφίλ διαβάζεται ακόμη ως εσάς.
- Παράδοση. Τα gift wraps πηγαίνουν στα relay ιδιωτικών μηνυμάτων του παραλήπτη, μέσω της ίδιας ξεχωριστής σύνδεσης. Αν κάποιο από αυτά απαιτεί ταυτοποίηση, το Herkos απαντά με ένα κλειδί φτιαγμένο για τον σκοπό αυτό και φυλαγμένο μόνο στη μνήμη, ποτέ με το δικό σας· κάθε λογαριασμός στη συσκευή έχει το δικό του. Το relay μπορεί ακόμη να δει ότι η ίδια συσκευή (ίδια IP, ίδιο προσωρινό κλειδί) έστειλε αρκετούς φακέλους κατά τη διάρκεια μιας συνεδρίας.
- Μεγάλα email. Το κρυπτογραφημένο αντίγραφο ενός email άνω των 32 KB μεταφορτώνεται σε διακομιστές Blossom, συμπεριλαμβανομένων εκείνων των παραληπτών. Μόνο οι δικοί σας διακομιστές (η λίστα Blossom σας) λαμβάνουν τη μεταφόρτωση εξουσιοδοτημένη με το κλειδί σας. Κάθε άλλος διακομιστής τη λαμβάνει ανώνυμα και, αν επιμείνει σε εξουσιοδότηση, με μία υπογεγραμμένη με το ίδιο προσωρινό κλειδί όπως παραπάνω (από την 01/10/2026· πριν, κάθε διακομιστής λάμβανε το κλειδί σας). Ένας διακομιστής που δέχεται μόνο γνωστά κλειδιά την απορρίπτει, και το αντίγραφο μένει στους άλλους διακομιστές.
- Τα δικά σας δεδομένα. Ο συγχρονισμός του γραμματοκιβωτίου, των ετικετών, των ρυθμίσεων και των πρόχειρών σας ταυτοποιείται, όπου το ζητά ένα relay, ως ο λογαριασμός στον οποίο ανήκουν τα δεδομένα, ακόμη και κατά την εναλλαγή λογαριασμού. Στα δικά σας relay αυτό δεν τους λέει τίποτα που δεν ήξεραν ήδη: τα αιτήματα αναφέρουν ούτως ή άλλως το κλειδί σας. Οι δικές σας λίστες relay και Blossom είναι δημόσιες και ζητούνται χωρίς να σας ταυτοποιούν, όπως και τα relay που αναφέρονται σε έναν σύνδεσμο email.
- Η κατάσταση ανάγνωσης και οι φάκελοι είναι δημόσια μεταδεδομένα (προς το παρόν). Όταν σημειώνετε ένα email ως αναγνωσμένο, με αστέρι, αρχειοθετημένο ή μετακινημένο, δημοσιεύεται ένα μη κρυπτογραφημένο συμβάν ετικέτας NIP-32 συνδεδεμένο με το δημόσιο κλειδί σας, συμπεριλαμβανομένων των ονομάτων των προσαρμοσμένων φακέλων. Ένας αποστολέας που γνωρίζει το id ενός email που σας έστειλε μπορεί να καταλάβει πότε ενεργήσατε σε αυτό. Η κρυπτογράφηση αυτών των ετικετών είναι προγραμματισμένη· μέχρι τότε, θεωρήστε τα ονόματα των φακέλων δημόσια.
- Οι ειδοποιήσεις push και η προγραμματισμένη αποστολή χρησιμοποιούν υπηρεσίες τρίτων. Ο
διακομιστής push (από προεπιλογή ο
api.nmail.li) μαθαίνει το δημόσιο κλειδί σας, ένα διακριτικό push και πότε λαμβάνετε αλληλογραφία· το DVM προγραμματισμού μαθαίνει το δημόσιο κλειδί σας και τα ήδη κρυπτογραφημένα μηνύματα που πρέπει να δημοσιεύσει. Και τα δύο είναι προαιρετικά και τεκμηριώνονται στοPRIVACY.md. Το κείμενο μιας ειδοποίησης push το επιλέγει ο διακομιστής push, και το Herkos το εμπιστεύεται μόνο όταν το UnifiedPush το παραδίδει κρυπτογραφημένο (RFC 8291)· ένα μη κρυπτογραφημένο φορτίο απλώς ξυπνά την εφαρμογή για να ανακτήσει η ίδια την αλληλογραφία. - Η έκδοση web κρατά το κλειδί σας στο πρόγραμμα περιήγησης, που είναι το πιο αδύναμο σημείο γι' αυτό. Οι εγκατεστημένες εφαρμογές παραδίδουν το μυστικό σας κλειδί στον ασφαλή χώρο αποθήκευσης του λειτουργικού συστήματος (Android Keystore, Windows Credential Manager, libsecret, iOS/macOS Keychain). Ένα πρόγραμμα περιήγησης δεν έχει τίποτα από αυτά: το κλειδί βρίσκεται στον χώρο αποθήκευσης του origin και περνά από JavaScript σε κάθε υπογραφή, εντός εμβέλειας κάθε κώδικα που εκτελείται στη σελίδα — μιας επέκτασης του προγράμματος περιήγησης με πρόσβαση σε κάθε ιστότοπο, ενός σφάλματος XSS στην εφαρμογή ή σε μια εξάρτηση, μιας αλλοιωμένης ανάπτυξης — και κάθε infostealer που αντιγράφει το προφίλ του προγράμματος περιήγησης. Επίσης δεν υπάρχει στιγμή όπου επαληθεύετε τον κώδικα μία φορά: ένα υπογεγραμμένο εκτελέσιμο ελέγχεται κατά την εγκατάσταση, ενώ μια ιστοσελίδα στέλνει νέο κώδικα σε κάθε επίσκεψη. Συνδεθείτε στην έκδοση web με απομακρυσμένη υπογραφή (bunker NIP-46, Amber), ώστε το κλειδί να μη φτάνει ποτέ στο πρόγραμμα περιήγησης, ή αντιμετωπίστε την ως ταυτότητα μιας χρήσης και κρατήστε το πραγματικό σας κλειδί σε μια εγκατεστημένη εφαρμογή.
- Η αλληλογραφία μέσω γέφυρας είναι τόσο αξιόπιστη όσο η γέφυρα. Το Herkos επαληθεύει ότι ένα
μήνυμα που επισημαίνεται ως προερχόμενο από γέφυρα υπογράφηκε πράγματι από μια γέφυρα που
έχετε ρυθμίσει (ή μία από τις προεπιλεγμένες). Δεν μπορεί να επαληθεύσει τίποτα σχετικά με την
παραδοσιακή διεύθυνση
From:που μεταβιβάζει η γέφυρα. - Τα συνημμένα τα ανοίγει το λειτουργικό σύστημα. Το Herkos δεν εκκινεί ποτέ εκτελέσιμους τύπους αρχείων ή σενάρια και ρωτά πριν παραδώσει οποιοδήποτε άλλο συνημμένο χωρίς προεπισκόπηση στην προεπιλεγμένη εφαρμογή του συστήματος, αλλά η εφαρμογή που ανοίγει το αρχείο είναι εκτός του ελέγχου μας.
Υποστηριζόμενες εκδόσεις
Οι διορθώσεις ασφαλείας εφαρμόζονται στην πιο πρόσφατη κυκλοφορημένη έκδοση. Δεδομένου του μεγέθους του έργου, οι παλαιότερες εκδόσεις δεν συντηρούνται — ενημερώστε την εφαρμογή πριν κάνετε αναφορά.