Ik zie weer meerdere reacties van mensen die denken dat je een bruikbaar authenticatiesysteem houdt als je, in plaats van templates met minutiae,
hashes daarvan opslaat in de authenticatiedatabase.
Kan iemand mij naar een betrouwbare bron verwijzen waarin duidelijk wordt beargumenteerd hoe je de
hash van "een vingerafdruk" (template met minutiae) zou kunnen opslaan - en door opnieuw een vingerafdruk te nemen, de hash ervan te berekenen en deze te vergelijken vergelijken met de eerder in de database opgeslagen hashes, zou kunnen vaststellen om wie het gaat (c.q. onbekenden de deur te weigeren)?
Vanzelfsprekend heb ik ook zelf gezocht. In een mogelijk relevante wetenschappelijke publicatie hierover, "Symmetric hash functions for secure fingerprint biometric systems" van Sergey Tulyakov et al. van de State University of New York at Buffalo, gepubliceerd in 2007 (
https://cubs.buffalo.edu/images/pdf/pub/symmetric-hash-functions-for-secure-fingerprint-biometric-systems.pdf), wordt uitgelegd hoe lastig dit is; vingerafdrukscans zijn fuzzy. Daarom gebruiken zij geen "normale" hashfuncties maar "symmetrische". Ook moeten meerdere hashes worden opgeslagen en neemt de overall betrouwbaarheid van het systeem af.
In "Rolled versus Plain Fingerprints: Matching with Cryptographic One-way hashes" (
https://www.researchgate.net/publication/222570842_Symmetric_Hash_Functions_for_Secure_Fingerprint_Biometric_Systems) schrijven Qinghai Gao et al. (Farmingdale State College) in 2017 over die bovengenoemde publicatie:
Tulyakov et al. [19] proposed an approach of using order-independent polynomials to hash the minutiae in a template. Matching is done in the hashed space. However, the polynomial based hash functions lack the security properties of
cryptographic one-way hash functions.
Daarnaast hebben zij kritiek op nog een hele reeks door anderen voorgestelde methodes om (afgeleiden van) opgeslagen vingerafdrukscans beter te beveiligen (in elk geval dat deel kan dus interessant leesvoer zijn).
Zij
zelf gebruiken MD5 (wel schrijven zij (in 2017 dus): "
Note that the hash function MD5 can be replaced with other stronger cryptographic one-way hash function such as SHA-1"). Ook is een PIN-code nodig, waardoor je zou kunnen revoken na een datalek (op zich mooi). Hun conclusie eindigt met:
In this paper the coordinates of each minutia are concatenated and then hashed. We anticipate that security could be enhanced by salting the concatenated coordinates. Future research will be conducted in the direction.
Ik begrijp zo snel niet hoe dit zou kunnen werken, maar uit het feit dat ze willen gaan salten, maak ik op dat zij zich (hoogstwaarschijnlijk terecht) zorgen maken over het reversen van hashfuncties door het brute-force (al dan niet geholpen door voorkennis, bijv. van gangbare of juist zelden voorkomende waarden van minutiae, of combinaties daarvan) genereren van artificiële vingerafdrukscans en die op dezelfde wijze door "het systeem te halen" tot je een match vindt (net zoals wachtwoordhashes meestal worden "gekraakt").
Over eventuele praktijkimplementaties van dat laatste voorstel kon ik niks vinden, wel een begin dit jaar goedgekeurd patent voor de beveiliging van patiëntgegevens waarbij van patiënten, van notabene
twee verschillende biometrische kenmerken, hashes worden berekend en (samen neem ik aan) worden omgezet in een "biometric numeric score" die in een blockchain wordt opgeslagen (
https://uspto.report/patent/grant/10,885,170). Dit wordt vast een goudmijn (not). Los van de blockchain-hype, SEH: "scan uw vinger". Vuurwerkslachtoffer: "uhh..."
Volgens mij is het als volgt (verbeter me als ik het fout heb, maar dan wel graag met steekhoudende argumenten of verwijzingen daarnaar).
Een van de kenmerken van een "normale" hashfunctie is dat als het minste geringste aan de input verandert, de uitkomst van de hashfunctie met hoogstmogelijke zekerheid, meestal flink, wijzigt (het zogenaamde avalanche effect). Bijvoorbeeld een stofje op, een kleine beschadiging van, iets meer of minder druk en/of verdraaiïng van een vinger op de scanner zal dus tot een totaal andere hash leiden. Ik zie niet hoe je hiermee een zinvol systeem zou kunnen realiseren (waarbij überhaupt vingerafdrukken worden "herkend").
Zodra je een template met minutiae, tijdens "enrollment", opslaat in de database (fictief voorbeeld: A = 86 , B = 9, C = 74, D = 17), en bij een volgende scan gecheckt wordt of de nieuwe A binnen 3% overeenkomt met de oude A, de nieuwe B binnen 23% van de oude B, enzovoorts - heeft dat natuurlijk helemaal niets met hashen te maken.
Nb. Te vaak zie ik marketingmensen moeilijke en "onhackbare" begrippen gebruiken (zoals "military grade encryption") bij technieken waarbij deze helemaal niet worden toegepast - om kopers een "warm gevoel" te geven. Het is ook denkbaar dat ze gewoon niet weten waar de klepel hangt en ergens hebben gelezen dat een hash soms ook een vingerafdruk wordt genoemd.
Als, in bovenstaande verzonnen voorbeeld, de getallen A, B, C en D altijd 0..99 zijn en het vereiste nauwkeurigheidpercentage per coëfficient nooit groter is dan 99%, kun je die getallen natuurlijk achter elkaar plakken, dus bijv. 8603092174101702 - maar dat heeft niets met hashen te maken. Je kunt
dat resulterende getal natuurlijk wel hashen, maar daar heb je niks aan (bovendien is het te reversen door een aanvaller, vooral als je de percentages kent - zoals gebruikt in de specifieke toepassing). Dat reversen kun je
tijdrovender maken met bijv. Argon2, maar daar heb je
zelf dan ook last van elke keer als je van een aangeboden vingerafdrukscan wilt vaststellen of het om een bekende in jouw systeem gaat - en zo ja, wie.
Als minutiae van een vingerafdrukscan biometrische persoonsgegevens zijn (dat lijkt mij wel, net als de lengte van een persoon), ga ik ervan uit dat het, met de huidige kennis en technieken van nu, onmogelijk is om gegarandeerd onomkeerbare afgeleiden van die minutiae te bepalen en (langdurig) op te slaan. En zelfs als dat mogelijk zou zijn: vingerafdrukscanners
zelf kunnen de scan en/of de daaruit berekende minutiae voor onbekende tijd opslaan (zie bijv.
https://security.nl/posting/410351 ) of op onveilige wijze overdragen naar bijv. een TCS (toegangscontrolesysteem). En ook in dat TCS kunnen de minutiae bijv. in een paging file terechtkomen en/of (lang genoeg) in RAM staan om door een ongeautoriseerde te worden gekopiejat.
Kortom, ik ben het (deze keer ;-) eens met Arnoud.
"Further reading" over gebruikte technieken in vingerafdrukscanners en mogelijke systeemaanvallen: "Fingerprint Vulnerability: A Survey" door Seyedehzahra Hosseini, Iowa State University:
https://www.researchgate.net/publication/325834257_Fingerprint_vulnerability_A_survey.