Riesame della sicurezza del sistema proposto - Come inviare le immagini in modo sicuro

1

Ho un'applicazione mobile che deve essere in grado di inviare immagini in modo sicuro ad altri telefoni cellulari. Ho cercato di scoprirlo e ho un'idea nella mia mente su come potrebbe funzionare, ma voglio passarlo da alcuni di voi per essere sicuri.

Definizioni:

  • Telefono ricevente: il telefono che riceverà le immagini. Potrebbero esserci multipli di questi.
  • Invio di telefono: il telefono che invierà le immagini. Potrebbero esserci multipli di questi.
  • Account: raggruppamento di telefoni riceventi e invio di telefoni.

Passi:

  1. Uno o più telefoni riceventi sono registrati nell'account. Ognuno di loro crea una coppia di chiavi RSA da 2048 bit utilizzando l'Android Keystore o il portachiavi iOS. La chiave pubblica viene inviata al back-end in cui viene salvata. La mia comprensione (e dalla sperimentazione) è che la chiave privata NON può essere estratta dal portachiavi Android Keystore / iOS. *
  2. Prima di inviare un'immagine, un telefono mittente scarica TUTTE le chiavi pubbliche per i telefoni riceventi. Quindi genera una chiave AES da 256 (probabilmente usando CBC?) Che usa per crittografare la foto. Quella chiave viene quindi crittografata utilizzando la chiave RSA pubblica s scaricata dal server di back-end. L'immagine crittografata, le chiavi AES crittografate e altre informazioni (IV? - dovrebbe essere anch'essa crittografata?) Viene inviata al server di back-end in cui è salvata.
  3. I telefoni riceventi scaricano le immagini dal server di backend, decodificano la chiave AES utilizzando la loro chiave privata dal loro keystore / portachiavi, quindi decodificano le immagini usando il tasto AES.
  4. Tutte le immagini vengono cancellate dal server di back-end dopo 14 giorni.

* Capisco che se un telefono disinstalla l'app, KeyPair viene perso e questo è GIUSTO.

Nota: il server di back-end salverà le immagini crittografate su un volume crittografato e tutte le comunicazioni avverranno tramite https. È possibile presumere che l'accesso al server di back-end richiederà l'autorizzazione e verrà (tentato) controllato. Mentre questo può avere implicazioni sulla sicurezza, voglio focalizzare questo post più sulle immagini (se funziona?). Se hai bisogno di maggiori dettagli sul sistema, fammelo sapere.

Domande:

  1. Quanto è sicuro questo? Cosa mi sono perso? Cos'altro dovrei prendere in considerazione? (Non sono esperto di sicurezza)
  2. Nel caso in cui qualcuno esegua l'hacking nel mio back-end e ottenga l'accesso alle immagini crittografate, quanto sono sicure le foto? (Il mio obiettivo è fare in modo che "l'hacker" debba hackerare anche il telefono degli utenti per decrittografare le immagini).
  3. È un problema che avrò la stessa chiave AES crittografata con potenzialmente più chiavi pubbliche RSA?
posta CamHart 12.09.2016 - 12:39
fonte

0 risposte

Leggi altre domande sui tag