Bezpečnostní zásady
Herkos pracuje se soukromými klíči a šifrovanými zprávami, proto bereme hlášení o bezpečnosti vážně a o problému se raději dozvíme dřív než později.
Hlášení zranitelnosti
Bezpečnostní problémy prosím nehlaste ve veřejném issue.
Nahlaste je soukromě přes GitHub, soukromým hlášením zranitelnosti, nebo e-mailem na security@herkos.email.
Hodí se uvést: v čem problém spočívá, jak ho reprodukovat, na jaké platformě a verzi jste testovali a čeho by mohl útočník dosáhnout. Hodně pomůže proof of concept.
Do hlášení nikdy nevkládejte svůj nsec, tajný klíč ani tajemství bunkeru.
Snažíme se hlášení potvrdit během několika dní. Herkos je malý projekt, proto prosím před zveřejněním ponechte přiměřený čas na opravu. V bezpečnostním oznámení vás rádi uvedeme jako autora nálezu, pokud si nepřejete jinak.
Co do rozsahu patří
Samotná aplikace Herkos: práce s klíči a jejich ukládání, šifrování a
dešifrování zpráv (včetně kontrol odesílatele NIP-59 a izolace Bcc
v local_packages/nostr_mail), zámek aplikace, komunikace s relé a mosty,
práce s přílohami a proces sestavení a vydávání.
Co do rozsahu nepatří
- Samotný protokol Nostr a jeho NIPy — ty hlaste u jejich autorů.
- Relé, mosty a servery Blossom provozované třetími stranami. Herkos je nabízí ve výchozím nastavení, ale neprovozuje je; problémy hlaste jejich provozovatelům.
- Původní projekt Nostr Mail Client, pokud se problém netýká přímo změn provedených v Herkosu.
- Chybějící zabezpečení, které už dokumentujeme jako známé omezení (viz níže).
Známá omezení, řečeno na rovinu
Jde o kompromisy v návrhu, ne o zranitelnosti. Raději je sepíšeme, než aby je někdo objevil na vlastní kůži:
- Pošta na tradiční adresy není koncově šifrovaná. Zprávy mezi uživateli Nostru používají NIP-17 gift wrap a jsou šifrované E2E. Když píšete na běžnou e-mailovou adresu, most zprávu převádí a může ji číst.
- Zámek aplikace (PIN a biometrie) je pohodlná bariéra, ne šifrování uložených dat. Zastaví někoho, kdo zvedne odemčené zařízení; nechrání před útočníkem s plným přístupem k zařízení nebo k jeho úložišti.
- Ve Windows nelze vynutit ověření pouze biometrií. Windows Hello neumožňuje zvolit metodu, takže systémový PIN zůstává vždy k dispozici jako záloha.
- Ztráta klíče znamená ztrátu účtu. Žádná obnova neexistuje, záměrně.
- Metadata nejsou zcela skrytá. Relé mohou pozorovat vzorce připojení a každé relé vidí vaši IP adresu, i když nemůže číst obsah zpráv. Co Herkos (od 30. 9. 2026) neprozrazuje, je, kdo píše komu, když relé žádá ověření NIP-42:
- Zjišťování, kam doručit. Seznamy relé a serverů Blossom příjemce se
zjišťují přes samostatné připojení, které vás nikdy neidentifikuje, nejprve na
relé, která ověření nevyžadují (
purplepag.es,user.kindpag.es,nos.lol,offchain.pub). - Profily a plánovač. Jméno a obrázek zobrazované u kohokoli jiného (kind 0) a seznam relé plánovacího DVM, když naplánujete nebo zrušíte e-mail, se zjišťují stejně: nejprve anonymně, a pokud relé trvá na ověření, dočasným klíčem popsaným níže, nikdy vaším (od 1. 10. 2026; předtím relé, které žádalo ověření, dostalo váš klíč a mohlo poznat, čí profil si prohlížíte). Jen váš vlastní profil se stále čte jako vy.
- Doručování. Gift wraps putují na relé pro soukromou poštu příjemce, přes stejné samostatné připojení. Pokud některé z nich vyžaduje ověření, Herkos odpoví klíčem vytvořeným pro tento účel a drženým jen v paměti, nikdy vaším; každý účet v zařízení má svůj vlastní. Relé přesto může vidět, že stejné zařízení (stejná IP, stejný dočasný klíč) během relace odeslalo několik obálek.
- Velké e-maily. Šifrovaná kopie e-mailu nad 32 KB se nahrává na servery Blossom, včetně serverů příjemců. Jen vaše vlastní servery (váš seznam Blossom) dostanou nahrání autorizované vaším klíčem. Každý jiný server ho dostane anonymně, a pokud trvá na autorizaci, podepsané stejným dočasným klíčem jako výše (od 1. 10. 2026; předtím každý server dostal váš klíč). Server, který přijímá jen známé klíče, ho odmítne a kopie zůstane na ostatních serverech.
- Vaše vlastní data. Synchronizace vaší schránky, štítků, nastavení a konceptů se tam, kde to relé žádá, ověřuje jako účet, kterému data patří, i během přepínání účtů. Vašim vlastním relé to neříká nic, co by nevěděla: požadavky váš klíč stejně uvádějí. Vaše vlastní seznamy relé a serverů Blossom jsou veřejné a zjišťují se bez vaší identifikace, stejně jako relé uvedená v odkazu v e-mailu.
- Stav přečtení a složky jsou (zatím) veřejná metadata. Označení e-mailu jako přečteného, s hvězdičkou, archivovaného nebo přesunutého zveřejní nešifrovanou událost štítku NIP-32 spojenou s vaším veřejným klíčem, včetně názvů vlastních složek. Odesílatel, který zná id e-mailu, jež vám poslal, může poznat, kdy jste s ním něco udělali. Šifrování těchto štítků je v plánu; do té doby berte názvy složek jako veřejné.
- Push oznámení a plánované odesílání využívají služby třetích stran.
Push server (ve výchozím stavu
api.nmail.li) se dozví váš veřejný klíč, push token a kdy přijímáte poštu; plánovací DVM se dozví váš veřejný klíč a už zašifrované zprávy, které má zveřejnit. Obojí je volitelné a popsané vPRIVACY.md. Text push oznámení volí push server a Herkos mu věří, jen když ho UnifiedPush doručí šifrovaný (RFC 8291); nešifrovaný obsah aplikaci jen probudí, aby si poštu stáhla sama. - Webová verze drží váš klíč v prohlížeči, což je pro něj nejslabší místo. Nainstalované aplikace předávají váš tajný klíč zabezpečenému úložišti operačního systému (Android Keystore, Správce pověření Windows, libsecret, iOS/macOS Keychain). Prohlížeč nic z toho nemá: klíč leží v úložišti původu (origin) a při každém podpisu jím prochází JavaScript, v dosahu jakéhokoli kódu, který na stránce běží — rozšíření prohlížeče s přístupem ke všem webům, chyby XSS v aplikaci nebo v závislosti, podvrženého nasazení — i jakéhokoli infostealeru, který zkopíruje profil prohlížeče. Neexistuje ani okamžik, kdy byste kód jednou ověřili: podepsaný binární soubor se kontroluje při instalaci, zatímco webová stránka při každé návštěvě dodává nový kód. Do webové verze se přihlaste vzdálenou podpisovou aplikací (bunker NIP-46, Amber), aby se klíč do prohlížeče nikdy nedostal, nebo ji berte jako identitu na jedno použití a svůj skutečný klíč držte v nainstalované aplikaci.
- Pošta přes most je jen tak důvěryhodná jako most. Herkos ověřuje, že
zpráva označená jako doručená přes most byla opravdu podepsána mostem, který
máte nastavený (nebo jedním z výchozích). Nemůže ale nic ověřit o
tradiční adrese
From:, kterou most předává. - Přílohy otevírá operační systém. Herkos nikdy nespouští spustitelné soubory ani skripty a před předáním jakékoli jiné přílohy bez náhledu výchozí systémové aplikaci se zeptá, ale aplikace, která soubor otevře, je mimo naši kontrolu.
Podporované verze
Bezpečnostní opravy se vydávají pro nejnovější vydanou verzi. Vzhledem k velikosti projektu se starší verze neudržují — před nahlášením prosím aktualizujte.