Tietoturvakäytäntö
Herkos käsittelee yksityisiä avaimia ja salattuja viestejä, joten otamme tietoturvailmoitukset vakavasti ja kuulemme ongelmasta mieluummin aikaisin kuin myöhään.
Haavoittuvuuden ilmoittaminen
Älä avaa julkista issueta tietoturvaongelmista.
Ilmoita siitä yksityisesti GitHubin yksityisen haavoittuvuusilmoituksen kautta tai sähköpostilla osoitteeseen security@herkos.email.
Hyödyllistä kerrottavaa: mikä ongelma on, miten sen voi toistaa, millä alustalla ja versiolla testasit ja mitä hyökkääjä voisi saavuttaa. Konseptitodiste (proof of concept) auttaa paljon.
Älä koskaan liitä ilmoitukseen omaa nsec-avaintasi, salaista avaintasi tai bunkkerisi salaisuutta.
Pyrimme kuittaamaan ilmoitukset muutamassa päivässä. Koska Herkos on pieni projekti, annathan kohtuullisesti aikaa korjaukselle ennen julkista paljastamista. Mainitsemme sinut mielellämme tiedotteessa, ellet toivo toisin.
Mikä kuuluu piiriin
Itse Herkos-sovellus: avainten käsittely ja tallennus, viestien salaus ja
purku (mukaan lukien NIP-59-lähettäjätarkistukset ja Bcc-eristys
hakemistossa local_packages/nostr_mail), sovelluslukko, viestintä välityspalvelinten ja
siltojen kanssa, liitteiden käsittely sekä koonti- ja julkaisuketju.
Mikä ei kuulu piiriin
- Itse Nostr-protokolla ja sen NIPit — ilmoita niistä alkulähteelle.
- Kolmansien osapuolten ylläpitämät välityspalvelimet, sillat ja Blossom-palvelimet. Herkosissa on oletukset, mutta se ei ylläpidä niitä; ilmoita ongelmista niiden ylläpitäjille.
- Alkuperäinen projekti Nostr Mail Client, ellei ongelma liity nimenomaan Herkosissa tehtyihin muutoksiin.
- Puuttuva koventaminen, jonka olemme jo dokumentoineet tunnetuksi rajoitukseksi (ks. alla).
Tunnetut rajoitukset suoraan sanottuina
Nämä ovat suunnitteluun liittyviä kompromisseja, eivät haavoittuvuuksia. Kirjoitamme ne mieluummin auki kuin annamme jonkun löytää ne kantapään kautta:
- Perinteisiin osoitteisiin menevä posti ei ole päästä päähän salattua. Nostr-käyttäjien väliset viestit käyttävät NIP-17-gift wrapia ja ovat päästä päähän salattuja. Kun kirjoitat tavalliseen sähköpostiosoitteeseen, silta muuntaa viestin ja voi lukea sen.
- Sovelluslukko (PIN ja biometriikka) on mukavuuseste, ei tallennettujen tietojen salaus. Se pysäyttää jonkun, joka nostaa lukitsemattoman laitteen käteensä; se ei suojaa hyökkääjältä, jolla on täysi pääsy laitteeseen tai sen tallennustilaan.
- Windowsissa pelkkää biometristä tunnistusta ei voi pakottaa. Windows Hello ei anna valita menetelmää, joten järjestelmän PIN-koodi on aina käytettävissä varavaihtoehtona.
- Avaimen menettäminen tarkoittaa tilin menettämistä. Palautusta ei ole, tarkoituksella.
- Metatietoja ei ole täysin piilotettu. Välityspalvelimet voivat havaita yhteysmalleja, ja jokainen välityspalvelin näkee IP-osoitteesi, vaikka ne eivät voisi lukea viestien sisältöä. Mitä Herkos ei paljasta (30.9.2026 alkaen), on se, kuka kirjoittaa kenelle, kun välityspalvelin pyytää NIP-42-tunnistautumista:
- Toimitusosoitteen selvittäminen. Vastaanottajan välityspalvelin- ja Blossom-listoja
pyydetään erillisellä yhteydellä, joka ei koskaan tunnista sinua, ensin
välityspalvelimilta, jotka eivät vaadi tunnistautumista (
purplepag.es,user.kindpag.es,nos.lol,offchain.pub). - Profiilit ja ajastin. Muiden ihmisten nimi ja kuva (kind 0) sekä ajastus-DVM:n välityspalvelinlista, kun ajastat tai perut sähköpostin, pyydetään samalla tavalla: ensin anonyymisti ja, jos välityspalvelin vaatii, alla kuvatulla väliaikaisella avaimella, ei koskaan omallasi (1.10.2026 alkaen; aiemmin tunnistautumista pyytänyt välityspalvelin sai avaimesi ja saattoi päätellä, kenen profiilia katsoit). Vain oma profiilisi luetaan yhä sinuna.
- Toimittaminen. Gift wrapit menevät vastaanottajan yksityisviestien välityspalvelimille samaa erillistä yhteyttä pitkin. Jos jokin niistä vaatii tunnistautumista, Herkos vastaa tähän tarkoitukseen luodulla, vain muistissa säilytettävällä avaimella, ei koskaan omallasi; jokaisella laitteen tilillä on omansa. Välityspalvelin voi silti nähdä, että sama laite (sama IP, sama väliaikainen avain) lähetti useita kirjekuoria istunnon aikana.
- Suuret sähköpostit. Yli 32 kt:n sähköpostin salattu kopio ladataan Blossom-palvelimille, myös vastaanottajien palvelimille. Vain omat palvelimesi (oma Blossom-listasi) saavat avaimellasi valtuutetun latauksen. Kaikki muut palvelimet saavat sen anonyymisti ja, jos ne vaativat valtuutusta, samalla väliaikaisella avaimella allekirjoitettuna kuin edellä (1.10.2026 alkaen; aiemmin jokainen palvelin sai avaimesi). Palvelin, joka hyväksyy vain tunnetut avaimet, hylkää sen, ja kopio jää muille palvelimille.
- Omat tietosi. Postilaatikon, tunnisteiden, asetusten ja luonnosten synkronointi tunnistautuu, jos välityspalvelin sitä pyytää, sinä tilinä, jolle tiedot kuuluvat, myös tilinvaihdon aikana. Omille välityspalvelimillesi se ei kerro mitään, mitä ne eivät jo tietäisi: pyynnöt nimeävät avaimesi joka tapauksessa. Omat välityspalvelin- ja Blossom-listasi ovat julkisia, ja ne pyydetään tunnistamatta sinua, kuten myös sähköpostin linkissä mainitut välityspalvelimet.
- Lukutila ja kansiot ovat julkista metatietoa (toistaiseksi). Sähköpostin merkitseminen luetuksi, tähdellä, arkistoiduksi tai siirretyksi julkaisee salaamattoman NIP-32-tunnistetapahtuman, joka on sidottu julkiseen avaimeesi, mukaan lukien omien kansioiden nimet. Lähettäjä, joka tietää sinulle lähettämänsä sähköpostin tunnisteen, voi päätellä, milloin käsittelit sen. Näiden tunnisteiden salaus on suunnitteilla; siihen asti pidä kansioiden nimiä julkisina.
- Push-ilmoitukset ja ajastettu lähetys käyttävät kolmansien osapuolten palveluja.
Push-palvelin (oletuksena
api.nmail.li) saa tietää julkisen avaimesi, push-tunnisteen ja milloin saat postia; ajastus-DVM saa tietää julkisen avaimesi ja ne jo salatut viestit, jotka sen on julkaistava. Molemmat ovat valinnaisia ja dokumentoitu tiedostossaPRIVACY.md. Push-ilmoituksen tekstin valitsee push-palvelin, ja Herkos luottaa siihen vain, kun UnifiedPush toimittaa sen salattuna (RFC 8291); salaamaton sisältö vain herättää sovelluksen hakemaan postin itse. - Verkkoversio säilyttää avaintasi selaimessa, joka on sille heikoin paikka. Asennetut sovellukset antavat salaisen avaimesi käyttöjärjestelmän suojattuun säilöön (Android Keystore, Windowsin tunnistetietojen hallinta, libsecret, iOS:n/macOS:n avainnippu). Selaimessa ei ole mitään näistä: avain on sivuston tallennustilassa ja kulkee JavaScriptin läpi jokaisessa allekirjoituksessa, kaiken sivulla suoritettavan koodin ulottuvilla — kaikille sivuille pääsevän selainlaajennuksen, sovelluksen tai sen riippuvuuden XSS-haavoittuvuuden, muokatun julkaisun — sekä minkä tahansa selainprofiilin kopioivan tietovarkaan (infostealer) ulottuvilla. Lisäksi ei ole hetkeä, jolloin tarkistaisit koodin kerran: allekirjoitettu binääri tarkistetaan asennettaessa, kun taas verkkosivu toimittaa uutta koodia joka käynnillä. Kirjaudu verkkoversioon etäallekirjoittajalla (NIP-46-bunkkeri, Amber), jotta avain ei koskaan päädy selaimeen, tai pidä sitä kertakäyttöisenä identiteettinä ja säilytä oikea avaimesi asennetussa sovelluksessa.
- Sillan kautta tullut posti on vain niin luotettavaa kuin silta. Herkos tarkistaa, että
sillan kautta tulleeksi merkitty viesti on todella allekirjoitettu sillalla, jonka olet
määrittänyt (tai jollakin oletussilloista). Se ei voi tarkistaa mitään sillan välittämästä
perinteisestä
From:-osoitteesta. - Liitteet avaa käyttöjärjestelmä. Herkos ei koskaan käynnistä suoritettavia tiedostoja tai skriptitiedostoja ja kysyy ennen kuin antaa minkään muun esikatselukelvottoman liitteen järjestelmän oletussovellukselle, mutta tiedoston avaava sovellus on hallintamme ulkopuolella.
Tuetut versiot
Tietoturvakorjaukset tehdään uusimpaan julkaistuun versioon. Projektin koon vuoksi vanhempia versioita ei ylläpidetä — päivitä ennen kuin ilmoitat.