Πολιτική ασφαλείας
Το 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/)· βλ. τη δική του ενότητα παρακάτω.
Τι δεν καλύπτεται
- Το ίδιο το πρωτόκολλο 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με τοrelay.nmail.liαν το ζητήσετε), μαθαίνει το δημόσιο κλειδί σας, ένα διακριτικό push και πότε λαμβάνετε αλληλογραφία· το DVM προγραμματισμού μαθαίνει το δημόσιο κλειδί σας και τα ήδη κρυπτογραφημένα μηνύματα που πρέπει να δημοσιεύσει. Και τα δύο είναι προαιρετικά και τεκμηριώνονται στοPRIVACY.md. Το κείμενο μιας ειδοποίησης push το επιλέγει ο διακομιστής push, και το Herkos το εμπιστεύεται μόνο όταν το UnifiedPush το παραδίδει κρυπτογραφημένο (RFC 8291)· ένα μη κρυπτογραφημένο φορτίο απλώς ξυπνά την εφαρμογή για να ανακτήσει η ίδια την αλληλογραφία. - Η έκδοση web κρατά το κλειδί σας στο πρόγραμμα περιήγησης, που είναι το πιο αδύναμο σημείο γι' αυτό. Οι εγκατεστημένες εφαρμογές παραδίδουν το ιδιωτικό σας κλειδί στον ασφαλή χώρο αποθήκευσης του λειτουργικού συστήματος (Android Keystore, DPAPI στα Windows, libsecret, iOS/macOS Keychain). Ένα πρόγραμμα περιήγησης δεν έχει τίποτα από αυτά: το κλειδί βρίσκεται στον χώρο αποθήκευσης του origin και περνά από JavaScript σε κάθε υπογραφή, εντός εμβέλειας κάθε κώδικα που εκτελείται στη σελίδα — μιας επέκτασης του προγράμματος περιήγησης με πρόσβαση σε κάθε ιστότοπο, ενός σφάλματος XSS στην εφαρμογή ή σε μια εξάρτηση, μιας αλλοιωμένης ανάπτυξης — και κάθε infostealer που αντιγράφει το προφίλ του προγράμματος περιήγησης. Επίσης δεν υπάρχει στιγμή όπου επαληθεύετε τον κώδικα μία φορά: ένα υπογεγραμμένο εκτελέσιμο ελέγχεται κατά την εγκατάσταση, ενώ μια ιστοσελίδα στέλνει νέο κώδικα σε κάθε επίσκεψη. Συνδεθείτε στην έκδοση web με απομακρυσμένη εφαρμογή υπογραφής (bunker NIP-46, Amber), ώστε το κλειδί να μη φτάνει ποτέ στο πρόγραμμα περιήγησης, ή χρησιμοποιήστε εκεί έναν λογαριασμό μιας χρήσης και κρατήστε το πραγματικό σας κλειδί σε μια εγκατεστημένη εφαρμογή.
- Η αλληλογραφία μέσω γέφυρας είναι τόσο αξιόπιστη όσο η γέφυρα. Το Herkos επαληθεύει ότι ένα
μήνυμα που επισημαίνεται ως προερχόμενο από γέφυρα υπογράφηκε πράγματι από μια γέφυρα που
έχετε ρυθμίσει (ή μία από τις προεπιλεγμένες). Δεν μπορεί να επαληθεύσει τίποτα σχετικά με την
παραδοσιακή διεύθυνση
From:που μεταβιβάζει η γέφυρα. - Τα συνημμένα τα ανοίγει το λειτουργικό σύστημα. Το Herkos δεν εκκινεί ποτέ εκτελέσιμους τύπους αρχείων ή σενάρια και ρωτά πριν παραδώσει οποιοδήποτε άλλο συνημμένο χωρίς προεπισκόπηση στην προεπιλεγμένη εφαρμογή του συστήματος, αλλά η εφαρμογή που ανοίγει το αρχείο είναι εκτός του ελέγχου μας.
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,
και κάθε εφαρμογή της συσκευής, ή μια ιστοσελίδα στο πρόγραμμα περιήγησης,
μπορεί να φτάσει σε αυτή τη διεύθυνση. Γι' αυτό:
- Μια εφαρμογή πρέπει να συζευχθεί: εμφανίζεται στην οθόνη του relay και εσείς την εγκρίνετε (με το PIN ή το δακτυλικό αποτύπωμα, αν τα έχετε ορίσει). Κάθε εφαρμογή μπορεί να δώσει στον εαυτό της οποιοδήποτε όνομα: εγκρίνετε μόνο αν μόλις το ζητήσατε από αυτή την εφαρμογή.
- Μια ιστοσελίδα συζευγνύεται πάντα, και μια σύζευξη ισχύει μόνο από εκεί όπου έγινε: η σύζευξη μιας εφαρμογής της συσκευής δεν ανοίγει τίποτα σε μια ιστοσελίδα, ακόμη κι αν υπογράφει με το ίδιο κλειδί.
- Μια συζευγμένη εφαρμογή διαβάζει και γράφει μόνο τα είδη συμβάντων που της δώσατε, και διαγράφει μόνο όσα μπορεί να γράψει. Η ανάκλησή της την αποσυνδέει αμέσως.
- Μια εφαρμογή που δεν έχει συζευχθεί διαβάζει μόνο τα δημόσια συμβάντα σας (που είναι έτσι κι αλλιώς δημόσια) και δεν γράφει τίποτα, εκτός αν ενεργοποιήσετε τη ρύθμιση που αφήνει να μπουν οι εφαρμογές της συσκευής που δεν έχουν συζευχθεί.
- Τα ιδιωτικά συμβάντα δίνονται μόνο σε όποιον αποδεικνύει με NIP-42 ότι έχει το κλειδί στο οποίο ανήκουν, και ένας φάκελος μόνο στον παραλήπτη του.
Τι δεν προστατεύει, εδώ:
- Μια κακόβουλη εφαρμογή της συσκευής μπορεί να επιβραδύνει το relay ή να το κάνει να καταναλώνει μνήμη. Δεν μπορεί να διαβάσει τίποτα ιδιωτικό με αυτόν τον τρόπο.
- Όσο το relay κοιμάται ή δεν τρέχει, η θύρα του είναι ελεύθερη. Στο Android κοιμάται μετά από 10 λεπτά χωρίς συνδέσεις· σε υπολογιστή, η θύρα είναι ελεύθερη όσο δεν το έχετε ξεκινήσει. Μια άλλη εφαρμογή θα μπορούσε να ακούει εκεί και να παριστάνει το relay. Οι εφαρμογές Herkos θα ελέγχουν το κλειδί του relay πριν του στείλουν οτιδήποτε ιδιωτικό· δεν το κάνουν ακόμη, και μέχρι τότε αυτό είναι ένα πραγματικό όριο.
- Σε υπολογιστή, άλλοι χρήστες του υπολογιστή μπορούν να συνδεθούν ως εφαρμογή που δεν έχει συζευχθεί: να διαβάσουν τα δημόσια συμβάντα σας και να ζητήσουν σύζευξη.
Το τοπικό δίκτυο, αν το ενεργοποιήσετε (είναι απενεργοποιημένο από προεπιλογή):
- Μόνο
wss://, με δικό του πιστοποιητικό του relay· ποτέ μη κρυπτογραφημένοws://έξω από τη συσκευή. - Τίποτα πριν από την ταυτοποίηση (NIP-42) με ένα κλειδί της λίστας σας. Μια σύνδεση που δεν το κάνει μέσα σε 30 δευτερόλεπτα κλείνει, και το τοπικό δίκτυο έχει δικό του αριθμό συνδέσεων: δεν παίρνει ποτέ αυτές των εφαρμογών της συσκευής.
- Ένα κλειδί της λίστας διαβάζει τα δημόσια συμβάντα σας και τα δικά του ιδιωτικά, και γράφει μόνο συμβάντα που έχει υπογράψει το ίδιο. Η αφαίρεσή του από τη λίστα το αποσυνδέει.
- Το πιστοποιητικό ισχύει μόνο για ονόματα του σπιτιού (
localhost,.local, ιδιωτικές διευθύνσεις): ακόμη κι αν κάποιος έκλεβε το κλειδί του, δεν θα του χρησίμευε για να υπογράψει έναν τομέα του Διαδικτύου στις συσκευές που το εγκατέστησαν.
Τι δεν προστατεύει, εδώ: όποιος βρίσκεται στο ίδιο δίκτυο βλέπει ότι η συσκευή έχει μια ανοιχτή θύρα και πόση κίνηση περνά από αυτήν, όχι όμως ποια· και αν η συσκευή έχει δημόσια διεύθυνση (χωρίς δρομολογητή ενδιάμεσα), αυτή η θύρα φαίνεται από το Διαδίκτυο, αν και εξακολουθεί να ζητά ένα κλειδί της λίστας σας.
Αντίγραφα. Το κρυπτογραφημένο αντίγραφο έχει κωδικό (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 και οι διακομιστές:
- Να διαβάσουν τα αρχεία σας ή τα ονόματά τους. Κάθε μπλοκ ενός αρχείου κρυπτογραφείται με AES-256-GCM με ένα κλειδί της δικής του έκδοσης· τα ονόματα, οι φάκελοι, τα μεγέθη, οι ημερομηνίες και τα κλειδιά πηγαίνουν σφραγισμένα με XChaCha20-Poly1305 με το κλειδί του φακέλου όπου βρίσκονται. Τίποτα δεν προκύπτει από το περιεχόμενο: το ίδιο αρχείο ανεβασμένο δύο φορές δίνει διαφορετικά μπλοκ.
- Να αλλάξουν, να ανταλλάξουν ή να μετακινήσουν οτιδήποτε απαρατήρητα. Κάθε μπλοκ ελέγχεται έναντι του manifest που είναι σφραγισμένο στην καταχώριση του αρχείου του, και κάθε καταχώριση υπογράφεται από το κλειδί τόμου και σφραγίζεται για τη δική της θέση (τόμος, αναγνωριστικό και φάκελος): ένα relay δεν μπορεί να περάσει μια καταχώριση για άλλη, ούτε ένα μπλοκ για άλλο.
- Να φέρουν πίσω μια παλιά έκδοση. Η εφαρμογή δεν δέχεται ποτέ καταχώριση παλαιότερη από αυτήν που ήδη έχει για το ίδιο αναγνωριστικό.
- Να γράψουν ως εσείς μόνο με το κλειδί τόμου. Ό,τι γράφουν οι συσκευές σας φέρει το σήμα του κατόχου, ένα HMAC με ένα κλειδί που δεν δίνει κανένας σύνδεσμος· μια καταχώριση ή μια διαγραφή χωρίς αυτό δεν γίνεται δεκτή, και η εφαρμογή σάς προειδοποιεί.
Τι δεν προστατεύει:
- Το μοτίβο του Drive σας. Τα relay μπορούν να μετρήσουν τα αρχεία και τους φακέλους σας, να δουν το σχήμα του δέντρου και πότε αλλάζει κάθε καταχώριση· οι διακομιστές βλέπουν περίπου πόσο μεγάλο είναι κάθε αρχείο (τα μπλοκ συμπληρώνονται στα 64 KiB, οι καταχωρίσεις σε δύναμη του δύο). Κάθε relay και διακομιστής βλέπει τη διεύθυνση IP σας. Χρησιμοποιήστε Tor ή Orbot σε επίπεδο συστήματος, αν αυτό σας ενδιαφέρει.
- Όσα κάποιος έχει ήδη κατεβάσει. Η αφαίρεση ενός συνδέσμου, ή ενός ατόμου, δίνει αμέσως νέα κλειδιά σε όσα μπορούσε να ανοίξει, ώστε να μην ανοίγει όσα προσθέτετε αργότερα· δεν μπορεί να πάρει πίσω όσα έχει ήδη αποθηκεύσει.
- Έναν σύνδεσμο που διέρρευσε. Ένας σύνδεσμος χωρίς κωδικό πρόσβασης είναι το κλειδί. Το πρόγραμμα περιήγησης μπορεί να τον κρατήσει στο ιστορικό του πριν η σελίδα τον αφαιρέσει από τη γραμμή διευθύνσεων. Για οτιδήποτε ευαίσθητο, βάλτε στον σύνδεσμο κωδικό πρόσβασης, σταλμένο με άλλο τρόπο, ή κοινοποιήστε στον λογαριασμό του ατόμου. Ένας αδύναμος κωδικός μπορεί να σπάσει με τον χρόνο: όποιος έχει τον σύνδεσμο μπορεί να δοκιμάζει εκτός σύνδεσης.
- Τη σελίδα
herkos.app/f/, που εκτελείται στο πρόγραμμα περιήγησης όποιου ανοίγει έναν σύνδεσμο. Εξυπηρετείται με αυστηρό Content-Security-Policy, Subresource Integrity και χωρίς κώδικα τρίτων, αλλά όποιος ελέγχει τη φιλοξενία ιστού θα μπορούσε να εξυπηρετήσει μια διαφορετική σελίδα. Αυτό είναι το όριο κάθε ιστοσελίδας που αποκρυπτογραφεί στο πρόγραμμα περιήγησης. - Όποιον είχε το κλειδί τόμου (το δικό σας, ή δοσμένο με έναν σύνδεσμο προς φάκελο): μπορεί ακόμη να διαγράψει τα μπλοκ που ανέβηκαν με αυτό, μέχρι να ανέβουν ξανά. Μπορείτε να αλλάξετε το κλειδί τόμου (Ρυθμίσεις → Κλειδί τόμου): οι άλλες συσκευές σας ακολουθούν μόνες τους.
- Τη συσκευή σας. Η λίστα των αρχείων φυλάσσεται προσωρινά κρυπτογραφημένη, με το κλειδί της στον ασφαλή χώρο αποθήκευσης του συστήματος· ένα αρχείο που κατεβάζετε ή ανοίγετε γράφεται σε απλή μορφή όπου επιλέγετε. Το PIN του Drive είναι ένα φράγμα ευκολίας, όπως στο Mail.
- Έναν κβαντικό υπολογιστή, αργότερα. Τα μπλοκ και οι σφραγίδες είναι συμμετρικά (AES-256, XChaCha20), αλλά ο εντοπιστής σας κρυπτογραφείται με NIP-44 πάνω σε secp256k1: κάποιος που τον κρατά σήμερα και σπάσει το secp256k1 αύριο θα μπορούσε να ανοίξει ολόκληρο το Drive.
Πώς ελέγχεται. Δύο εσωτερικές αναθεωρήσεις με βάση το μοντέλο απειλών (2 Νοεμβρίου 2026) και οι διορθώσεις τους· δοκιμές για το τι δείχνει κάθε συμβάν και μπλοκ· fuzzing κάθε αναγνώστη όσων έρχονται απ' έξω (συμβάντα, σφραγίδες, manifest, σύνδεσμοι, αντίγραφα ασφαλείας). Δεν υπάρχει ακόμη εξωτερικός έλεγχος: ένας έχει προγραμματιστεί πριν από τη δημόσια beta, και η αναφορά του θα δημοσιευθεί ολόκληρη. Το Drive βρίσκεται ακόμη υπό ανάπτυξη.
Υποστηριζόμενες εκδόσεις
Οι διορθώσεις ασφαλείας εφαρμόζονται στην πιο πρόσφατη κυκλοφορημένη έκδοση. Δεδομένου του μεγέθους του έργου, οι παλαιότερες εκδόσεις δεν συντηρούνται — ενημερώστε την εφαρμογή πριν κάνετε αναφορά.