Voglio implementare una ricerca su dati crittografati. Ho trovato un blogpost , che spiega 3 metodi . Un metodo è utilizzare la crittografia deterministica, che sto cercando di implementare. Ma il mio caso d'uso è leggermente diverso.
La mia applicazione fornisce un'enciclopedia end-to-end, in modo che io (come fornitore di servizi) non possa leggere i dati dell'utente. I dati sono crittografati sul client dell'utente. Ora voglio cercare tra i dati di diversi utenti. La funzione di ricerca e i risultati non sono pubblici, saranno utilizzati solo internamente per calcolare alcuni metadati, che vengono inviati al proprietario dei dati. Non ho bisogno di conoscere i dati non criptati, solo la loro relazione. I dati non sono un linguaggio naturale, quindi l'analisi della frequenza o gli attacchi al dizionario non dovrebbero essere un problema, ad esempio nomi di persone e indirizzi email.
Per rendere deterministico la crittografia, devo usare lo stesso sale per ogni dato ed è noto a tutti. (Ad esempio, userei la funzione hashpw di bcrypt sempre con salt "staticsalt".)
- È ancora abbastanza sicuro o usa lo stesso sale per tutti rendendolo inutile?
- Se è inutile, come dovrei implementare una ricerca attraverso i dati crittografati di più utenti? Gli altri due metodi di ricerca nel blogpost non sembrano fornire funzionalità multi-utente.