Herkos

Politica di sicurezza

Herkos gestisce chiavi private e messaggi cifrati, quindi prendiamo sul serio le segnalazioni di sicurezza e preferiamo sapere di un problema presto piuttosto che tardi.

Segnalare una vulnerabilità

Per favore non aprire una issue pubblica per i problemi di sicurezza.

Segnalalo in privato via email a security@herkos.email.

Cose utili da includere: qual è il problema, come riprodurlo, su quale piattaforma e versione l'hai testato e cosa potrebbe ottenere un attaccante. Una prova di concetto aiuta molto.

Non includere mai il tuo nsec, la tua chiave segreta o il segreto del tuo bunker in una segnalazione.

Cerchiamo di confermare la ricezione delle segnalazioni entro pochi giorni. Poiché Herkos è un piccolo progetto, concedi un tempo ragionevole per una correzione prima di renderla pubblica. Saremo lieti di citarti nell'avviso, a meno che tu non preferisca altrimenti.

Cosa rientra nell'ambito

L'applicazione Herkos in sé: gestione e conservazione delle chiavi, cifratura e decifratura dei messaggi (compresi i controlli sul mittente NIP-59 e l'isolamento del Bcc in local_packages/nostr_mail), il blocco dell'app, la comunicazione con relay e bridge, la gestione degli allegati e la pipeline di build e rilascio. Per Herkos Drive, anche il suo pacchetto di protocollo (packages/herkos_drive_protocol) e la pagina che ne apre i link (herkos.app/f/); vedi la sua sezione più sotto.

Cosa non rientra nell'ambito

Limiti noti, detti chiaramente

Questi sono compromessi di progettazione, non vulnerabilità. Preferiamo metterli per iscritto piuttosto che qualcuno li scopra a proprie spese:

Herkos Local Relay: cosa protegge e cosa no

Herkos Local Relay conserva sul tuo dispositivo gli eventi delle tue app, anche quelli privati (bozze, elenchi privati, le buste che ricevi). Ecco cosa li protegge e dov'è il limite, piattaforma per piattaforma. I problemi di sicurezza del relay si segnalano come tutti gli altri (sopra).

Il database è cifrato per intero, journal compreso (SQLite3 Multiple Ciphers, AEGIS-256). La chiave è fatta di 32 byte casuali creati sul dispositivo e conservati nell'archivio sicuro del sistema: il Keystore su Android, DPAPI su Windows, il portachiavi (libsecret) su Linux. Non dipende da una tua password, perché il relay deve avviarsi da solo. Senza la chiave il relay non si avvia e lo dice: non apre né crea mai un database non cifrato, e non elimina mai quello che non riesce ad aprire.

Se… Android Windows Linux
qualcuno copia il file del database (una copia di backup, una cartella sincronizzata, un'immagine del disco) Protetto Protetto Protetto
ti rubano il dispositivo o il disco da spento Protetto: la chiave è nel Keystore Protetto, a meno che chi lo ruba conosca la password della tua sessione di Windows: DPAPI protegge la chiave con quella Protetto, a meno che chi lo ruba conosca la password del tuo portachiavi (quasi sempre quella della tua sessione)
un altro account utente sullo stesso dispositivo Protetto Protetto: DPAPI è per utente Protetto: il portachiavi è per utente
un'altra app o un altro programma in esecuzione con il tuo utente Protetto: Android isola ogni app e il Keystore dà la chiave solo al relay No: DPAPI cifra per utente, non per app; un programma in esecuzione come te può chiedere la chiave proprio come il relay No: il portachiavi della tua sessione non separa le app tra loro
un telefono con root, o uno strumento che esegue codice come l'app No — —
qualcuno ha in mano il dispositivo sbloccato Solo con il PIN o l'impronta del relay, se li imposti Uguale Uguale
qualcuno legge la memoria del relay mentre è in funzione No No No

Sul desktop, il limite di DPAPI e del portachiavi è quello di qualsiasi programma: proteggono dagli altri utenti e da chi si porta via il disco, non da un programma malevolo già in esecuzione con il tuo utente. Se questo caso ti preoccupa, ciò che ti protegge è la cifratura del disco di sistema (BitLocker, LUKS) insieme al non eseguire programmi di cui non ti fidi. Su un Linux senza portachiavi (senza Secret Service) il relay non si avvia e spiega perché: non tiene mai la chiave in chiaro.

Chi entra, sul dispositivo stesso. Il relay ascolta solo su 127.0.0.1, e qualsiasi app del dispositivo, o una pagina web nel browser, può raggiungere quell'indirizzo. Per questo:

Cosa non protegge, qui:

La rete locale, se la attivi (è disattivata per impostazione predefinita):

Cosa non protegge, qui: chi è sulla stessa rete vede che il dispositivo ha una porta aperta e quanto traffico vi passa, ma non cosa; e se il dispositivo ha un indirizzo pubblico (senza router in mezzo), quella porta è visibile da Internet, anche se continua a chiedere una chiave del tuo elenco.

Copie. La copia cifrata ha una password (scrypt e XChaCha20-Poly1305): senza di essa nessuno può aprirla, nemmeno noi. L'esportazione JSONL non è cifrata e contiene i tuoi eventi privati in chiaro; l'app ti avvisa.

Il blocco (PIN, e impronta o Windows Hello) viene chiesto all'apertura dell'app, dopo 30 secondi di assenza, e per approvare un abbinamento. È una barriera di comodità, come in Mail: non cifra nulla. Su Android, con il PIN impostato non ci sono screenshot né anteprima tra le app recenti, e da Android 12 nessuna finestra di un'altra app può sovrapporsi a quella del relay mentre la usi.

Herkos Drive: cosa protegge e cosa no

Herkos Drive conserva i tuoi file su server Blossom e l'elenco dei tuoi file e cartelle su relay Nostr, entrambi cifrati sul tuo dispositivo. Ecco cosa li protegge e dove sono i limiti. Il dettaglio completo è in spec-drive.md e nel modello delle minacce amenazas-drive.md, in packages/herkos_drive_protocol/; cosa vede ogni relay e ogni server è nell'informativa sulla privacy. Segnala i problemi di sicurezza di Drive come qualsiasi altro (vedi sopra).

Cosa relay e server non possono fare:

Cosa non protegge:

Come viene verificato. Due revisioni interne rispetto al modello delle minacce (2 novembre 2026) e le relative correzioni; test di ciò che mostra ogni evento e ogni blocco; fuzzing di ogni lettore di ciò che arriva dall'esterno (eventi, sigilli, manifesti, link, backup). Nessun audit esterno ancora: ne è previsto uno prima della beta pubblica, e il suo rapporto sarà pubblicato integralmente. Drive è ancora in sviluppo.

Versioni supportate

Le correzioni di sicurezza vengono applicate all'ultima versione rilasciata. Viste le dimensioni del progetto, le versioni precedenti non sono mantenute — aggiorna prima di segnalare.