Herkos

Politica de securitate

Herkos gestionează chei private și mesaje criptate, așa că luăm în serios rapoartele de securitate și preferăm să aflăm despre o problemă devreme, nu târziu.

Raportarea unei vulnerabilități

Vă rugăm să nu deschideți un issue public pentru problemele de securitate.

Raportați-o în privat prin e-mail la security@herkos.email.

Informații utile de inclus: care este problema, cum poate fi reprodusă, pe ce platformă și versiune ați testat și ce ar putea obține un atacator. O demonstrație practică (proof of concept) ajută mult.

Nu includeți niciodată într-un raport propriul nsec, cheia secretă sau secretul bunkerului.

Ne propunem să confirmăm primirea rapoartelor în câteva zile. Deoarece Herkos este un proiect mic, vă rugăm să lăsați un timp rezonabil pentru o remediere înainte de a face publică problema. Vă menționăm cu plăcere în aviz, dacă nu preferați altfel.

Ce intră în domeniu

Aplicația Herkos propriu-zisă: gestionarea și stocarea cheilor, criptarea și decriptarea mesajelor (inclusiv verificările expeditorului NIP-59 și izolarea Bcc din local_packages/nostr_mail), blocarea aplicației, comunicarea cu releele și punțile, gestionarea atașamentelor și procesul de compilare și publicare. Pentru Herkos Drive, și pachetul său de protocol (packages/herkos_drive_protocol) și pagina care îi deschide linkurile (herkos.app/f/); vedeți secțiunea sa de mai jos.

Ce nu intră în domeniu

Limitări cunoscute, spuse direct

Acestea sunt compromisuri de proiectare, nu vulnerabilități. Preferăm să le scriem aici decât să le descopere cineva pe propria piele:

Herkos Local Relay: ce protejează și ce nu

Herkos Local Relay păstrează pe dispozitivul dvs. evenimentele aplicațiilor dvs., inclusiv pe cele private (ciorne, liste private, plicurile pe care le primiți). Iată ce le protejează și unde este limita, platformă cu platformă. Problemele de securitate ale releului se raportează la fel ca celelalte (mai sus).

Baza de date este criptată în întregime, inclusiv jurnalul (SQLite3 Multiple Ciphers, AEGIS-256). Cheia constă din 32 de octeți aleatori creați pe dispozitiv și păstrați în spațiul de stocare securizat al sistemului: Keystore pe Android, DPAPI pe Windows, portcheiul (libsecret) pe Linux. Nu depinde de nicio parolă a dvs., pentru că releul trebuie să pornească singur. Fără cheie, releul nu pornește și spune asta: nu deschide și nu creează niciodată o bază necriptată și nu o șterge niciodată pe cea pe care nu o poate deschide.

Dacă… Android Windows Linux
cineva copiază fișierul bazei (o copie de rezervă, un dosar sincronizat, o imagine a discului) Protejat Protejat Protejat
vi se fură dispozitivul sau discul în timp ce e oprit Protejat: cheia este în Keystore Protejat, cu excepția cazului în care hoțul știe parola sesiunii dvs. de Windows: DPAPI protejează cheia cu ea Protejat, cu excepția cazului în care hoțul știe parola portcheiului dvs. (aproape mereu, cea a sesiunii dvs.)
un alt cont de utilizator de pe același dispozitiv Protejat Protejat: DPAPI este per utilizator Protejat: portcheiul este per utilizator
o altă aplicație sau un alt program care rulează sub utilizatorul dvs. Protejat: Android izolează fiecare aplicație, iar Keystore dă cheia doar releului Nu: DPAPI criptează per utilizator, nu per aplicație; un program care rulează în numele dvs. poate cere cheia la fel ca releul Nu: portcheiul sesiunii dvs. nu separă aplicațiile între ele
un telefon cu root, sau un instrument care execută cod ca aplicația Nu — —
cineva ține în mână dispozitivul deblocat Doar cu PIN-ul sau amprenta releului, dacă le setați La fel La fel
cineva citește memoria releului în timp ce rulează Nu Nu Nu

Pe desktop, limita DPAPI și a portcheiului este cea a oricărui program: protejează împotriva altor utilizatori și a celui care ia discul, nu împotriva unui program rău intenționat care rulează deja sub utilizatorul dvs. Dacă vă îngrijorează acest caz, ceea ce vă protejează este criptarea discului de sistem (BitLocker, LUKS), împreună cu a nu rula programe în care nu aveți încredere. Pe un Linux fără portchei (fără Secret Service), releul nu pornește și explică de ce: nu păstrează niciodată cheia ca text simplu.

Cine intră, pe dispozitivul însuși. Releul ascultă doar pe 127.0.0.1, iar orice aplicație de pe dispozitiv, sau o pagină web din browser, poate ajunge la acea adresă. De aceea:

Ce nu protejează, aici:

Rețeaua locală, dacă o activați (este dezactivată implicit):

Ce nu protejează, aici: cine se află în aceeași rețea vede că dispozitivul are un port deschis și cât trafic trece prin el, dar nu și ce anume; iar dacă dispozitivul are o adresă publică (fără router la mijloc), acel port se vede din Internet, chiar dacă cere în continuare o cheie din lista dvs.

Copii. Copia criptată are parolă (scrypt și XChaCha20-Poly1305): fără ea nimeni nu o poate deschide, nici noi. Exportul JSONL nu este criptat și conține evenimentele dvs. private ca text simplu; aplicația vă avertizează.

Blocarea (PIN, plus amprentă sau Windows Hello) este cerută la deschiderea aplicației, după 30 de secunde de absență și pentru aprobarea unei asocieri. Este o barieră de comoditate, ca în Mail: nu criptează nimic. Pe Android, cu PIN setat nu există capturi de ecran și nici miniatură în aplicațiile recente, iar începând cu Android 12 nicio fereastră a altei aplicații nu se poate suprapune peste cea a releului cât timp o folosiți.

Herkos Drive: ce protejează și ce nu

Herkos Drive vă păstrează fișierele pe servere Blossom și lista fișierelor și dosarelor dvs. pe relee Nostr, ambele criptate pe dispozitivul dvs. Iată ce le protejează și unde sunt limitele. Detaliile complete se află în spec-drive.md și în modelul de amenințări amenazas-drive.md, în packages/herkos_drive_protocol/; ce vede fiecare releu și server se află în politica de confidențialitate. Raportați problemele de securitate ale Drive la fel ca pe oricare altele (mai sus).

Ce nu pot face releele și serverele:

Ce nu protejează:

Cum este verificat. Două revizuiri interne pe baza modelului de amenințări (2 noiembrie 2026) și corecturile lor; teste a ceea ce arată fiecare eveniment și bloc; fuzzing pentru fiecare cititor a ceea ce vine din exterior (evenimente, sigilii, manifeste, linkuri, copii de rezervă). Încă niciun audit extern: unul este planificat înainte de beta publică, iar raportul său va fi publicat integral. Drive este încă în dezvoltare.

Versiuni acceptate

Remedierile de securitate se aplică ultimei versiuni publicate. Având în vedere dimensiunea proiectului, versiunile mai vechi nu sunt întreținute — vă rugăm să actualizați înainte de a raporta.