MasterSafe Authenticator: yksityinen, offline-tilassa toimiva autentikaattori ja salasanaholvi
Työpöytäsovellukseni kertakäyttökoodeille ja salasanoille: miten se toimii, miten koodi on rakennettu, kaikki ominaisuudet ja suora arvio sen turvallisuudesta.
MasterSafe Authenticator on työpöytäsovellus, jota kehitän .NET 10:llä Windowsille ja Linuxille. Se luo tilejäsi suojaavat kertakäyttökoodit (TOTP ja HOTP) ja säilyttää ne salasanojesi kanssa salatussa holvissa omalla tietokoneellasi. Se ei tarvitse tiliä eikä pilveä, eikä se lähetä telemetriaa. Ainoa verkkoyhteys, jonka se koskaan muodostaa, on itse valitsemaasi varmuuskopiopalvelimeen.
Mitä nimi lupaa ja mitä ei: mikään ohjelmisto ei ole murtamaton. Tällä sivulla kerron, mitä MasterSafe suojaa, miten ja missä sen rajat ovat.
297
automaattista testimetodia repositoriossa
27 / 41
OWASP ASVS -kohtaa täyttyy itsearviossani
0
telemetriaa, tilejä tai lokitiedostoja
Kaikki mitä se tekee
Kaikki sovelluksen ominaisuudet käyttötarkoituksen mukaan ryhmiteltyinä. Käyttöliittymä on toistaiseksi englanninkielinen.
TOTP ja HOTP
RFC 6238 ja RFC 4226, SHA-1, SHA-256 tai SHA-512 sekä 6 tai 8 numeroa. Lisää tilejä otpauth://-linkistä tai QR-koodikuvasta: vedä kuva ikkunaan tai valitse tiedosto.
Salasanaholvi
KeePass-tyyliset merkinnät ja salasanageneraattori. Kopioidut koodit ja salasanat poistetaan leikepöydältä 30 sekunnin kuluttua.
Kansiot ja joukkotoiminnot
Salasanojen kansiopuu, jossa jokaiselle kansiolle voi valita kuvakkeen 24 vaihtoehdosta. Voit luoda, nimetä uudelleen, siirtää ja poistaa kansioita sekä valita useita merkintöjä siirrettäväksi tai poistettavaksi yhdessä.
Liitetiedostot
Liitä merkintään tiedostoja, enintään 5 MiB tiedostoa kohden ja 50 MiB holvia kohden. Ne säilyvät salattuina holvissa ja sisältyvät palautusvarmuuskopioihin.
Kolme avaustapaa
Pääsalasana (Argon2id), Windows Hello tai FIDO2-turva-avain, testattu Thales SafeNet -avaimella. Jokaisella on oma avainpaikkansa.
Automaattinen lukitus
Holvi lukittuu valitsemasi käyttämättömyysajan jälkeen. Lukitus pyyhkii avaimen ja puretut tiedot muistista.
Salatut varmuuskopiot
.sauth-varmuuskopiot paikalliseen kansioon tai WebDAV-palvelimelle, kuten Nextcloudiin tai ownCloudiin, vain https-yhteydellä. Selväkielistä vientiä ei ole.
Palautusavain
Palautusavain ja palautusvarmuuskopiot tuovat tietosi takaisin, jos unohdat pääsalasanan. Sovellus voi luoda avaimen salalauseen puolestasi. Takaovea ei ole.
Holvit-sivu
Näyttää, missä tiedostosi ovat, avaa minkä tahansa holvitiedoston (USB-muistilta tai toisesta kansiosta) ja arkistoi tai poistaa vanhat holvit vahvistuksen jälkeen.
KeePass-tuonti
Lukee KeePassin ja KeePassXC:n XML- tai CSV-viennit. Ryhmistä tulee kansioita, ja XML-vientien liitetiedostot tuodaan mukana. Ensin näytetään yhteenveto, eikä mitään lisätä ennen vahvistusta.
Tarkistettavat lataukset
Jokaisella tiedostolla on SHA-256-tarkiste ja kvanttiturvallinen ML-DSA-65-allekirjoitus, ja pieni työkalu tarkistaa ne kaikki kerralla.
Päivittäinen käyttö
Ilmoitusalue, vaalea ja tumma teema, sovelluksen sisäinen ohje ja asetukset, jotka säilyvät käyttökerrasta toiseen.
Näin holvi suojaa tietojasi
Tilisi ja salasanasi salataan yhdellä satunnaisella 256-bittisellä data-avaimella. Avainta ei koskaan tallenneta sellaisenaan. Se säilytetään kerran kutakin avaustapaa kohden avainpaikassa (slot) suojattuna avaimella, jonka vain kyseinen avaustapa voi tuottaa. Siksi pääsalasanan vaihtaminen tai Windows Hellon lisääminen ei koskaan salaa holvia uudelleen.
- Kaikki on todennettu. AES-256-GCM suojaa sisällön, ja myös otsikko ja avainpaikat on sidottu siihen. Yhden holvin osia ei voi siirtää toiseen, eikä avainpaikan tyyppiä voi vaihtaa.
- Tallennus on atominen. Uusi tiedosto kirjoitetaan ja viedään levylle ensin, sitten se vaihdetaan paikalleen, ja edellinen versio jää nimellä
vault.sauth.bak. - Tiedostoihin ei luoteta. Argon2-parametrit, tiedostokoot (holvit ja varmuuskopiot 100 MiB), purettu koko (96 MiB) ja liitetiedostot (5 MiB kukin, yhteensä 50 MiB) rajataan ennen työn aloittamista, joten väärennetty tiedosto ei voi kuluttaa muistia loppuun.
- Väärä avain ei koskaan korvaa tietoja. Ennen tallennusta varmistetaan, että avain avaa nykyisen holvin.
Miten koodi on rakennettu
Ratkaisu on kirjoitettu C#:lla .NET 10:lle, ja sen Avalonia 12 (avautuu uuteen välilehteen) -käyttöliittymä noudattaa MVVM-mallia. Se on jaettu pieniin projekteihin. Riippuvuudet kulkevat yhteen suuntaan: toimialakerros ei tiedä näkymistä mitään, ja kaikki kryptografia on yhdessä kirjastossa. Vain Windowsiin liittyvä koodi on #if WINDOWS -ehdon takana, ja avaustavat toteuttavat yhden rajapinnan, ISecretProvider, joten holvin tiedostomuoto ei riipu alustasta.
Jokaisella projektilla on yksi tehtävä, ja voit lukea ne kaikki GitHubissa:
| Projekti | Tehtävä |
|---|---|
MasterSafe.Core (avautuu uuteen välilehteen) | RFC 6238 TOTP, RFC 4226 HOTP, Base32, otpauth-jäsennin, tili-, salasana- ja liitemallit, KeePass-tuonti |
MasterSafe.Crypto (avautuu uuteen välilehteen) | Argon2id, AES-256-GCM, holvimuoto 3 ja avainpaikat, liitetiedostojen säiliö, atominen tiedostotallennus, rajattu GZip |
MasterSafe.PostQuantum (avautuu uuteen välilehteen) | ML-KEM-768, hybridi ECDH P-384 + ML-KEM-768, julkaisujen ML-DSA-65-allekirjoitus |
MasterSafe.Backup (avautuu uuteen välilehteen) | Salasanalla ja palautusavaimella salatut varmuuskopiot, paikallinen kansio ja WebDAV |
MasterSafe.Platform (avautuu uuteen välilehteen) | Windows Hello- ja FIDO2-avaus, ilmoitusalue |
MasterSafe.QR (avautuu uuteen välilehteen) | QR-koodien luku ja luonti ZXing.Netillä ja SkiaSharpilla |
MasterSafe.App (avautuu uuteen välilehteen) | Avalonia-työpöytäkäyttöliittymä: näkymät, näkymämallit ja palvelut |
MasterSafe.Cli (avautuu uuteen välilehteen) | Julkaisutyökalut: verify-release, verify, fingerprint, keygen, sign |
Sovelluksessa on noin 12 400 riviä C#:ta ja XAMLia src-kansiossa ja lisäksi noin 6 000 riviä testejä. Testit kattavat RFC-testivektorit, holvin tietoturvan ja näkymämallit. MasterSafe.Data on tallennuskirjasto, jota sovellus ei tällä hetkellä käytä.
.cs- ja .axaml-tiedostojen rivit projekteittain tyhjät rivit mukaan lukien, versio 1.3.1. Testit on merkitty harmaalla.
Tässä on pieni, todellinen esimerkki säännöstä, jonka mukaan tiedostoihin ei luoteta. Argon2-parametrit tulevat holvitiedostosta, joten Models.cs (avautuu uuteen välilehteen) tarkistaa ne ennen muistin varaamista:
public void Validate()
{
if (DegreeOfParallelism is < 1 or > MaxParallelism
|| Iterations is < 1 or > MaxIterations
|| MemorySizeKib < 8 * DegreeOfParallelism
|| MemorySizeKib > MaxMemorySizeKib
|| KeyLength != 32)
{
throw new InvalidDataException("The key-derivation parameters in this file are outside the accepted range.");
}
}
Muita hyviä aloituskohtia ovat VaultService.cs (avautuu uuteen välilehteen) avainpaikoille, HybridKemProvider.cs (avautuu uuteen välilehteen) hybridimallille ja Fido2HmacSecretProvider.cs (avautuu uuteen välilehteen) turva-avaimille. Yhtään kryptografista algoritmia ei ole kirjoitettu käsin: ne tulevat .NETistä, käyttöjärjestelmästä ja julkisesta Argon2-kirjastosta.
Jos unohdat pääsalasanan
Takaovea ei ole, joten kadonnutta salasanaa ei voi nollata. Sen sijaan siihen varaudutaan etukäteen. Recovery-sivulla luot palautusavaimen ja aika ajoin palautusvarmuuskopion, jonka vain tämä avain voi avata. Sen voi kirjoittaa mikä tahansa laite, jolla on julkinen avain, eikä sen luomiseen tarvita salasanaa. Voit valita salalauseen itse tai antaa MasterSafen luoda sen: 30 satunnaista merkkiä ilman toisiaan muistuttavia kirjaimia. Se näytetään vain kerran, jotta voit kirjoittaa sen muistiin.
.msrk-tiedostossa, jota suojaa vähintään 12 merkin salalause, ja tiedosto säilytetään muualla kuin tällä tietokoneella.
- Kokeile ensin toista avaustapaa. Windows Hello tai turva-avain saattaa yhä avata holvin.
- Sen jälkeen palauta palautusvarmuuskopio uuteen holviin kirjautumisnäkymän "Forgot your master password?" -toiminnolla.
- Viimeisenä aloita uusi holvi. Vanha siirtyy arkistoon, sitä ei koskaan poisteta, ja sen voi avata, jos salasana löytyy.
Entä kvanttitietokoneet?
Tänään varastettu salattu data voidaan säilyttää ja murtaa myöhemmin, joten sovelluksen jokainen osa on arvioitu erikseen. ML-KEM ja ML-DSA tulevat .NET 10:stä ja käyttöjärjestelmästä (Windows CNG, Linuxissa OpenSSL 3.5+). Jos tarjoaja puuttuu, koodi pysähtyy eikä tuota heikkoa tulosta.
| Osa | Kvanttitietokoneen vaikutus | Tilanne |
|---|---|---|
| Levyllä oleva holvi | Shorin algoritmi ei päde. Grover laskee AES-256:n noin 128 bittiin | Turvassa vahvalla salalauseella |
| Palautusvarmuuskopiot | Pelkkä RSA tai elliptiset käyrät murtuisivat | Hybridi ECDH P-384 + ML-KEM-768: pysyy salassa, jos kumpi tahansa kestää |
| Julkaisutiedostot | RSA- tai ECDSA-allekirjoitukset voitaisiin väärentää | Allekirjoitettu ML-DSA-65:llä (FIPS 204) |
| Turva-avaimen paikka | Symmetrinen HMAC-SHA-256 avaimen sisällä | Ei vaikuta samalla tavalla kuin RSA:han; avain ja PIN tarvitaan yhä |
| Windows Hellon paikka | Käyttää TPM:n RSA-avainta | Ei vielä kvanttiturvallinen. Turvassa, jos hyökkääjällä on vain holvitiedosto. Jos tämä on sinulle tärkeää, älä lisää Helloa |
Kuinka turvallinen se siis on?
Rehellinen vastaus riippuu siitä, kuka hyökkää ja milloin. Tämä on repositorion uhkamalli:
| Hyökkääjä | Voiko hän lukea holvin? | Miksi |
|---|---|---|
| Varastaa holvin tai varmuuskopion | Vain arvaamalla pääsalasanan | AES-256-GCM ja Argon2id. Pitkä salalause on ratkaiseva |
| Muokkaa holvitiedostoa | Ei | Kaikki on todennettu, joten vioittunutta tiedostoa ei avata |
| Tekee vihamielisen tiedoston | Ei | Parametrit, koot ja purku rajataan ensin |
| Seuraa verkkoa | Ei | Ulos lähtee vain salattua dataa, ja WebDAV vaatii https-yhteyden |
| Haittaohjelma, kun holvi on lukittu | Ei | Mikään levyllä ei avaa holvia ilman salasanaa tai Hello-kehotetta |
| Hänellä on turva-avain mutta ei PIN-koodia | Ei | Avain vaatii PIN-koodin ja kosketuksen, ja liian monta väärää PIN-koodia lukitsee sen |
| Hänellä on tietokoneesi ja Windows-PIN | Kyllä, Windows Hellon kautta | Hello on yhtä vahva kuin PIN-koodisi tai biometriikkasi |
| Saa tiedoston, jonka tallensit merkinnästä | Kyllä, sen tiedoston | Tallennettu liite on tavallinen tiedosto levyllä holvin ulkopuolella. Poista se, kun et enää tarvitse sitä |
| Haittaohjelma, kun holvi on avattu | Kyllä | Omilla oikeuksillasi toimiva ohjelma voi lukea avatun sovelluksen. Automaattinen lukitus vain lyhentää aikaikkunaa |
Salasanan arvaamisen hidastaminen
Jos joku varastaa tiedoston, jokainen pääsalasanan arvaus maksaa Argon2id:n kustannuksen. Oletusarvot ovat 128 MiB muistia, 3 kierrosta ja 4 kaistaa, kun OWASPin vähimmäisvaatimus on 19 MiB ja 2 kierrosta. Uusissa pääsalasanoissa on oltava vähintään 12 merkkiä.
Itsearvio OWASP ASVS:n pohjalta
Arvioin sovelluksen niiden OWASP ASVS 4.0.3 (avautuu uuteen välilehteen) -osien perusteella, jotka koskevat offline-työpöytäohjelmaa, ja koko tarkistuslista (avautuu uuteen välilehteen) on julkinen. Kyseessä on itsearvio, ei sertifiointi.
Tunnetut rajoitukset
Niitä ei ole piilotettu pieneen präntiin. Ne on lueteltu myös repositoriossa:
- Sovellukselle ei ole vielä tehty riippumatonta tietoturvatarkastusta.
- Uusia pääsalasanoja ei verrata vuotaneiden salasanojen listoihin, eikä sovellus viivästytä yrityksiä väärien salasanojen jälkeen.
- Windows-asennusohjelmassa ei ole Authenticode-allekirjoitusta, joten SmartScreen varoittaa siitä. ML-DSA-65-allekirjoitus on tapa tarkistaa se.
- Windowsin leikepöytähistoria voi tallentaa kopioidun arvon ennen sen poistamista.
- Kirjoittamasi pääsalasana on .NET-merkkijono, jota ei voi pyyhkiä muistista ennen roskienkeruuta.
- Laitteistoavaus toimii vain Windowsissa, ja toistaiseksi holvia kohden voi olla vain yksi turva-avain. Linuxissa avataan pääsalasanalla.
- Linux-paketti käännetään ja testataan CI:ssä, mutta sitä ei ole vielä kokeiltu oikealla Linux-työpöydällä.
Lyhyesti: pitkällä salalauseella varastettu holvi tai varmuuskopio on erittäin hyvin suojattu, eivätkä salaisuutesi koskaan näy verkossa. Sovellus ei voi suojata haittaohjelmalta, joka toimii omilla oikeuksillasi holvin ollessa auki. Pidä sitä huolella tehtynä, avoimesti dokumentoituna henkilökohtaisena projektina, jolle ei ole vielä tehty ulkopuolista auditointia.
Näin jokainen julkaisu tarkistetaan
Käytännössä moni tietoturvaongelma johtuu vanhentuneista osista, joten prosessi tekee tämän työn jokaisessa muutoksessa. Tunnetusti haavoittuvainen paketti kaataa käännöksen, CodeQL ja Gitleaks ajetaan jokaisen pushin yhteydessä, Dependabot ehdottaa päivityksiä ja CI luo SBOM-luettelon, joka liitetään julkaisuun. Lisäksi jokaiseen julkaisuun paketoidaan käännöshetken uusin päivitetty .NET-ajonaikainen ympäristö.
Lataus ja tarkistus
Hae versio 1.3.1 julkaisusivulta (avautuu uuteen välilehteen): asennusohjelma Windows 10:lle ja 11:lle (x64) tai paketti Linuxille (x64 tai arm64). .NETiä ei tarvitse asentaa. Lataa kaikki tiedostot samaan kansioon, myös masterSafe-release.pub ja MasterSafe-Cli-työkalu, ja suorita:
MasterSafe-Cli-1.3.1-win-x64.exe verify-release . masterSafe-release.pub
Jokaisen tiedoston kohdalla on näyttävä signature valid, checksum ok, ja ensimmäiseksi tulostuvan avaimen sormenjäljen on oltava:
28ad8deb1624d6f04fe9100e25edb2666ad904e02824af14ef2fe6c8d2a74b8a
Täydelliset ohjeet, myös tarkistustyökalun kääntäminen lähdekoodista, ovat README-tiedostossa (avautuu uuteen välilehteen).
Lisenssi ja ongelmista ilmoittaminen
MasterSafe Authenticator on ilmainen henkilökohtaiseen, ei-kaupalliseen käyttöön. Lähdekoodi on saatavilla tarkastelua ja henkilökohtaista käyttöä varten, mutta se ei ole avointa lähdekoodia: kaupallinen käyttö ja muokattujen versioiden jakelu eivät ole sallittuja. Katso lisenssi (avautuu uuteen välilehteen). Kolmansien osapuolten komponenteilla on omat lisenssinsä, jotka on lueteltu ilmoituksissa (avautuu uuteen välilehteen).
Jos löydät tietoturvaongelman, käytä GitHubin yksityistä ilmoituskanavaa (avautuu uuteen välilehteen) julkisen issuen sijaan.
Lisätietoa repositoriossa
- README ja käännösohjeet (avautuu uuteen välilehteen)
- Tietoturvamalli (avautuu uuteen välilehteen)
- Uhkamalli (avautuu uuteen välilehteen)
- Kvanttiturvallinen kryptografia (avautuu uuteen välilehteen)
- Arkkitehtuuri (avautuu uuteen välilehteen)
- OWASP-itsearvio (avautuu uuteen välilehteen)
- Tiekartta (avautuu uuteen välilehteen)
- Muutosloki (avautuu uuteen välilehteen)