Profiili on edelleen luettelossa, varmenne näkyy edelleen asennettuna ja yhdistämispainike epäonnistuu viestillä, joka sanoo vain ”Keystore-virhe” eikä muuta. Ennen kuin tyhjennät sovelluksen tallennustilan tai luovutat puhelimen, selvitä, mikä avaintoiminto epäonnistui. Kolme tulosta tuottavat saman valintaikkunan, ja ne vastaavat kolmeen eri toimenpiteeseen — vain yksi niistä on tuhoisa. Vertailu on kymmenen minuutin arvoinen, koska väärä haara maksaa sinulle identiteetin, jota yritit pitää.

Kolme vikaa yhden valintaikkunan takana

Ensimmäinen on todennus. Avain on olemassa ja kelvollinen, mutta sen käyttö edellyttää, että käyttäjä todistaa läsnäolonsa — laitteen lukituksen avaus, biometria tai työprofiilin haaste. Jos lukituksen aikakatkaisu, tallennettu biometria tai profiilin tila on muuttunut äskettäin, avaimen käyttö voi epäonnistua, vaikka itse avain on täysin kunnossa.

Toinen on pysyvä mitätöinti. Jotkin avainmateriaalit mitätöi alustan käytäntö, kun lukitusmenetelmä nollataan tai biometrinen rekisteröinti muuttuu, koska niitä suojannut sidonta ei enää pidä. Avainta ei voi korjata, eikä uudelleenyritys ole palautussuunnitelma; identiteetti on korvattava sen myöntäneen rekisteröintiprosessin kautta.

Kolmas on palveluntarjoajan vika: keystore-palvelu ei voinut suorittaa toimintoa juuri nyt. Se on luokka, jota joskus kannattaa yrittää uudelleen, ja ainoa sellainen.

FailureWhat it meansWhat recovers itWhat does not
User not authenticatedKey needs a presence checkSupported unlock or authorization flowA VPN account password reset
Key permanently invalidatedBinding is gone; key unusableReplacement enrollment for that identityRetrying, rebooting, reinstalling the client
Transient provider errorService could not complete nowThe provider's documented retry pathClearing app data

Huomaa, että kaksi kolmesta ei ole tuhoisa ja yhdellä ei ole lainkaan ratkaisua laitetasolla. Mitään niistä ei ratkaista puhelimen pyyhkimisellä, mikä on se askel, jonka ihmiset ottavat ensin, koska valintaikkuna ei anna heille muuta.

Uudelleenrekisteröinti vastaan tietojen tyhjennys

Nämä kaksi näyttävät ulkoapäin samanlaisilta eivätkä ole. Uudelleenrekisteröinti pyytää myöntävältä järjestelmältä uuden identiteetin — tuoreen varmenteen tai avaimen, joka on sidottu tähän laitteeseen — ja poistaa vanhan käytöstä. Tietojen tyhjennys poistaa sovelluksen tallennetun tilan, mikä voi poistaa viittauksen avaimeen poistamatta avainta, tai se voi poistaa avaimen ja jättää sinut ilman valtuutusta luoda se uudelleen.

Ero on tärkeä, koska ei-vietävissä olevat avaimet eivät suunnittelunsa puolesta ole siirrettäviä. Ne elävät laitteen keystoressa, minkä tahansa saatavilla olevan laitteiston tai palveluntarjoajan tukemana, eivätkä ne ole jotain, minkä varmuuskopio tallentaa ja palautus palauttaa. Jos käyttöönoton identiteetti on ei-vietävissä oleva avain, suunnittele uudelleenrekisteröinti palautukseksi ja varmista etukäteen, että sinulla on hyväksytty reitti sen rekisteröinnin hankkimiseksi — jotkin organisaatiot vaativat siihen pääsyn yksityisverkkoon, ja juuri sitä rikki mennyt VPN tarjosi.

Järjestys on siis: kokeile tuettua todennuspolkua, selvitä sitten, onko avain pysyvästi kelvoton, ja korvaa identiteetti vain jos on. Tallennustilan tyhjennys kuuluu viimeiseksi, kun tiedät, mitä luodaan uudelleen, ei ensimmäiseksi siksi, että se on helppoa.

Yritä uudelleen vain sitä, mitä voi yrittää uudelleen

Vanhemmat alustaversiot kokoivat keystore-virheet yhteen poikkeukseen, minkä vuoksi niin monet asiakkaat yrittävät kaikkea uudelleen. API 33:sta lähtien poikkeustyyppi kantaa rakennetta: numeerinen virhe, tilapäisen vian lippu ja uudelleenyrityskäytäntö. Asiakasohjelman kehittäjälle uudelleenyrityskäytäntö on merkityksellinen vain, kun tilapäisyyden lippu on tosi; pysyvällä mitätöinnillä ei ole uudelleenyritysaikataulua, ja sen hakkaaminen silmukassa vain tyhjentää akun ja täyttää lokin.

Jos diagnosoit sen sijaan että kirjoittaisit asiakasohjelmaa, käytännön seuraus on sama. Samanlaiset viat joka yrityksellä sulkevat pois kertaluonteisen häiriön, mutta ne eivät erota pysyvästi mitätöityä avainta palveluntarjoajasta, joka on ollut jonkin aikaa poissa käytöstä — palveluntarjoajan katkos näyttää kymmenennellä yrityksellä täsmälleen samalta kuin ensimmäisellä. Ilman API 33:n jäsennettyjä kenttiä kohtele toistoa syynä etsiä toista signaalia — virhekoodi, jos koontiversiosi näyttää sen, operaattorin tila tai toinen avain samalla laitteella, joka onnistuu — etkä todisteena siitä, että avain on kuollut.

Lue syyketju, älä nimikettä

Sovellukset käärelevät alkuperäisen poikkeuksen, ja käyttöliittymän ystävällinen merkkijono piilottaa usein sen ainoan kentän, joka ratkaisee haaran. Säilytä syyketju ja yrityksen aikaleima: ulompi poikkeus nimeää yleensä toiminnon, ja syy nimeää avaimen tilan.

Vastusta päätelmää, että kaksi epäonnistuvaa sovellusta todistaa viallisen puhelimen. Eri avaimia voivat tukea eri palveluntarjoajat ja turvatasot, eikä vielä toimiva sovellus välttämättä suorita samaa toimintoa lainkaan — allekirjoitus, salauksen purku ja avaimen attestointi ovat eri pyyntöjä samalle palvelulle. KeyStoreException-viite kuvaa jäsennetyt kentät uudemmilla API-tasoilla ja on paikka, josta tarkistaa, mitä koontiversiosi todella voi raportoida.

Se, mitä laitteistopäätelmä vaatisi tuekseen, on kapeampaa kuin useimmat olettavat: sama toiminto samalla palveluntarjoajalla epäonnistuu riippumattomilla avaimilla palveluntarjoajatason virheellä eikä avaintason virheellä. Se on kysymys alustan diagnostiikalle, ei tukifoorumin ketjulle laite-erästä.

Mitä kirjata, kun päätät

Kirjaa Android-koontiversio, asiakasohjelman versio, valittu profiili, epäonnistunut toiminto ja se, onko mikä jotain muuttunut äskettäin — käyttöjärjestelmän päivitys, lukitusnäytön muutos, uusi sormenjälki, uudelleenrekisteröinti. Kirjaa järjestys kontekstina eikä todisteena syystä; lukituksen muutos ennen avainvikaa on uskottava korrelaatio, ei esittely.

Toimi sitten vahvistamasi haaran mukaan. Tilapäinen: pidä identiteetti, käytä tuettua uudelleenyrityspolkua. Todennus vaaditaan: suorita tuettu lukituksenavausvirta loppuun ja pidä käyttöönoton vaatima lukituskäytäntö sen sijaan, että kytkisit sen pois päästäksesi valintaikkunasta. Pysyvästi kelvoton: korvaa ja poista identiteetti käytöstä tavallisen rekisteröinnin kautta.

Lopeta todistamalla tulos tuoreella valtuutetulla yhteydellä todelliseen resurssiin palvelimen vahvistuksen ollessa edelleen käytössä. Mikään, mikä toimii vain löysennetyillä varmenteen tarkistuksilla, ei ole korjannut avainongelmaa — se on siirtänyt sen verkkokerrokseen, jossa se tulee esiin myöhemmin pahempien oireiden kanssa.

  • Kolme haaraa: vaatii todennuksen, pysyvästi kelvoton, palveluntarjoajalla tilapäinen.
  • Vain kolmas hyötyy uudelleenyrityksestä, ja vain oman uudelleenyrityskäytäntönsä mukaan.
  • Korvaava rekisteröinti palauttaa pääsyn; tietojen tyhjennys poistaa vaihtoehdon.
  • Vahvista tuoreella yhteydellä ja tavallisilla palvelimen identiteettitarkistuksilla.

Aiheeseen liittyvät artikkelit