26 November 2020
Tech
Android

Gezichtsherkenning inbouwen in bestaande bank app

In dit blog vertelt Kevin, Zooma's Tech Lead, hoe hij zijn bank app naar eigen hand (of eigenlijk gezicht) heeft gezet. Waarom hij dat heeft gedaan en hoe dat tot nieuwe inzichten heeft geleid.

Biometrieherkenning
Steeds meer mensen gebruiken de biometrieherkenning om zich veilig en snel te kunnen identificeren of autoriseren op een applicatie. Dit kan bijvoorbeeld door middel van vingerafdruk- of gezichts-herkenning. Sommige telefoonmakers experimenteren zelfs al met iris scanners. Biometrieherkenning wordt steeds vaker ondersteund door apps en door de telefoonmakers volop doorontwikkeld.

Per smartphone verschilt het welke biometrie ondersteunt wordt, op welke manier het geintegreerd is in het toestel en hoe veilig het is. De meest bekende en meest gebruikte zal dan de vingerafdrukscanner zijn. Deze zijn op verschillende manieren geïntegreerd. Bijvoorbeeld achter op het toestel, op de aan/uit knop of in het scherm. Vingerafdrukscanners zijn er al een tijdje en dit wordt gezien als een veilige vorm van biometrieherkenning (niet makkelijk te omzeilen). Gezichtsherkenning wordt vaak gedaan door middel van de front camera. Deze vorm is niet altijd veilig. In sommige gevallen is het zelfs mogelijk om met een foto dit te omzeilen. Daarom zijn er nu veiligere methodes ontwikkeld die bijvoorbeeld infrarood stipjes op je gezicht projecteren, vervolgens worden deze stipjes gescand en hierdoor wordt ook de diepte en dergelijke meegenomen in de vergelijking. Op deze manier is het wel veilig.

Gezichtsherkenning
In dit geval gaan we het hebben over Google's Pixel 4(XL). In deze telefoon is de vingerafdrukscanner volledig geschrapt en is doorgegaan met de ontwikkeling van gezichtsherkenning. Deze telefoon maakt gebruik van de veilige vorm van gezichtsherkenning zoals hierboven staat vermeld. Daarnaast heeft deze telefoon ook nog Soli radar technologie. Deze technologie kan vormen herkenning door radar golven uit te zenden en kijken hoe die golven terugkomen. Zo kan herkend worden dat de telefoon richting een gezicht gaat om zo de gezichtsherkenning alvast aan te zetten en hierdoor het toestel nog sneller kan unlocken. Dit werkt erg goed maar in praktijk blijkt dat de afwezigheid van de vingerafdrukscanner toch ook een gemis kan zijn.

Hier ontstaat dan ook het probleem waar ik tegenaan loop (of eigenlijk liep). Ik ben de trotse bezitter van een Pixel 4XL en ben een groot fan van biometrieherkenning. Maar nu blijkt dat mijn bank app wel vingerafdruk ondersteunt maar geen gezichtsherkenning. Dit betekent dat er maar 1 optie overblijft namelijk inloggen met een pincode. Tjsaa dat is toch wel beetje verouderd, niet veilig en niet snel genoeg. Bijvoorbeeld het intypen van de pincode op een groot scherm in een publieke ruimte. Dat voelt gewoon niet zo prettig omdat iedereen makkelijk kan meekijken. En zeker bij mobiele betalingen is de betaalpas dan toch een veiligere optie (terwijl dit juist zo makkelijk had kunnen werken).

Hoe nu verder?
De bank gemaild met de vraag of en wanneer er ondersteuning voor gezichtsherkenning wordt toegevoegd aan de app. Na lang wachten en hopen dat de volgende app update gezichtsherkenning zou ondersteunen was er nog steeds geen teken dat gezichtsherkenning toegevoegd zou worden. Ik wist dat mijn bank app dit in het begin niet zou ondersteunen, maar ik had wel verwacht dat dit na verloop van tijd ingebouwd zou worden. De ondersteuning vanuit Android is er namelijk al 2 jaar.
Dus als de ondersteuning vanuit de bank er voorlopig niet zou komen moest ik me daar toch bij neer leggen. Tenzij er toch een andere manier was waardoor ik het zelf kon ondersteunen. Er die manier is er, genaamd Accessibility. Normaal gesproken wordt dit gebruikt door mensen met een beperking, zoals blinden/slechtzienden, doven/slechthorenden. Denk aan teksten kunnen vergroten, teksten laten voorlezen of video’s waar in gepraat worden live ondertitelen. Hier kun je als ontwikkelaar ook zelf iets voor maken. Accessibility apps kunnen je helpen door onder andere knoppen voor je in te klikken. Zo ontstond mijn vraag:
Is het mogelijk om met de accessibility service de gezichtsherkenning functionaliteit toe te voegen aan de bank app?
Het korte antwoord is: Ja, dat kan!

Hieronder eerst een video waar je het in actie kan zien en daarna leg ik nog uit hoe het nou precies werkt. Ik wil hier nog even vermelden dat ik deze app heb gemaakt om mijn bankieren veiliger te maken en dus niet iets van de app probeer te omzeilen.

Hoe werkt het nou precies under-the-hood?
Als proof-of-concept ben ik begonnen met het uitzoeken van wat er allemaal uitgelezen kan worden met de accessibility service. Dat is niet erg veel, maar genoeg om dingen zoals een numpad, waarmee je de pin invult, kan herkennen. Vervolgens heb ik gekeken of het daadwerkelijk mogelijk is om een knop in te drukken voor de gebruiker. En onderzocht of een biometric prompt (dit is een systeem popup die je gezicht herkent) getoond kan worden terwijl de andere app zichtbaar is. Dit bleek allemaal mogelijk en daardoor werd het ook mogelijk om alles te gaan bouwen. De app wordt herkend als die geopend is, de numpad wordt gezocht en een biometric prompt wordt getoond. Als de gezichtsherkenning succesvol is dat wordt de pincode decrypted en de juiste knoppen ingedrukt.

Hoe of waar wordt de pincode opgeslagen en is dat wel veilig?
De pincode wordt opgeslagen in een aparte app die zorgt voor het inloggen in de bank app. In deze app kun je de pincode opslaan met behulp van de gezichtsherkenning. De gezichtsherkenning zorgt ervoor dat de pincode encrypted wordt opgeslagen en alleen door jouw biometrie weer decrypted kan worden.

Wat is je ervaring in het gebruik van de app?
Nu ik kan inloggen met mijn biometrie gebruik ik de app veel vaker. Ik ervaar het als veiliger omdat niemand kan meekijken met de pincode. En dit geldt zeker voor mobiele betalingen. Sinds het mogelijk is om mobiel te betalen, wilde ik dat altijd erg graag zelf ook doen. Helaas werkte het voor mijn bank app altijd hetzelfde als contactloos betalen met je pinpas. Dus tot een bepaald bedrag zonder pincode en daarna door middel van invoeren van de pincode. Maar in zo’n drukke supermarkt met een rij achter je waar iedereen kan meekijken op je grote scherm vind ik zo’n pincode geen veilige manier en daarom ben ik het niet gaan gebruiken. Omdat ik nu met mijn biometrie de pincode kan invullen betaal ik eigenlijk vaker met mijn mobiel dan met mijn pinpas.

Geschreven door
Kevin

Draai je telefoon een kwartslag, dan ziet onze site er een stuk beter uit!