Ho bisogno di sviluppare un sistema in cui un utente possa caricare un file tramite browser che crittografa il file e lo memorizza sul mio server. Dopo che il file è stato caricato, un altro utente può scaricare il file con un'app per iOS o Android e decrittografarlo per vederlo. Il problema è che non dovrei essere in grado di decifrare il file sul mio server, perché i file sono potenzialmente molto sensibili. Ora, non ho alcuna conoscenza reale sulla crittografia e non so da dove iniziare. Hai qualche suggerimento su quale sia la migliore pratica per questo tipo di crittografia end-to-end?
Mi è venuta un'idea di come dovrebbe essere il mio schema di sicurezza.
- Il client CMS effettua l'accesso e la sua password viene utilizzata da ora in poi come chiave di caricamento (utilizzata in seguito)
- Sul lato CMS, vengono creati utenti di app successivi (potenziale ricevitore di file), con una password di accesso (per l'app) e una chiave di download (utilizzata in seguito) per decrittografare i file scaricati.
- Il client CMS invia agli utenti dell'app la loro password di accesso e la chiave di download in una posta separata (nessuna email)
- Il client CMS carica un file che viene crittografato con una chiave casuale (utilizzata in seguito) nel browser e memorizzato sul server 1. La chiave casuale e il riferimento al file vengono crittografati con la chiave di caricamento e memorizzati sul server 2 .
- Il client CMS seleziona l'utente dell'app (una o più) per visualizzare i file caricati. In questo momento, la chiave casuale e il riferimento al file (dal passaggio 3.) vengono decodificati con la chiave di caricamento. Questo pacchetto decrittato viene duplicato e crittografato con la chiave di download dell'utente dell'app selezionata (questo passaggio viene eseguito per ogni utente di app selezionato, quindi avremo più pacchetti per ogni utente dell'app)
Questo approccio è vicino o sto andando nella direzione sbagliata?