Database di ricerca (email) sicuro

4

Cerca suggerimenti sull'implementazione di una tabella di ricerca lato server, in cui la chiave è un indirizzo email.

Obiettivo : mantieni privati questi indirizzi email, anche se i dati sul server vengono rubati.

Presupposti : il server non ha bisogno (e idealmente non dovrebbe sapere) dell'indirizzo email. I client non possono parlarsi direttamente, ma sarà un'applicazione web / nativa in modo che possano eseguire alcuni calcoli prima di effettuare query.

È possibile? Nota: la semplice memorizzazione di un hash dell'e-mail sul server renderebbe le chiavi vulnerabili a un attacco di dizionario. Il server non può semplicemente aggiungere un salt per ogni hash, perché non saprebbe quale sale usare quando viene presentato con uno specifico indirizzo email. Potrei crittografare le email con hash con una chiave globale memorizzata separatamente, ma spero che ci siano soluzioni migliori di questa.

    
posta kbs 08.06.2012 - 19:47
fonte

2 risposte

3

Esistono due diversi approcci crittografici a questo problema, una funzione hash e una crittografia asimmetrica.

Il client può hash l'indirizzo di posta elettronica utilizzando una funzione di hash crittografica come SHA-256 e inviarlo al server per la ricerca. C'è ancora il problema della forza bruta. gli indirizzi e-mail hanno i loro pro e contro. Il nome di dominio è un po 'come un sale in cui nessun utente avrà lo stesso hash risultante. Il problema è che non è un sale molto strong, Gmail è molto popolare. A peggiorare le cose, un ampio elenco di indirizzi e-mail sarebbe un utile attacco di dizionario. L'indirizzo email come chiave potrebbe non essere la scelta migliore, ma non è male.

Un design alternativo è quello di utilizzare la crittografia asimmetrica. Genera una coppia di chiavi pubblica privata, quindi elimina la chiave privata. Fornisci la stessa chiave pubblica a ogni client che viene utilizzato per crittografare l'indirizzo email e questo testo cifrato viene trasmesso al server come chiave di ricerca. Nota che c'è ancora lo stesso problema della forza bruta, ma la crittografia asimmetrica è molto più pesante di sha-256. Se questo ti preoccupa, puoi esplorare lo allungamento della chiave .

    
risposta data 08.06.2012 - 20:23
fonte
0

Se non si dispone di segreti sul lato server, il meglio che si può fare è hash l'email con un algoritmo hash lento (uno che è sintonizzato per richiedere un determinato periodo di tempo). Ad esempio, è possibile effettuare iterativamente it it volte N volte, con N scelto per garantire che l'hashing duri circa 0,1 secondi. Questo è ancora suscettibile a un attacco di dizionario, ma è meno suscettibile rispetto all'utilizzo di un hash veloce.

Se è possibile memorizzare una chiave segreta sul server in modo sicuro, è possibile crittografare l'indirizzo e-mail sotto la chiave o l'hash la combinazione dell'indirizzo e-mail e della chiave.

    
risposta data 08.06.2012 - 20:44
fonte

Leggi altre domande sui tag