Simovits

Master-prints; syntetiska fingeravtryck

Bakgrund

Idag utgör fingeravtryck en stor andel av den autentisering vi gör. Framförallt handlar det om mobila enheter (telefoner, surfplattor, laptops) där fingeravtryck används för att både komma in i enheten, men också kan användas som en extra autentisering i vissa applikationer som kräver extra säkerhet (t.ex. lösenordshantering, bankID, betalfunktioner, osv). Många av dessa enheter har dessutom väldigt små fingeravtrycksläsare som enbart läser en del av avtrycket. Och visst är det smidigt med denna typ av autentisering, speciellt på mobila enheter där de små “tangentborden” gör det omständligt att skriva långa lösenord, samt risken att lösenordet blir sett av personer i närheten som kan se skärmen är större när enheten används ute bland folk. Fingeravtryck kommer runt dessa problem till stor del, och har därför blivit mycket populärt

Denna bloggartikel kommer att handla om brister med fingeravtrycksläsare, som dessvärre gör dessa mindre säkra. Denna brist kallas “master-prints”, och i kort handlar det om att skapa syntetiska fingeravtryck med egenskaper som möjliggör att dessa autentiserar sig mot en ansenlig andel av alla möjliga mänskliga fingeravtryck. 

Innan vi kan gå in på hur dessa master-prints fungerar behöver vi en kort genomgång av hur fingeravtrycksläsare förvandlar en bild på ett finger till en unik identifierare. Ett typiskt flöde för detta kan ske enligt listan nedan (kan skilja sig mellan olika leverantörer), vilket visualiseras i figur 1:

  1. En sensor tar en bild på ett fingeravtryck (gråskala). Den vanligaste typer av fingeravtrycksläsare som används idag bygger på kapacitiv teknik. Detta är i grund samma teknologi som används i majoriteten av alla touchscreens som finns för handhållna enheter som mobiltelefoner och tablets. Skärmen känner av skillnader i kapacitans mellan den del av ett finger som vilar mot skannern och den del av fingret som inte gör det, därmed kan en högupplöst bild av mönstret på fingret skapas. 
  2. Pixlar konverteras till binära värden (svart eller vitt). Detta görs via ett tröskelvärde. Allt under detta sätts till 0 (vitt) och allt över till 1 (svart).
  3. Papillarlinjerna i bilden tunnas ut med hjälp av ett blockfilter. Målet är linjer som är en pixel breda. 
  4. Punkter där papillarlinjer slutar eller möts kallas minutiae. I detta steg identifieras alla sådana punkter, t.ex. genom att, för varje svart pixel, undersöka hur många andra svarta pixlar som finns i direkt anslutning (se figur 2):
    • 1 pixel: Det måste vara en Papillarlinjes slutpunkt. Därmed en minutiae.
    • 2 pixlar: Det måste vara mitt på en papillarlinje. Inte en minutiae. 
    • 3 eller fler pixlar: Två papillarlinjer möts. Därmed en minutiae. 
  5. Minutiae punkter som ligger vid utter gränserna av bilden förkastas.
  6. Följande information används (ofta alla samtidigt) som metadata för unikt identifiera fingeravtryck. 
    1. Antal minutiae punkter
    2. Position (relativt referens-minutiae)
    3. Vinkel
    4. Typ av minutiae (slutpunkt eller bifurkation)
  7. Position och vinkel för dessa punkter är den data som används som identifierare. Denna data “hashas” med speciell hash funktion för suddig logik*, och jämförs med hash av de sparade fingeravtryck som finns inlagda. Hashfunktionen tillåter för viss felkorrigering där värden nära det önskade korrigeras till korrekta värden. I praktiken innebär det att ett fingeravtryck som är 99% likt originalet kan ge samma hash originalet. 
  8. Om hasharna matchar varandra godkänns autentiseringen.1 
Figur 1
Steg 1: En bild av ett fingeravtryck
Steg 2: Binära värden (svart eller vitt).
Steg 3: Tunna ut Papillarlinjerna.
Steg 4: Identifiera minutiae.
Figur 2
Till vänster (röd): En angränsande svart pixel. Detta är en slutpunkt
I mitten (grön): Två angränsande svarta pixlar. Detta är en inte en minutiae, en punkt mitt på en papillarlinjer.
Till höger (blå): Tre angränsande svarta pixlar. Detta är en bifurkation.

Master-prints

Med denna kunskap kring hur fingeravtryck som identifierare fungerar, kan man börja se viss antydan till potentiella svagheter: Framförallt att den data som används som själva nyckeln (6a-d ovan) inte är slumpmässig. Likt ett dåligt valt lösenord finns det vissa trender och korrelationer i hur mänskliga fingeravtryck ser ut. Vi har virvlar och bågar, och dessa medför strukturer i hur minutiae placeras och vinklas. Detta i kombination med den felkorrigering som sker i den suddiga hash-funktionen, samt de partiella fingeravtryck som ofta används av mobila enheter, gör att man ställer sig frågan; är det möjligt att designa ett syntetiskt fingeravtryck med minutiae placerade på ett så optimalt sätt att det kan matchas mot många olika fingrar?

Och svaret är, ja, det är möjligt. Det har gjorts i teorin, men än så länge finns inga kända fall av genomförda attacker med tekniken. Dessa syntetiska fingeravtryck kallas master-prints. Det finns ett par olika metoder för generera master-prints: 

Sampled MasterPrint (SAMP) 

Kanske den simplaste metoden. Man utgår från en databas med fingeravtryck. Bilder av partiella delar av varje finger i databasen testas mot andra fingrar i samma databas. De bilder som genererar högst antal lyckade matchningar väljs ut som master-prints. Med denna metod kan man hitta master-prints som kan matchas mot ett fåtal procent av fingrar i samma databas. Exakta värden beror på parametrar hos autentiseringsprocessen (t.e.x hur stor felkorrigering i den suddiga hashen). 
Detta innebär alltså att vissa av oss har speciella fingrar, med små specifika delar som kan kan autentiseras sig mot en icke försumbar andel av fingeravtryck hos andra människor.2

Synthetic MasterPrint (SYMP)

Som namnet antyder är detta inte längre rena människofingrar. Vanligtvis utgår man från en SAMP, men modifierar därifrån för att få fram en ännu mer optimal master-print. Typiskt görs små stegvisa förändringar i parametrar hos en utgångspunkt. Om förändringen ger en sämre lösning (nytt fingeravtryck kan matchas mot färre användare) förkastas den. I annat fall antas ny lösning som den nya utgångspunkt och ytterligare små förändringar görs och utvärderas. Detta itereras till inga ytterligare förbättringar kan hittas. En rad olika matematiska algoritmer för detaljerna existerar och har applicerats på master-prints. 

Denna metod kan generera bättre master-prints än rena SAMP, men är benägen att fastna i lokal minima, samt är begränsad av kvalitet (t.ex. upplösning, brus) på utgångspunkten, som i sin tur är begränsad av kvalitet på ingångsdata. Ett sätt att till viss del komma runt detta är att inte utgå från SAMP, utan utgå från slumpmässigt genererade fingeravtryck (minutiae punkter). En långsammare process, men har potentialen att finna bättre master-prints.2 3

DeepMasterPrint

Teknisk sett en variant av SYMP, men metodik för generera skiljer sig från andra SYMP tillräckligt mycket för att jag ska välja att se det som en unik typ av master-prints. Som namnet antyder handlar detta om fingeravtryck skapade av Artificiellt neuronnät (i detta fallet en GAN eller “Generative Adversarial Network”). En fördel med denna teknik är att det är möjligt att generera faktiska bilder på fingeravtryck, inte enbart minutiae punkter som andra SYMP-algoritmer. Detta förenklar ett viktigt steg i att ta detta från en teoretisk idé, till en faktiskt attack; att skapa ett fysiskt syntetiskt finger (t.ex. via 3D-utskrift i lämpligt material för en kapacitiv fingeravtrycksläsare).4

Realisera master-prints som attackmetod

Det är svårt att ge några exakta värden på hur bra dessa master-prints är. Fingeravtryck som autentisering är inte ett särskilt standardiserat område. Det existerar skillnader mellan tillverkare i metodik för bildanalys (beskrivning i avsnitt 1 ovan är inte enda sättet att göra detta), autentiseringsalgorithm (t.ex. hur mycket felkorrektion som sker), och hårdvara för sensor (upplösning, hur stor del av fingeravtryck som används, osv.). Dessutom är detta inte open source för många tillverkare, samt det finns inga genomförda tester på fysiska attacker mot olika tillverkares fingeravtryckssensorer. 

Man kan göra grova uppskattningar av sannolikheter för lyckade attacker genom att göra antaganden kring hur en genomsnittlig fingeravtryckssensor är uppbyggd, hur många försök man har på sig innan pin-kod krävs, och hur många partiella fingeravtryck som finns inlagda som godkända för autentisering. Under antagandet att en angripare har 5 försök på sig att försöka hitta ett matchande fingeravtryck, kan angripare noggrant välja ut en kombination av 5 olika master-prints, som tillsammans kan täcka en så stor del av möjliga partiella mänskliga fingeravtryck. Under optimala förutsättningar är det inte omöjligt att en ansenlig andel (ett par till tiotals procent) av användare skulle kunna angripas. 

Hur skyddar man sig? Även om inga kända attacker har genomförts än tycks tekniken och metodiken för alla steg som behövs existera. Det kan därför vara en bra idé att redan nu vidta några försiktighetsåtgärder, som:

Dessutom pågår arbete med att utveckla säkrare algoritmer för autentisering med fingeravtryck.5

*se en av mina tidigare artiklar om en speciell typ av hash för suddig logik: https://simovits.com/fingeravtryck-som-autentiseringsmetod/

Referenser

  1. https://arxiv.org/abs/1001.4186
  2. https://www.cse.msu.edu/~rossarun/pubs/RoyMemonRossMasterPrint_TIFS2017.pdf
  3. https://www.cse.msu.edu/~rossarun/pubs/RoyMasterPrintsEvolution_ICB2018.pdf
  4. https://arxiv.org/abs/1705.07386
  5. https://arxiv.org/abs/1911.03052