Herkos

Politique de sécurité

Herkos manipule des clés privées et des messages chiffrés : nous prenons donc les signalements de sécurité au sérieux et préférons entendre parler d'un problème tôt plutôt que tard.

Signaler une vulnérabilité

Merci de ne pas ouvrir de ticket public pour un problème de sécurité.

Signalez-le en privé par courriel à security@herkos.email.

Éléments utiles à inclure : la nature du problème, comment le reproduire, la plateforme et la version testées, et ce qu'un attaquant pourrait obtenir. Une preuve de concept aide beaucoup.

N'incluez jamais votre propre nsec, votre clé secrète ou le secret de votre bunker dans un signalement.

Nous nous efforçons d'accuser réception des signalements sous quelques jours. Herkos étant un petit projet, merci de laisser un délai raisonnable pour un correctif avant toute divulgation publique. Nous serons heureux de vous citer dans l'avis de sécurité, sauf si vous préférez le contraire.

Ce qui entre dans le périmètre

L'application Herkos elle-même : la gestion et le stockage des clés, le chiffrement et le déchiffrement des messages (y compris les vérifications d'expéditeur NIP-59 et l'isolation du Cci dans local_packages/nostr_mail), le verrouillage de l'application, la communication avec les relais et les bridges, la gestion des pièces jointes, ainsi que la chaîne de compilation et de publication. Pour Herkos Drive, aussi son paquet de protocole (packages/herkos_drive_protocol) et la page qui ouvre ses liens (herkos.app/f/) ; voir sa propre section plus bas.

Ce qui n'entre pas dans le périmètre

Limites connues, dites franchement

Ce sont des compromis de conception, pas des vulnérabilités. Nous préférons les écrire plutôt que de laisser quelqu'un les découvrir à ses dépens :

Herkos Local Relay : ce qu'il protège et ce qu'il ne protège pas

Herkos Local Relay garde sur votre appareil les événements de vos applications, y compris les privés (brouillons, listes privées, les enveloppes que vous recevez). Voici ce qui les protège et où se trouve la limite, plateforme par plateforme. Les problèmes de sécurité du relais se signalent comme les autres (ci-dessus).

La base de données est entièrement chiffrée, journal compris (SQLite3 Multiple Ciphers, AEGIS-256). La clé est faite de 32 octets aléatoires créés sur l'appareil et conservés dans le stockage sécurisé du système : le Keystore sous Android, DPAPI sous Windows, le trousseau (libsecret) sous Linux. Elle ne dépend d'aucun mot de passe de votre part, car le relais doit démarrer tout seul. Sans la clé, le relais ne démarre pas et le dit : il n'ouvre ni ne crée jamais une base non chiffrée, et ne supprime jamais celle qu'il ne peut pas ouvrir.

Si… Android Windows Linux
quelqu'un copie le fichier de la base (une sauvegarde, un dossier synchronisé, une image du disque) Protégé Protégé Protégé
on vous vole l'appareil ou le disque éteint Protégé : la clé est dans le Keystore Protégé, sauf si le voleur connaît le mot de passe de votre session Windows : DPAPI protège la clé avec lui Protégé, sauf si le voleur connaît le mot de passe de votre trousseau (presque toujours celui de votre session)
un autre compte d'utilisateur du même appareil Protégé Protégé : DPAPI est par utilisateur Protégé : le trousseau est par utilisateur
une autre application ou un autre programme qui tourne sous votre utilisateur Protégé : Android isole chaque application et le Keystore ne donne la clé qu'au relais Non : DPAPI chiffre par utilisateur, pas par application ; un programme qui tourne en votre nom peut demander la clé comme le relais Non : le trousseau de votre session ne sépare pas les applications entre elles
un téléphone rooté, ou un outil qui exécute du code en tant que l'application Non — —
quelqu'un a l'appareil déverrouillé en main Seulement avec le code PIN ou l'empreinte du relais, si vous les avez définis Idem Idem
quelqu'un lit la mémoire du relais pendant qu'il fonctionne Non Non Non

Sur ordinateur, la limite de DPAPI et du trousseau est celle de tout programme : ils protègent contre les autres utilisateurs et contre qui emporte le disque, pas contre un programme malveillant qui tourne déjà sous votre utilisateur. Si ce cas vous inquiète, ce qui vous protège, c'est le chiffrement du disque système (BitLocker, LUKS) et le fait de ne pas lancer de programmes auxquels vous ne faites pas confiance. Sous Linux sans trousseau (sans Secret Service), le relais ne démarre pas et explique pourquoi : il ne garde jamais la clé en clair.

Qui entre, sur l'appareil lui-même. Le relais n'écoute que sur 127.0.0.1, et n'importe quelle application de l'appareil, ou une page web du navigateur, peut atteindre cette adresse. Donc :

Ce qu'il ne protège pas, ici :

Le réseau local, si vous l'activez (il est désactivé par défaut) :

Ce qu'il ne protège pas, ici : quiconque se trouve sur le même réseau voit que l'appareil a un port ouvert et combien de trafic y passe, mais pas son contenu ; et si l'appareil a une adresse publique (sans routeur entre les deux), ce port est visible depuis Internet, même s'il demande toujours une clé de votre liste.

Copies. La copie chiffrée a un mot de passe (scrypt et XChaCha20-Poly1305) : sans lui, personne ne peut l'ouvrir, pas même nous. L'export JSONL n'est pas chiffré et contient vos événements privés en clair ; l'application vous prévient.

Le verrouillage (code PIN, et empreinte ou Windows Hello) est demandé à l'ouverture de l'application, après 30 secondes d'absence, et pour approuver un appairage. C'est une barrière de confort, comme dans Mail : il ne chiffre rien. Sous Android, avec un code PIN, il n'y a ni captures d'écran ni miniature dans les applications récentes, et depuis Android 12, aucune fenêtre d'une autre application ne peut se placer par-dessus celle du relais pendant que vous l'utilisez.

Herkos Drive : ce qu'il protège et ce qu'il ne protège pas

Herkos Drive garde vos fichiers sur des serveurs Blossom et la liste de vos fichiers et dossiers sur des relais Nostr, les deux chiffrés sur votre appareil. Voici ce qui les protège et où sont les limites. Le détail complet se trouve dans spec-drive.md et le modèle de menaces amenazas-drive.md, dans packages/herkos_drive_protocol/ ; ce que voit chaque relais et chaque serveur se trouve dans la politique de confidentialité. Signalez les problèmes de sécurité de Drive de la même façon que tous les autres (voir plus haut).

Ce que les relais et les serveurs ne peuvent pas faire :

Ce qu'il ne protège pas :

Comment c'est vérifié. Deux revues internes au regard du modèle de menaces (2 novembre 2026) et leurs corrections ; des tests de ce que montre chaque événement et chaque bloc ; du fuzzing de chaque lecteur de ce qui vient de l'extérieur (événements, sceaux, manifestes, liens, sauvegardes). Pas encore d'audit externe : un audit est prévu avant la bêta publique, et son rapport sera publié en entier. Drive est encore en développement.

Versions prises en charge

Les correctifs de sécurité sont appliqués à la dernière version publiée. Vu la taille du projet, les versions plus anciennes ne sont pas maintenues — merci de mettre à jour avant de signaler un problème.