Verifica di duplicati con valori crittografati

4

Speravo di avere qualche consiglio su un particolare compito che sto cercando di implementare.

Ho una tabella che memorizza i dati protetti e restituisce un ID come rappresentazione di tali dati. Nessun problema lì. Ad esempio, se viene memorizzato un numero di previdenza sociale, il codice genera un ID rappresentativo e memorizza il numero di previdenza sociale in modo codificato nella tabella. La crittografia viene eseguita utilizzando la crittografia busta.

Ecco il mio problema. Ogni volta che arriva un nuovo valore, non voglio creare un nuovo ID se i dati esistono già. Devo controllare per vedere se il valore esiste già e, in tal caso, restituire l'ID esistente. Il problema che ho è che il valore crittografato è diverso ogni volta e certamente non posso decrittografare ogni valore nel database per verificare la presenza di un duplicato. Potrei creare un hash unidirezionale e archiviarlo, ma, se lo faccio, dovrei saltarlo per motivi di sicurezza e l'hash sarà diverso ogni volta.

Quindi spero di ricevere consigli / consigli su come raggiungere questo obiettivo? Come verificare la presenza di duplicati quando il valore è archiviato in modo crittografato.

Grazie!

    
posta Jason 04.01.2018 - 19:35
fonte

1 risposta

1

Poiché un singolo hash di un valore può essere vulnerabile alla forza bruta, le tabelle arcobaleno o anche una semplice ricerca di Google per il valore hash e l'utilizzo di un valore salt per riga non consentono di eseguire ricerche con chiave da considerare se un hash con chiave (HMAC) soddisferà le tue esigenze.

Con un HMAC è necessario generare una chiave crittograficamente casuale che non è archiviata insieme ai dati, ma è possibile accedervi dall'applicazione.

Quindi usi la funzione hash_hmac per calcolare l'HMAC di un determinato valore identificativo (usando la chiave generata dall'alto). Questo è un valore univoco che puoi quindi memorizzare insieme ai dati e utilizzarlo per determinare se hai già inserito una riga con quel valore in precedenza.

Assicurati di selezionare una strong funzione di hashing (come SHA256) per garantire che HMAC sia il più strong possibile.

L'utilizzo di un HMAC attenuerà il rischio di divulgazione di informazioni tramite tabelle forza / arcobaleno a condizione che la chiave segreta sia sufficientemente casuale e rimanga segreta. Dovresti proteggere quella chiave proprio come stai proteggendo le tue chiavi di crittografia.

    
risposta data 11.01.2018 - 20:56
fonte

Leggi altre domande sui tag