Come parte di un'applicazione che sto sviluppando, mi viene richiesto di memorizzare gli indirizzi email degli utenti su un DB cloud. L'indirizzo e-mail non deve essere scritto in testo normale per il normale funzionamento dell'applicazione.
Quindi, per fornire sicurezza, l'indirizzo e-mail viene crittografato e quindi memorizzato nel database. L'indirizzo email nel modulo crittografato sarà il mezzo principale per identificare gli utenti (è la chiave primaria).
Dati questi fatti, quale dei seguenti metodi di crittografia ha senso se il server del database è vulnerabile agli attacchi.
Metodo 1:
Encrypted-Email-Address = Asymmetric Cipher(Pub-Key2,
Asymmetric Cipher(Pub-Key1, Plain-text-Email-address))
Non verrà utilizzato alcun padding casuale per consentire la mappatura deterministica tra gli indirizzi e-mail semplici e cifrati, quindi la crittografia due volte
o
Metodo 2:
Encrypted-Email-Address = Symmetric Cipher(Key, Plain-text-Email-address)
Si noti che poiché la decrittografia non è richiesta per la normale operazione, le chiavi private nel metodo 1 verranno archiviate offline nel mondo fisico. La crittografia dovrà essere deterministica anche se l'indirizzo email è la chiave primaria.
Ho seguito il link . Ma l'OP sta cercando di memorizzare un campo chiave non primario, quindi non posso usarlo.
Sei a conoscenza di eventuali migliori metodologie che risolvono questo caso d'uso?