Herkos

Πολιτική ασφαλείας

Το Herkos χειρίζεται ιδιωτικά κλειδιά και κρυπτογραφημένα μηνύματα, γι' αυτό παίρνουμε στα σοβαρά τις αναφορές ασφαλείας και προτιμούμε να μαθαίνουμε για ένα πρόβλημα νωρίς παρά αργά.

Αναφορά κενού ασφαλείας

Μην ανοίγετε δημόσιο issue για προβλήματα ασφαλείας.

Αναφέρετέ το ιδιωτικά με email στο security@herkos.email.

Χρήσιμα στοιχεία που μπορείτε να συμπεριλάβετε: ποιο είναι το πρόβλημα, πώς αναπαράγεται, σε ποια πλατφόρμα και έκδοση το δοκιμάσατε και τι θα μπορούσε να πετύχει ένας επιτιθέμενος. Μια απόδειξη σκοπιμότητας (proof of concept) βοηθά πολύ.

Μην συμπεριλαμβάνετε ποτέ σε μια αναφορά το δικό σας nsec, ιδιωτικό κλειδί ή μυστικό bunker.

Στόχος μας είναι να επιβεβαιώνουμε τη λήψη των αναφορών μέσα σε λίγες ημέρες. Επειδή το Herkos είναι μικρό έργο, παρακαλούμε δώστε εύλογο χρόνο για μια διόρθωση πριν από τη δημόσια γνωστοποίηση. Με χαρά θα σας αναφέρουμε στην ανακοίνωση ασφαλείας, εκτός αν προτιμάτε διαφορετικά.

Τι καλύπτεται

Η ίδια η εφαρμογή Herkos: χειρισμός και αποθήκευση κλειδιών, κρυπτογράφηση και αποκρυπτογράφηση μηνυμάτων (συμπεριλαμβανομένων των ελέγχων αποστολέα NIP-59 και της απομόνωσης Bcc στο local_packages/nostr_mail), το κλείδωμα εφαρμογής, η επικοινωνία με relay και γέφυρες, ο χειρισμός συνημμένων και η διαδικασία μεταγλώττισης και κυκλοφορίας εκδόσεων. Για το Herkos Drive, επίσης το πακέτο του πρωτοκόλλου του (packages/herkos_drive_protocol) και η σελίδα που ανοίγει τους συνδέσμους του (herkos.app/f/)· βλ. τη δική του ενότητα παρακάτω.

Τι δεν καλύπτεται

Γνωστοί περιορισμοί, ειπωμένοι ξεκάθαρα

Πρόκειται για σχεδιαστικούς συμβιβασμούς, όχι για κενά ασφαλείας. Προτιμούμε να τους γράψουμε εδώ παρά να τους ανακαλύψει κάποιος με τον δύσκολο τρόπο:

Herkos Local Relay: τι προστατεύει και τι όχι

Το Herkos Local Relay κρατά στη συσκευή σας τα συμβάντα των εφαρμογών σας, και τα ιδιωτικά (πρόχειρα, ιδιωτικές λίστες, τους φακέλους που λαμβάνετε). Αυτά είναι όσα τα προστατεύουν και εκεί βρίσκεται το όριο, πλατφόρμα προς πλατφόρμα. Τα προβλήματα ασφαλείας του relay αναφέρονται όπως όλα τα άλλα (παραπάνω).

Ολόκληρη η βάση δεδομένων είναι κρυπτογραφημένη, μαζί με το ημερολόγιο συναλλαγών της (SQLite3 Multiple Ciphers, AEGIS-256). Το κλειδί είναι 32 τυχαία bytes που δημιουργούνται στη συσκευή και φυλάσσονται στον ασφαλή χώρο αποθήκευσης του συστήματος: το Keystore στο Android, το DPAPI στα Windows, η κλειδοθήκη (libsecret) στο Linux. Δεν έχει κανέναν δικό σας κωδικό, επειδή το relay πρέπει να ξεκινά μόνο του. Χωρίς το κλειδί, το relay δεν ξεκινά και το λέει: δεν ανοίγει ούτε δημιουργεί ποτέ μια μη κρυπτογραφημένη βάση, και δεν διαγράφει ποτέ μια βάση που δεν μπορεί να ανοίξει.

Αν… Android Windows Linux
κάποιος αντιγράψει το αρχείο της βάσης (ένα αντίγραφο ασφαλείας, έναν συγχρονισμένο φάκελο, μια εικόνα δίσκου) Προστατευμένο Προστατευμένο Προστατευμένο
σας κλέψουν τη συσκευή ή τον δίσκο ενώ είναι σβηστά Προστατευμένο: το κλειδί είναι στο Keystore Προστατευμένο, εκτός αν ξέρουν τον κωδικό σύνδεσής σας στα Windows: το DPAPI προστατεύει το κλειδί με αυτόν Προστατευμένο, εκτός αν ξέρουν τον κωδικό της κλειδοθήκης σας (σχεδόν πάντα, αυτόν της συνεδρίας σας)
άλλος λογαριασμός χρήστη στην ίδια συσκευή Προστατευμένο Προστατευμένο: το DPAPI λειτουργεί ανά χρήστη Προστατευμένο: η κλειδοθήκη είναι ανά χρήστη
άλλη εφαρμογή ή πρόγραμμα που τρέχει με τον χρήστη σας Προστατευμένο: το Android απομονώνει κάθε εφαρμογή και το Keystore δίνει το κλειδί μόνο στο relay Όχι: το DPAPI κρυπτογραφεί ανά χρήστη, όχι ανά εφαρμογή· ένα πρόγραμμα που τρέχει ως εσείς μπορεί να ζητήσει το κλειδί όπως ακριβώς το relay Όχι: η κλειδοθήκη της συνεδρίας σας δεν διαχωρίζει τις εφαρμογές μεταξύ τους
ένα τηλέφωνο με root, ή ένα εργαλείο που εκτελεί κώδικα ως η εφαρμογή Όχι — —
κάποιος κρατά τη συσκευή ξεκλείδωτη στο χέρι Μόνο το PIN ή το δακτυλικό αποτύπωμα του relay, αν τα έχετε ορίσει Το ίδιο Το ίδιο
κάποιος διαβάζει τη μνήμη του relay ενώ τρέχει Όχι Όχι Όχι

Σε υπολογιστή, το όριο του DPAPI και της κλειδοθήκης είναι αυτό κάθε προγράμματος: προστατεύουν από άλλους χρήστες και από όποιον πάρει τον δίσκο, όχι από ένα κακόβουλο πρόγραμμα που ήδη τρέχει με τον χρήστη σας. Αν σας ανησυχεί αυτή η περίπτωση, αυτό που σας προστατεύει είναι η κρυπτογράφηση του δίσκου του συστήματος (BitLocker, LUKS) και το να μην εκτελείτε προγράμματα που δεν εμπιστεύεστε. Σε Linux χωρίς κλειδοθήκη (χωρίς Secret Service), το relay δεν ξεκινά και εξηγεί γιατί: δεν κρατά ποτέ το κλειδί χωρίς κρυπτογράφηση.

Ποιος μπαίνει, στην ίδια τη συσκευή. Το relay ακούει μόνο στο 127.0.0.1, και κάθε εφαρμογή της συσκευής, ή μια ιστοσελίδα στο πρόγραμμα περιήγησης, μπορεί να φτάσει σε αυτή τη διεύθυνση. Γι' αυτό:

Τι δεν προστατεύει, εδώ:

Το τοπικό δίκτυο, αν το ενεργοποιήσετε (είναι απενεργοποιημένο από προεπιλογή):

Τι δεν προστατεύει, εδώ: όποιος βρίσκεται στο ίδιο δίκτυο βλέπει ότι η συσκευή έχει μια ανοιχτή θύρα και πόση κίνηση περνά από αυτήν, όχι όμως ποια· και αν η συσκευή έχει δημόσια διεύθυνση (χωρίς δρομολογητή ενδιάμεσα), αυτή η θύρα φαίνεται από το Διαδίκτυο, αν και εξακολουθεί να ζητά ένα κλειδί της λίστας σας.

Αντίγραφα. Το κρυπτογραφημένο αντίγραφο έχει κωδικό (scrypt και XChaCha20-Poly1305): χωρίς αυτόν κανείς δεν μπορεί να το ανοίξει, ούτε εμείς. Η εξαγωγή JSONL δεν είναι κρυπτογραφημένη και περιέχει τα ιδιωτικά σας συμβάντα σε απλό κείμενο· η εφαρμογή σάς το λέει.

Το κλείδωμα (ένα PIN, και δακτυλικό αποτύπωμα ή Windows Hello) ζητείται όταν ανοίγει η εφαρμογή, μετά από 30 δευτερόλεπτα εκτός αυτής και για την έγκριση μιας σύζευξης. Είναι ένα φράγμα ευκολίας, όπως στο Mail: δεν κρυπτογραφεί τίποτα. Στο Android, με ορισμένο PIN δεν επιτρέπονται στιγμιότυπα οθόνης ούτε μικρογραφία στις πρόσφατες εφαρμογές, και από το Android 12 κανένα παράθυρο άλλης εφαρμογής δεν μπορεί να μπει πάνω από αυτό του relay όσο το χρησιμοποιείτε.

Herkos Drive: τι προστατεύει και τι όχι

Το Herkos Drive κρατά τα αρχεία σας σε διακομιστές Blossom και τη λίστα των αρχείων και των φακέλων σας σε relay του Nostr, και τα δύο κρυπτογραφημένα στη συσκευή σας. Αυτό είναι που τα προστατεύει, και εδώ είναι τα όρια. Η πλήρης λεπτομέρεια βρίσκεται στο spec-drive.md και στο μοντέλο απειλών amenazas-drive.md, στο packages/herkos_drive_protocol/· τι βλέπει κάθε relay και διακομιστής βρίσκεται στην πολιτική απορρήτου. Αναφέρετε τα ζητήματα ασφαλείας του Drive με τον ίδιο τρόπο όπως κάθε άλλο (παραπάνω).

Τι δεν μπορούν να κάνουν τα relay και οι διακομιστές:

Τι δεν προστατεύει:

Πώς ελέγχεται. Δύο εσωτερικές αναθεωρήσεις με βάση το μοντέλο απειλών (2 Νοεμβρίου 2026) και οι διορθώσεις τους· δοκιμές για το τι δείχνει κάθε συμβάν και μπλοκ· fuzzing κάθε αναγνώστη όσων έρχονται απ' έξω (συμβάντα, σφραγίδες, manifest, σύνδεσμοι, αντίγραφα ασφαλείας). Δεν υπάρχει ακόμη εξωτερικός έλεγχος: ένας έχει προγραμματιστεί πριν από τη δημόσια beta, και η αναφορά του θα δημοσιευθεί ολόκληρη. Το Drive βρίσκεται ακόμη υπό ανάπτυξη.

Υποστηριζόμενες εκδόσεις

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