Lo scopo è lo stesso dell'hashing: dato un insieme di documenti riservati, voglio elaborarli e archiviare qualcosa di sicuro come hash salato / bcrypt. Successivamente, quando viene fornito un nuovo documento, voglio verificare se esiste già nel database.
Qualcosa come il monitoraggio delle perdite.
Il problema è che se questo nuovo documento è leggermente modificato rispetto a quello originale, il sistema dovrebbe anche dire che sono molto simili.
Cercando di risolvere questo compito, ho preso in considerazione la prima normalizzazione del testo (eliminazione di punteggiatura, lettere maiuscole, troncamenti, ecc.) e quindi la ricerca di duplicati fuzzy (quasi duplicati e shingling).
Ad ogni modo, non sono sicuro che sia sicuro: per esempio, se la finestra di scandole è piuttosto piccola, allora la forza bruta è possibile. Per lunghezza della finestra = 3 e 50 lettere, otteniamo 125 k combinazioni e poche collisioni. Salting non è d'aiuto: l'attacker conosce l'algoritmo e può organizzare il brute forcing non come 'xyz', ma come 'xyzsalt' e prova tutte le combinazioni 125k 'xyz'. Chissà che altro può esserci di sbagliato nella sicurezza di questo approccio?
Quindi, è per questo che voglio chiedere: ci sono alcuni algoritmi sicuri per la ricerca fuzzy matching / near-duplicate?