Sto usando i certificati TLS del client utente (dalle smartcard) per autenticare su un programma web. Gli utenti memorizzano i dati sul server e vorrei criptare i dati memorizzati per proteggere le informazioni se il database è compromesso. Mi piacerebbe non archiviare i dati in testo semplice.
Quali sono i metodi consigliati per crittografare o proteggere i dati a riposo? Non credo di poter utilizzare la chiave privata della smartcard per decrittografare i dati poiché sono bloccati sul lato client e inaccessibili al server. L'unico metodo di autenticazione degli utenti è la smart card, quindi non posso usare una normale 'password utente' come chiave di crittografia. Sto usando Go come server web, ma una soluzione in qualsiasi lingua è buona.
UPDATE: il tipo di compromesso che sto pensando è un utente malintenzionato che ottiene un dump completo del database. Vorrei crittografare i dati in un database Redis a livello del "valore" della memoria chiave / valore. Un esempio potrebbe essere la crittografia di alcuni dati sensibili utilizzando la password dell'utente (se stavo usando le password) in modo che solo la password fornita dall'utente decodificherà correttamente i dati.
Non sto cercando un sistema operativo o una crittografia ampia come il database è ospitato da una terza parte. L'utente accede all'app Web tramite HTTPS e il programma dell'app Web comunica con il database. So che IE ha il plug-in S / MIME che consente l'uso della smart card del client per decrittografare la posta elettronica in Outlook online, ma che è fondamentalmente un programma lato client.
Qualche suggerimento?
Le piattaforme degli utenti mirate sono Windows, OS X, Linux
I browser degli utenti scelti come target sono IE, Chrome