Utgivningen av en iPhone utan fingeravtryckssensor har medfört lite prat om att använda fingeravtryck för autentisering och hur säkert data lagras. Det är jättebra. Även om du inte är orolig för hur det görs, behöver du många andra människor vara bekymrade så att det görs på ett sätt som du inte behöver oroa dig för!
Till att börja med använder Apple en liknande lösning och om du har en äldre modell med en fingeravtryckssensor är du lika säker att använda den som du var tidigare. Detsamma gäller för äldre Samsung-telefoner som lanserade pre-Marshmallow och använde Samsungs egna metoder.
Det sätt på vilket Google lagrar dina fingeravtrycksdata är det säkraste sättet med dagens teknik. Det är också fascinerande hur enkel översikten över det hela är när du tittar på den. Enkelt och säkert är alltid en vinnande kombination.
Lagring är i sin natur inte särskilt säker. Det är samma sak som att skriva något på en post-it-lapp och lägga det i ett arkivskåp. Den är där för att den måste vara där, och det bästa du kan göra är att kontrollera vem som har tillgång till det. För ett filskap använder du ett lås och för din telefon använder du kryptering. För dina fingeravtrycksdata går saker ett steg längre: en Trusted Execution Environment (TEE).
En TEE är ett separat och isolerat område i telefonens hårdvara. En TEE kan använda sin egen processor och minne eller den kan använda en virtualiserad instans på huvud CPU. I båda fallen är TEE helt isolerat och isolerat med hjälp av hårdvarusäkerat minne och ingångs- / utgångsskydd. Det enda sättet att komma in är om TEE släpper in dig och det aldrig kommer. Även om telefonen är rotad eller om startladdaren är olåst är TEE separat och fortfarande intakt.
En separat processor med eget minne och operativsystem används för att analysera och lagra dina fingeravtrycksdata.
Google använder det de kallar Trusty TEE för att stödja detta. Ett mycket litet och effektivt operativsystem, med lämplig namn Trusty OS, körs på TEE-hårdvara och kärndrivrutiner tillåter det att kommunicera med systemet. Det finns Android-bibliotek (du gissade det: Trusty API) för utvecklare att använda så att de kan fråga vad som motsvarar en ja eller ingen fråga till TEE. Inte bara fingeravtrycksdata lagras i TEE. Saker som DRM-nycklar och tillverkarens krypteringsnycklar för bootloader lever också i TEE och fungerar på samma sätt som dina fingeravtrycksdata - svara på om data som presenteras för den av en applikation stämmer med de kända bra data som de lagrar.
Andra tillverkare kan använda Trusty OS eller sedan använda ett annat system. Så länge alla kriterier är uppfyllda (listas nedan) och TEE är isolerade och isolerade kommer det att uppfylla de säkerhetsstandarder som krävs för att använda Pixel Imprint (tidigare Nexus Imprint).
ARM TrustZone TEE-blockschema.När du registrerar ett fingeravtryck på din Android-telefon tar sensorn data från skanningen. Trusty OS analyserar dessa data i TEE och skapar sedan två saker: en uppsättning valideringsdata och en krypterad fingeravtrycksmall. Detta verkar vara skräpdata för allt utom TEE som också har nyckeln till att dechiffrera skräpdata. Denna krypterade fingeravtrycksmall lagras i en krypterad behållare antingen på TEE eller på telefonens krypterade lagring. Tre krypteringslager betyder att det är nästan omöjligt att hämta data, och även om du kan är det värdelöst utan sätt att dechiffrera dem.
Android kräver att dina fingeravtrycksdata säkras med en unik nyckel, och du kan; inte ta den till en annan telefon eller återanvända den för en annan användare.
Valideringsdata lagras i TEE. När du placerar fingret på skannern för att försöka göra något bygger skannern en dataprofil. Genom Trusty API ber den tillhörande applikationen kärnan att fråga TEE om det är rätt. TEE kontrollerar mot lagrade valideringsdata med sin separata processor och minne, och om tillräckligt med data matchar säger det ja. Om det inte finns tillräckligt med matchande data, säger det nej. Detta pass eller misslyckas svar skickas tillbaka till kärnan som ett programtoken som API kan läsa för att se resultatet.
Medan TEE själv använder ett fristående operativsystem och hårdvara för att förbli säker, använder fingeravtrycksmallen programvarubaserad kryptering. Det måste undertecknas av en mycket specifik nyckel för att vara giltig. Den här nyckeln skapas med hjälp av enhetsspecifik information, användarspecifik information och tidsspecifik information. Med andra ord, om du tar bort en användare, byter enheter eller försöker registrera ett fingeravtryck (systemet kan säga om du skriver över ett befintligt fingeravtryck) känns inte längre igen och kan inte användas för att dekryptera fingeravtrycket mall.
De grundläggande reglerna som alla företag som tillverkar Android-telefoner med en fingeravtryckssensor måste följa:
- All analys av fingeravtrycksdata måste utföras inuti TEE
- Alla uppgifter som är associerade med ett fingeravtryck måste lagras i TEE eller i betrodd minne (minne som huvud CPU inte ens kan se)
- Fingeravtrycksprofildata måste vara självkrypterade även om de lagras i krypterad telefonlagring
- Att ta bort ett användarkonto måste också säkert torka bort all information som är kopplad till användarens fingeravtryck
- Där fingeravtrycksprofiler lagras får inte vara synliga för någon applikation, process eller användare inklusive rotanvändaren
- Fingeravtrycksdata av något slag får inte säkerhetskopieras till någon annan källa, inklusive molnet, din dator eller något annat program
- Fingeravtrycksautentisering måste användas av processen som begärde den (ingen delning av fingeravtrycksdata, även bara svaret ja eller nej för att se om det var korrekt)
När du har några standardspecifikationer som är tydliga är det inte svårt att uppfylla dem. Det är detta som ser till att oavsett vilken Android-telefon du använder dina fingeravtrycksdata kommer att lagras säkert och att ingen annan systemprocess eller app kan få åtkomst till den. När kryptografi utvecklas, särskilt hårdvarukodad kryptering, kommer den här metoden att hålla dina fingeravtrycksdata säker. Det kommer att vara intressant att titta tillbaka när Android Z har startat och se hur långt vi har kommit.