Recentemente, mi sono imbattuto in un sito web che richiede di cambiare la mia password dopo che è trascorso X giorni da quando ne avevo creato l'ultima. Intelligentemente, il servizio ha fatto in modo che la password non corrispondesse (approssimativamente) a qualsiasi altra che avevo usato prima (cosa che chiaramente non usava permutazioni). Tuttavia, ero incuriosito da come avrebbe potuto farlo, dal momento che la mia comprensione ingenua all'epoca era che avrebbero dovuto archiviare testo semplice per calcolare una distanza tra due stringhe.
Cercando di non assumere il peggio del sito web (gestito da un'organizzazione multi-miliardaria, per uso interno dei dipendenti), ho approfondito un po 'di più i metodi che sono stati utilizzati. Il primo che ho pensato è stato il paragone con hash sub-string (l'ho immediatamente buttato fuori a causa del possibile indebolimento del testo in chiaro). Pensavo che potessero fare l'operazione di permutazione-hashing (Ancora una volta, l'ho buttato fuori perché corrispondeva approssimativamente, e anche con alcune modifiche, sembrava fare abbastanza bene).
Ecco quando ho incontrato LSH come concetto. Ho pensato che fosse un'idea carina, che permetteva un confronto dei dati a conoscenza zero. Cioè, costruire un hash che ha un'alta probabilità di abbinare le cose simili a se stesso, ma comprime e non contiene necessariamente le informazioni del testo in chiaro da cui è stato derivato.
Qualcosa sulla falsariga del link
773e2df0a02a319ec34a0b71d54029111da90838cbc20ecd3d2d4e18c25a3025 spam1 47182cf0802a11dec24a3b75d5042d310ca90838c9d20ecc3d610e98560a3645 spam2
The nilsimsa of these two codes is 92 on a scale of -128 to +128. That means that 36 bits are different and 220 bits the same. Any nilsimsa over 24 (which is 3 sigma) indicates that the two messages are probably not independently generated.
È sicuro, e in caso contrario, esiste una versione sicura di detto metodo? Grazie.