Voglio memorizzare le copie dei passaporti in modo sicuro in un database, il database stesso è un normale database MySQL e su un server Web un po 'affidabile. L'utente che possiede la copia del passaporto dovrebbe solo essere in grado di caricare il proprio passaporto e non visualizzarlo. L'approccio che voglio prendere consiste nei seguenti passaggi.
Configurazione:
- L'amministratore di sistema apre la pagina tramite https
- L'amministratore invia una chiave pubblica generata al server e memorizza la chiave privata localmente (su smart card o qualcosa che non è permanentemente collegato al computer preferito)
Archiviazione passaporto:
- L'utente apre la pagina tramite https
- L'utente seleziona la copia del passaporto (immagine) nel browser e la invia al server
- Il server crittografa l'immagine con la chiave RSA pubblica e la memorizza nella colonna del database
- Il server sovrascrive qualsiasi copia non crittografata in memoria
Recupero passaporto:
- L'amministratore apre la pagina tramite https
- Il server carica la colonna crittografata e invia l'immagine crittografata tramite AJAX al browser di amministrazione
- Il browser dell'amministratore carica la chiave privata da un file o smarcard e decrittografa l'immagine utilizzando link libreria
- I dati dell'immagine non crittografati vengono iniettati nell'attributo src di un tag immagine.
(Non ho ancora trovato un buon modo per caricare la chiave privata nel browser)
Domande:
- Se il server viene violato e il database scaricato dall'attaccante, le copie del passaporto sono quindi sicure?
- Esiste un modo migliore per garantire che le copie siano sicure?