Considera che un algoritmo di hash crittografico eccelle nel produrre valori digest diversi anche per le più piccole differenze di input. Anche una modifica di 1 bit nell'input causa una cascata di modifiche che produce un valore hash completamente diverso. La resistenza pre-immagine è una caratteristica necessaria per un algoritmo hash crittografico.
Ora guarda le impronte digitali. Un problema con le impronte digitali è che le relazioni tra i segni di identificazione non sono garantite come costanti tra le letture. Il tuo dito potrebbe essere leggermente gonfio a causa di diversi livelli di liquidi nel tuo corpo, o allineato in modo leggermente diverso tra gli elementi del sensore, o persino avere un pezzo di sporco su di esso, e quella potrebbe essere una differenza sufficiente a causare un valore di un elemento di differenza tra letture. Ricorda, anche un solo bit di cambiamento significherà che viene emesso un hash completamente diverso. Pertanto, non è possibile eseguire direttamente l'hash di una precisa lettura o istantanea di un'immagine di una stampa.
Tuttavia, l'immagine può essere elaborata. Ogni stampa ha una serie di "punti di riferimento", che sono punti specificamente identificabili. Le biforcazioni sono dove due creste si uniscono, una canna è dove termina una cresta, un'isola è una piccola cresta, e così via. Questi punti di riferimento possono essere identificati e possono essere misurati in relazione l'uno con l'altro. Ad esempio, se dovessi posizionare una miniatura su una griglia, potresti identificare ciascuna cella con i punti di riferimento che contiene.
Il problema diventa quindi l'allineamento della griglia. Se la griglia non è identificata in modo identico ogni volta che viene letta una stampa, non si genera lo stesso hash.
Le stampe hanno solo tre forme base: archi, loop e spirali. Sembra che sia possibile utilizzare le caratteristiche di definizione di tutte le stampe di tipo arco (ad esempio) per produrre tre punti di riferimento necessari e quindi allineare la griglia. Quindi lo elabora e identifica tutti i possibili punti di riferimento. Ma allora cosa? Che assicurazione hai che ogni punto di riferimento è atterrato nella stessa cella ogni volta? Se provi a stabilire una zona sfocata intorno alle linee della griglia, come fai a sapere quali punti di riferimento sono appena a malapena in (o fuori) la zona fuzzy?
(La stessa preoccupazione è vera se si tenta di utilizzare i radiali dal centro dei punti di riferimento: quanta tolleranza si costruisce nei vettori?
La linea di fondo è che sarà probabilmente difficile ottenere lo stesso esatto valore dell'hash ogni volta, perché le stampe non sono mai allineate precisamente in modo ripetibile.
Quindi, come è possibile utilizzare gli hash per mantenere le stampe al sicuro? Quando l'utente registra inizialmente la propria stampa, si utilizza lo stesso schema basato sulla griglia per analizzarlo e produrre un hash. Quindi si analizzano i punti di riferimento che cadono nelle zone potenzialmente sfocate e si calcola un hash distinto per ogni permutazione possibile. Creerai rapidamente un ampio set di hash che rappresentano tutti i valori potenziali della stampa di un utente. Successivamente, quando la stampa di un utente viene letta e sottoposta a hash, la cerchi nel set completo di hash su file e identifica l'utente.