Turvallisuus

Miten holvi on rakennettu ja mitä murto löytäisi.

Viimeksi päivitetty 21. syyskuuta 2026 · AssuredAuth, CircleRoll LLC:n myöntämä

Tämä on julkinen kuvaus siitä, miten AssuredAuth suojaa siinä säilyttämiäsi kaksivaiheisia salaisuuksia, salasanoja ja kortteja. Se on kirjoitettu siten, että tietoturvasta kiinnostunut lukija voi tarkistaa kaikki sovellusta ja julkaistuja testivektoreita koskevat väitteet (saatavilla pyynnöstä osoitteesta hello@assuredauth.com). Se sanoo totuuden eikä mitään muuta: mikään tässä ei väitä olevan hyökkäysten ulottumattomissa, eikä mitään luvata prosenttiosuuksina.

Lyhyesti sanottuna: holvi sijaitsee yhdessä paikassa, puhelimessasi. Jokainen sen arvo on salattu avaimella, jonka puhelimen turvalaitteisto säilyttää eikä sitä voi viedä. Meillä ei ole holvipalvelinta, emmekä säilytä kopioita tai avainta. Varmuuskopiotiedosto poistuu puhelimesta vasta sen jälkeen, kun se on salattu salasanalla, jota ei koskaan tallenneta mihinkään.

Ilmoita ongelmasta: hello@assuredauth.com. Katso kohta ”Heikkouden ilmoittaminen” lopusta.

1. Mikä on salattu ja millä

TiedotPuhelimessaAvain
Kaksitekijäiset salaisuudet (TOTP/HOTP/Steam-siemenet) PuhelimessaAvainnipun (iOS) / Android Keystore -tukikauppa AvainAlustan laitteistosidonnainen avain; tietokannan rivillä on vain viittaus (secretRef), ei koskaan siementä
Salasanat (salasanan arvo, muistiinpanot) PuhelimessaSuljettu rivi: AES-256-GCM, satunnainen 96-bittinen nonce-arvo arvoa kohden AvainSatunnainen 256-bittinen data-avain, joka itse on kääritty §2:n laitteistoavaimeen
Kortit (numero, voimassaoloaika, kortinhaltijan nimi, CVC) PuhelimessaSama sinetti kuin salasanoilla; CVC on valinnainen ja tallennetaan vain, jos syötät sen itse AvainSama data-avain
Metadata (palveluiden nimet, käyttäjätunnukset, kuvakkeet, lajittelujärjestys) PuhelimessaSovelluksen tietokanta (SwiftData / Room) AvainSuojattu käyttöjärjestelmän tiedostojen salauksella; käsitellään ei-salaiseksi
Varmuuskopiotiedosto (.authbackup) PuhelimessaMinne ikinä sen laitatkin: Tiedostot, iCloud Drive, Google Drive -sovellus, Tietokansio, jakotaulukko AvainSalasanastasi johdettu avain (§3). Apple ja Google vastaanottavat sinetöidyn tiedoston eivätkä mitään muuta.
Watch-/Wear-kumppanisovellus PuhelimessaKellon oma avaimenperä / EncryptedSharedPreferences AvainKelloalustan avaimet; siirretty alustan paritetun laitteen kanavan kautta
Työpöytälaajennuksen liikenne (kertakäyttöisiä koodeja pyynnöstä) PuhelimessaEi tallennettu; välitetään päästä päähän salattuina kirjekuorina AvainYksi X25519-avainpari paritusta kohden, yksityinen avain avainnipussa / avainsäilössä; välitysyksikkö näkee vain salatun tekstin

Diagnostiikassa ei ole metodia, joka hyväksyisi salaisuuden. Yhdessäkään analytiikkatapahtumassa ei ole varastokenttää. Varaston arvoa ei koskaan kirjoiteta lokiin missään koontiversiossa.

2. Missä näppäimet sijaitsevat kullakin alustalla

iOS. Data-avain on kääritty Secure Enclaven (kSecAttrTokenIDSecureEnclave) sisällä luotuun avaimeen, jonka käyttöoikeus on .privateKeyUsage + .userPresence, accessibility …ThisDeviceOnly ja joka on sovelluksen jaetussa Keychain-käyttöoikeusryhmässä, jotta AutoFill-laajennus voi käyttää samaa avainta. Sovellus, varmuuskopio tai virheenkorjaaja ei voi lukea yksityistä avainta Enclavesta. Enclave suostuu käyttämään sitä vasta käyttäjän läsnä ollessa (Face ID, Touch ID tai laitteen salasana). ThisDeviceOnly tarkoittaa, että puhelimen iCloud- tai iTunes-varmuuskopio ei sisällä avainta. Palautettu puhelin käynnistyy tyhjällä holvilla ja pyytää varmuuskopiotiedostoa ja salasanaa. Puhelin, jossa ei ole salasanaa, ei voi avata .userPresence-avainta (Enclave kieltäytyy luomasta sellaista), ja simulaattori kulkee samaa polkua suuniteltuaan (sen läsnäolokehote on hälytys, johon mikään testi ei pysty vastaamaan): siellä data-avain on tavallinen, vain laitteelle tarkoitettu avainnipun kohde – edelleen poissa jokaisesta varmuuskopiosta, edelleen lukukelvoton puhelimen ollessa lukittuna, mutta ilman toista kehotetta – ja suojausnäyttö sanoo juuri tämän ja ehdottaa salasanan asettamista.

Android. Data-avain kääritään AndroidKeyStore AES-256 -avaimeen, joka luodaan StrongBoxissa, kun laitteella on sellainen (muuten TEE), ja jossa on setUserAuthenticationRequired(true) sekä 30 sekunnin todennuksen voimassaolo biometrisen tai laitetunnisteen jälkeen, setUnlockedDeviceRequired(true) ja setInvalidatedByBiometricEnrollment(true). Viimeinen lippu on rehellinen eikä kuormaa kantava: Android soveltaa sitä vain avaimiin, jotka vaativat biometrisen tunnisteen joka kerta, joten tässä 30 sekunnin avaimessa, jossa laitetunniste on sallittu, se ei muuta mitään – ulkopuolisen sormen pitää loitolla se, että rekisteröinti vaatii PIN-koodin ja näytön lukituksen poistaminen mitätöi avaimen lopullisesti. Avainasäilytysavaimia ei voi viedä, eivätkä ne sisälly Androidin pilvivarmuuskopiointiin. Sovelluksen omissa näkymissään nimeämä verkkotunnus (webDomain) uskotaan vain tunnetusta selaimesta; minkä tahansa muun paketin osalta sen on myös oltava sellainen, jonka järjestelmä on vahvistanut kyseiselle paketille (Digital Asset Links), koska mikä tahansa sovellus voi vaatia minkä tahansa verkkotunnuksen.

Mitä tämä tarkoittaa varastetulle tietokantatiedostolle. SQLite-tiedosto ja sinetöidyt rivit ovat salattua tekstiä. Avain, joka avaa ne, sijaitsee tiedoston lähteenä olevan puhelimen suojauslaitteistossa, eikä sitä voida kopioida tiedoston mukana. Offline-tilassa ei ole mitään arvailtavaa: data-avain on satunnainen, eikä se ole johdettu mistään henkilön valitsemasta sisällöstä.

3. Varmuuskopiotiedosto

Varmuuskopiot ovat ainoa asia, joka poistuu puhelimesta, joten ne ovat periaatteessa ainoa paikka, josta offline-hyökkäys on mahdollinen. Suunnittelu tekee hyökkäyksestä kalliin ja tarjoaa mahdollisimman vähän resursseja:

Tiedosto on JSON-muodossa ja luettavissa millä tahansa tekstieditorilla; vain salattu teksti on läpinäkymätöntä. Joku, joka löytää tiedoston viiden vuoden kuluttua, kun sovellus on poistettu, voi nähdä tarkalleen, miten se on suljettu, ja avata sen OpenSSL:llä tai millä tahansa Argon2-kirjastolla.

Formaatti v1 (toimitettu versiossa 1.0, pysyy luettavassa muodossa)

{
  "format": "authbackup",
  "version": 1,
  "kdf": "PBKDF2-HMAC-SHA256",
  "rounds": 600000,
  "salt": "<base64, 16 bytes>",
  "cipher": "AES-256-GCM",
  "nonce": "<base64, 12 bytes>",
  "ciphertext": "<base64>",
  "tag": "<base64, 16 bytes>"
}
VaiheTavut
keyPBKDF2-HMAC-SHA256(passphrase as UTF-8, salt, 600000 rounds, 32 bytes)
aadUTF-8("authbackup:1:600000:") ‖ salt (raa'at suolatavut, ei base64)
ciphertext, tagAES-256-GCM(key, nonce, plaintext, aad); 16 tavua sisältävä tunniste, tallennettu erikseen
plaintextUTF-8 JSON, avaimet lajiteltuina: {"accounts":[…],"exportedAt":"…Z","passwords":[…],"version":1}

Yhteensopivuushuomautus: Android 1.0 kirjoitti versiosta 1 variantin — kdf pienillä kirjaimilla, ilman tag-avainta (16-tavuinen tagi liitettynä salattuun tekstiin) ja ilman lisätietoja. Molemmat alustat lukevat näitä tiedostoja jatkuvasti (kun tagi puuttuu: jaa viimeiset 16 tavua, avaa tyhjällä AAD:llä; vertaa kdf:tä kirjainkoon huomioimatta) ja molemmat kirjoittavat nyt vain yllä olevan asettelun.

Muoto v2 (nykyinen; uusien varmuuskopioiden oletusmuoto)

{
  "format": "authbackup",
  "version": 2,
  "kdf": "Argon2id",
  "memoryKiB": 65536,
  "passes": 3,
  "lanes": 1,
  "salt": "<base64, 16 bytes>",
  "cipher": "AES-256-GCM",
  "nonce": "<base64, 12 bytes>",
  "ciphertext": "<base64>",
  "tag": "<base64, 16 bytes>"
}
VaiheTavut
keyArgon2id(version 0x13, passphrase as UTF-8, salt, m = 65536 KiB, t = 3, p = 1, tagLength 32, no secret, no associated data)
aadUTF-8("authbackup:2:argon2id:65536:3:1:") ‖ salt
ciphertext, tagAES-256-GCM(key, nonce, plaintext, aad); 16 tavua sisältävä tunniste, tallennettu erikseen
plaintextUTF-8 JSON, avaimet lajiteltuina: {"accounts":[…],"cards":[…],"exportedAt":"…Z","passwords":[…],"version":2}

Argon2id on C-kielen referenssitoteutus (phc-winner-argon2, CC0), jota toimitetaan molemmille alustoille. 64 MiB ja 3 suorituskertaa vievät nykyisellä puhelimella noin sekunnin, ja jokainen arvaus maksaa kyseisen määrän muistia ja aikaa millä tahansa laitteistolla – ominaisuus, josta PBKDF2 puuttuu GPU-järjestelmiä vastaan, ja syy v2:n olemassaoloon. Lukija jättää huomiotta avaimet, joita se ei tunne, joten v1-lukija, jolla on v2-runko, ei yksinkertaisesti koskaan näe kortteja.

Todiste

Kolmas toteutus luo kolme testivektoritiedostoa (varmuuskopio v1, varmuuskopio v2 ja Argon2id), jotka ovat riippumattomia molemmista sovelluksista (Noden OpenSSL PBKDF2:lle ja AES-GCM, WebAssembly Argon2id, jota tarkistetaan luontihetkellä referenssitoteutuksen julkaistuja vastauksia vasten). Jokainen sisältää salasanan, suolan, noncen, selkotekstin, johdetun avaimen, AAD:n, odotetun salaustekstin ja tagin sekä koko tiedoston. iOS:n ja Androidin yksikkötestit lukevat samat tiedostot ja käyttävät samoja tavuja – joten yhdellä alustalla sinetöidyn varmuuskopion avautuminen toisella alustalla on todistettu, mutta sitä ei oleteta, eikä kaikkien kolmen yhtäpitävyys ole kaksi kopiota samasta virheestä. Rinnakkaistyökalu avaa tiedoston, jonka puhelin on itse kirjoittanut samalla kolmannella toteutuksella, ja tarkistaa otsikon yllä olevia sääntöjä vasten (täsmälleen formaatin avaimet, joten vihjettä tai nimeä ei voi olla; 16-tavuinen salt, 12-tavuinen nonce, 16-tavuinen tag tallennettuna erikseen; versio 2, jonka koko on täsmälleen 64 MiB / 3 / 1; väärä salasana hylätty); automaattinen iOS-ajo kirjoittaa yhden simulaattoriin ja avaa sen tällä tavalla, ja etsii simulaattorin sovellussäiliöstä, sovellusryhmäsäiliöstä ja avainnipputietokannasta kaikki kylvetyt salasanat ja korttinumerot UTF-8- ja UTF-16-muodossa (0 osumaa).

4. Uhkamalli

TilanneMitä heillä onMitä he saavat
Kadonnut tai varastettu puhelin, lukittu Mitä heillä onLaite, tietokantatiedosto, sinetöidyt rivit Mitä he saavatSalattu teksti. Käärimisavain on Secure Enclavessa / StrongBoxissa ja vapautuu vasta laitteen lukituksen ja uuden biometrisen tunnisteen tai salasanan syöttämisen jälkeen. Puhelimen etäpyyhkiminen (Etsi oma / Etsi laitteeni) tuhoaa avaimen materiaalin.
Varastettu varmuuskopiotiedosto Mitä heillä on.authbackup-tiedosto pilvitililtä, ​​sähköpostista tai kannettavalta tietokoneelta Mitä he saavatAES-256-GCM-runko avaimella, joka on johdettu vähintään 12 merkin pituisesta salasanasta, tiedostokohtaisella suola-arvolla ja Argon2id:llä 64 MiB × 3 läpimenolla (v2) tai PBKDF2:lla 600 000 kierroksella (v1). Ei vihjeitä, ei käyttäjätunnusta, ei tililuetteloa selkeästi. Jokainen arvaus maksaa koko johdannaishinnan; oikotietä ei ole. Vahva salasana on tässä koko puolustus, ja sovellus sanoo niin lomakkeella.
Varastettu laite, jonka näyttö on lukitsematon Mitä heillä onPuhelin kädessäsi, lukitsematon Mitä he saavatKoodiluettelo. Säilytystila (salasanat, kortit) on sovelluslukon takana ja lukittuu uudelleen automaattisen lukituksen ajastimen mukaan (heti / 1 minuutin / 5 minuutin kuluttua); purettu arvo on muistissa vain niin kauan kuin se näkyy näytössä. Automaattinen täyttö ja pelkkää tekstiä sisältävä vienti pyytävät uutta biometristä tietoa, vaikka sovellus olisi auki. Ota sovelluslukon käyttöön asetuksella "Heti", jos tämä on ongelma.
Haittaohjelma samassa puhelimessa Mitä heillä onToisen sovelluksen hiekkalaatikko, leikepöytä, esteettömyys- tai päällekkäisominaisuudet Mitä he saavatSe ei voi lukea tiedostojamme (alustan hiekkalaatikko) tai käyttää avaintamme (avain on sidottu allekirjoitusidentiteettiimme ja käyttäjän läsnäoloon). Kopiot tyhjentyvät leikepöydältä 30 sekunnin kuluttua; Androidilla kopio merkitään arkaluonteiseksi ja jätetään pois leikepöydän historiasta. Holvin näytöille asetetaan FLAG_SECURE Androidilla (ei kuvakaappauksia, ei näytön tallennusta, tyhjä vaihtajassa); iOS tyhjentää vaihtajan pikkukuvan. Automaattinen täyttö Androidilla tarjoillaan vain sovelluksille, jotka järjestelmä on vahvistanut tallennettua verkkotunnusta (Digital Asset Links) vasten, joten kaksoiskelpoiselle sovellukselle ei tarjota salasanaasi.
Tietojenkalastelusivu Mitä heillä onSivusto, joka näyttää samalta kuin tallentamasi sivusto Mitä he saavatMikään ei täyty. Täsmäytys tapahtuu rekisteröitävän verkkotunnuksen perusteella (julkinen pääteluettelo, joka sisältyy sovellukseen ja päivittyy sen mukana): login.example.com ja example.com täsmäävät, example.com.evil.net ja examp1e.com eivät. Sovelluksen sisäinen selain täsmää samalla tavalla ja täyttää vain pyynnön tehneen kehyksen, jota on tarkistettu uudelleen kehyksen omaa alkuperää vasten täyttöhetkellä; isäntä, jolla ei ole omaa rekisteröitävää verkkotunnusta – IP-osoitetta, paljas nimi paikallisverkossa – täsmää täsmälleen eikä mitään löyhempää. iOS:n automaattinen täyttö lisää Applen assosioituneiden verkkotunnusten tarkistuksen. Salasana, joka sinun on liitettävä käsin kaksoisolentoon, on edelleen riski; sovellus ei voi poistaa sitä, ainoastaan ​​välttää auttamasta.
Omat palvelimemme Mitä heillä on— Mitä he saavatHolvipalvelinta ei ole. AssuredAuthilla ei ole tilejä, ei kirjautumisia eikä kopiota holvistasi, joten meidän puolellamme ei ole mitään sinun omaisuuttasi, jota voitaisiin varastaa tai murtaa. Palvelinpuolella toimii kaksi asiaa, joista kumpikaan ei koske holvia: työpöytälaajennuksen välityspostilaatikko, joka tallentaa päästä päähän salattuja kirjekuoria (kertakäyttöisiä koodeja, jotka poistetaan luettaessa; välityspalvelimella ei ole koskaan avainta), ja valinnaisen yksityisen yhteyden lähtöpalvelimet, jotka kuljettavat liikennettä eivätkä säilytä käyttölokeja.
Haaste tai viranomaisen pyyntö Mitä heillä onMeille osoitettu oikeudellinen prosessi Mitä he saavatEi mitään luovutettavaa: meillä ei ole holvia, avainta, salasanaa eikä varmuuskopiota. Meidät voidaan pakottaa sanomaan se; meitä ei voida pakottaa tuottamaan sitä, mitä ei ole olemassa.

5. Leikepöytä, kuvakaappaukset ja muisti

6. Automaattinen täyttö: mikä täyttää ja mikä ei

MissäSalasanatKortit
iOS: Safari ja sovellukset (AutoFill-laajennus) SalasanatKyllä, uuden Face ID:n / Touch ID:n / salasanan jälkeen laajennuksessa (LAContext), ja vain sille rekisteröitävälle verkkotunnukselle, jolle merkintä tallennettiin, Applen sovellusten liittämisverkkotunnusten tarkistuksella. KortitEi. Kortin automaattinen täyttö Safarissa on Applen yksinoikeudella käytössä; kortin näytössä lukee "Täyttää AssuredAuth-selaimen ja kopiot" eikä lupaa mitään muuta.
Android: sovellukset ja Chrome (AutofillService) SalasanatKyllä, tietojoukkokohtainen todennus: järjestelmä näyttää BiometricPrompt-kehotteen ennen täyttöä; sovelluspaketti täsmää vain, kun Digital Asset Links linkittää sen tallennettuun verkkotunnukseen. KortitKyllä, creditCardNumber-, creditCardExpiration*- ja creditCardSecurityCode-vihjeet, sama biometrinen portti
AssuredAuth-selain (molemmat alustat) SalasanatKyllä, rekisteröitävän verkkotunnuksen – isännän, jolla ei ole omia täsmälleen osumia – perusteella kyselyn tehneeseen kehykseen, biometrisesti ennen täyttöä KortitKyllä, kentän tunnistuksella, biometrinen ennen täyttöä
Kopioi-painikkeet SalasanatSovelluslukon takana 30 sekunnin leikepöytä KortitNumero, voimassaoloaika, CVC (samat säännöt)

Mikään ei täytä tietoja kaksoisolentoisännässä. Mikään ei täytä tietoja ilman biometriikkaa.

7. Mitä ei koskaan tapahdu

Ei varastopalvelinta. Ei analytiikkaa, joka sisältää varastokentän. Ei selkotekstistä vientiä ilman vahvistuslomaketta ja uutta biometriikkaa. Ei kolmannen osapuolen SDK:ta ladattu varastonäytölle. Ei varastonäytön kuvakaappausta. Ei salasanavihjettä. Ei arvojen kirjaamista missään koontiversiossa.

8. Miltä emme voi suojautua

Tunnuslause, joka on tarpeeksi heikko arvattavaksi. Puhelin, jonka käyttöjärjestelmä on vaarantunut juuressa (jailbroken tai rootattu laite voi valehdella sovellukselle kaikesta yllä mainitusta). Henkilö, jota tarkkaillaan kirjoittaessaan. Haittaohjelma työpöydällä, johon liität sen. Sanomme tämän, jotta yllä oleva lista ymmärrettäisiin sellaisena kuin se on: asiat, jotka suunnittelu voi poistaa, poistetaan.

9. Arvioinnin tila

Tätä suunnittelua on yksikkötestattu julkaistuja tunnettuja vastauksia vasten molemmilla alustoilla ja sen omia alustojen välisiä vektoreita vasten. Ulkoinen arviointi on omistajan listalla ennen kuin holvi mainostetaan kaupan listauksessa; ennen kuin se on tehty, tässä dokumentissa mainitaan se tässä.

10. Missä asiat suoritetaan

Mikään holvista ei poistu puhelimesta, mutta muutamia sen ympärillä olevia asioita suoritetaan muiden ihmisten koneilla. Tämä on luettelo ja mitä kukin niistä sisältää; itse tietovirrat on kuvattu tietosuojakäytännössä osoitteessa https://assuredauth.com/privacy.

Jokainen sisältää rivillään olevan sisällön eikä mitään holvin sisällöstä. Lista muuttuu tuotteen mukana, ja tämä osio muuttuu sen mukana.

Heikkouden ilmoittaminen

Jos uskot löytäneesi heikkouden jostakin tässä kuvatusta, kirjoita osoitteeseen hello@assuredauth.com ja otsikoksi "Turvallisuus". Kerrothan alustan, sovellusversion ja vaiheet. Omia tietojasi käyttävä todiste riittää, emmekä pyydä testaamaan sitä muiden tietoja vastaan. Emme tarjoa PGP-avainta. Jos raporttia ei lähetetä tavallisessa sähköpostissa, ilmoita siitä ensimmäisessä viestissä, niin järjestämme toisen tavan.

Vastineeksi lupaamme: kuittaamme vastauksen kolmen arkipäivän kuluessa, pidämme sinut ajan tasalla työskennellessämme asian parissa, korjaamme mahdolliset virheet ennen kuin mitään niistä julkaistaan, ja mainitsemme sinut tässä, jos haluat tulla mainituksi. Emme ryhdy oikeustoimiin alla mainitussa laajuudessa vilpittömässä mielessä tehdyn tutkimuksen perusteella.

Soveltamisalaan kuuluvat: iOS- ja Android-sovellukset, kellosovellukset, työpöytälaajennus, assuredauth.com ja sen API. Soveltamisalan ulkopuolelle jäävät: App Store ja Google Play itse, yllä luetellut palveluntarjoajat, sosiaalinen manipulointi ja palvelunestohyökkäykset.

Palkkiota ei tällä hetkellä jaeta. Ilmoitukseen vastataan korjaamalla vika ja kiittämällä, ei rahalla.