Herkos

Bezpečnostná politika

Herkos pracuje so súkromnými kľúčmi a šifrovanými správami, preto berieme hlásenia o bezpečnosti vážne a o probléme sa radšej dozvieme skôr ako neskôr.

Nahlásenie zraniteľnosti

Bezpečnostné problémy, prosím, nehláste cez verejné issue.

Nahláste ich súkromne e-mailom na security@herkos.email.

Užitočné je uviesť: o aký problém ide, ako ho zopakovať, na akej platforme a verzii ste testovali a čo by mohol útočník dosiahnuť. Veľmi pomôže proof of concept.

Do hlásenia nikdy nevkladajte svoj nsec, súkromný kľúč ani tajomstvo bunkra.

Snažíme sa potvrdiť prijatie hlásenia do niekoľkých dní. Keďže Herkos je malý projekt, pred zverejnením nám, prosím, nechajte primeraný čas na opravu. Radi vás uvedieme v bezpečnostnom upozornení, pokiaľ si neželáte inak.

Čo patrí do rozsahu

Samotná aplikácia Herkos: práca s kľúčmi a ich ukladanie, šifrovanie a dešifrovanie správ (vrátane kontrol odosielateľa NIP-59 a izolácie skrytej kópie (Bcc) v local_packages/nostr_mail), zámok aplikácie, komunikácia s relé a mostami, spracovanie príloh a proces zostavovania a vydávania. Pri Herkos Drive aj jeho protokolový balík (packages/herkos_drive_protocol) a stránka, ktorá otvára jeho odkazy (herkos.app/f/); pozri jeho vlastnú časť nižšie.

Čo nepatrí do rozsahu

Známe obmedzenia, povedané na rovinu

Ide o kompromisy v návrhu, nie o zraniteľnosti. Radšej ich napíšeme, než aby ich niekto objavil na vlastnej koži:

Herkos Local Relay: čo chráni a čo nie

Herkos Local Relay uchováva vo vašom zariadení udalosti vašich aplikácií, aj tie súkromné (koncepty, súkromné zoznamy, obálky, ktoré dostávate). Toto ich chráni a tu je hranica, platforma po platforme. Bezpečnostné chyby relé hláste rovnako ako všetky ostatné (vyššie).

Celá databáza je šifrovaná, vrátane jej žurnálu (SQLite3 Multiple Ciphers, AEGIS-256). Kľúčom je 32 náhodných bajtov vytvorených v zariadení a uložených v zabezpečenom úložisku systému: Keystore v Androide, DPAPI vo Windows, zväzok kľúčov (libsecret) v Linuxe. Nie je k nemu žiadne vaše heslo, pretože relé sa musí spustiť samo. Bez kľúča sa relé nespustí a povie to: nikdy neotvorí ani nevytvorí nešifrovanú databázu a nikdy nevymaže tú, ktorú nedokáže otvoriť.

Ak… Android Windows Linux
niekto skopíruje súbor databázy (záloha, synchronizovaný priečinok, obraz disku) Chránené Chránené Chránené
vám ukradnú vypnuté zariadenie alebo disk Chránené: kľúč je v Keystore Chránené, pokiaľ nepoznajú heslo vášho prihlásenia do Windows: DPAPI ním chráni kľúč Chránené, pokiaľ nepoznajú heslo vášho zväzku kľúčov (takmer vždy je to heslo vašej relácie)
iný používateľský účet v tom istom zariadení Chránené Chránené: DPAPI je pre každého používateľa zvlášť Chránené: zväzok kľúčov je pre každého používateľa zvlášť
iná aplikácia alebo program bežiaci pod vaším používateľom Chránené: Android oddeľuje každú aplikáciu a Keystore dá kľúč len relé Nie: DPAPI šifruje pre používateľa, nie pre aplikáciu; program bežiaci ako vy si môže o kľúč požiadať rovnako ako relé Nie: zväzok kľúčov vašej relácie neoddeľuje aplikácie od seba
telefón s rootom alebo nástroj, ktorý spúšťa kód ako aplikácia Nie — —
niekto drží odomknuté zariadenie v ruke Len PIN alebo odtlačok prsta relé, ak ste ich nastavili Rovnako Rovnako
niekto číta pamäť relé počas jeho behu Nie Nie Nie

Na počítači je hranica DPAPI a zväzku kľúčov rovnaká ako pri akomkoľvek programe: chránia pred inými používateľmi a pred tým, kto si odnesie disk, nie pred škodlivým programom, ktorý už beží pod vaším používateľom. Ak vás tento prípad znepokojuje, chráni vás šifrovanie systémového disku (BitLocker, LUKS) a to, že nespúšťate programy, ktorým nedôverujete. V Linuxe bez zväzku kľúčov (bez Secret Service) sa relé nespustí a vysvetlí prečo: kľúč nikdy neuchováva nešifrovaný.

Kto sa dostane dnu, priamo v zariadení. Relé počúva len na 127.0.0.1 a k tejto adrese sa dostane každá aplikácia v zariadení aj webová stránka v prehliadači. Preto:

Čo tu nechráni:

Lokálna sieť, ak ju zapnete (predvolene je vypnutá):

Čo tu nechráni: ktokoľvek v tej istej sieti vidí, že zariadenie má otvorený port a koľko cezeň prechádza prevádzky, hoci nie čo; a ak má zariadenie verejnú adresu (bez smerovača medzi), tento port je viditeľný z internetu, hoci stále žiada kľúč z vášho zoznamu.

Zálohy. Šifrovaná záloha má heslo (scrypt a XChaCha20-Poly1305): bez neho ju nikto neotvorí, ani my. Export JSONL nie je šifrovaný a obsahuje vaše súkromné udalosti v čitateľnej podobe; aplikácia vás na to upozorní.

Zámok (PIN, plus odtlačok prsta alebo Windows Hello) sa vyžaduje pri otvorení aplikácie, po 30 sekundách mimo nej a na schválenie spárovania. Je to pohodlná bariéra, ako v Mail: nič nešifruje. V Androide s nastaveným PIN-om nie sú možné snímky obrazovky ani náhľad medzi nedávnymi aplikáciami a od Androidu 12 sa nad okno relé nemôže dostať okno žiadnej inej aplikácie, kým ho používate.

Herkos Drive: čo chráni a čo nie

Herkos Drive uchováva vaše súbory na serveroch Blossom a zoznam vašich súborov a priečinkov na relé Nostr, oboje šifrované vo vašom zariadení. Toto je to, čo ich chráni, a kde sú hranice. Všetky podrobnosti sú v spec-drive.md a v modeli hrozieb amenazas-drive.md, v packages/herkos_drive_protocol/; čo vidí každé relé a server, opisujú zásady ochrany súkromia. Bezpečnostné problémy Drive hláste rovnako ako všetky ostatné (vyššie).

Čo relé a servery urobiť nemôžu:

Čo nechráni:

Ako sa to overuje. Dve interné revízie voči modelu hrozieb (2. novembra 2026) a ich opravy; testy toho, čo ukazuje každá udalosť a každý blok; fuzzing každého čítača toho, čo prichádza zvonku (udalosti, pečate, manifesty, odkazy, zálohy). Zatiaľ žiadny externý audit: jeden sa plánuje pred verejnou betou a jeho správa bude zverejnená celá. Drive je stále vo vývoji.

Podporované verzie

Bezpečnostné opravy sa aplikujú na najnovšiu vydanú verziu. Vzhľadom na veľkosť projektu sa staršie verzie neudržiavajú — pred nahlásením, prosím, aktualizujte.