Sto costruendo un'applicazione in cui gli utenti inviano file con una password per la crittografia a un server tramite ssl. Possono quindi condividere i file di crittografia con le persone
Creerò quindi un'applicazione desktop in C ++ in cui un utente può selezionare il file e decrittografarlo localmente sul desktop con una password
Option1: PGP Il mio primo pensiero è stato quello di usare pgp, ora se ho archiviato in modo sicuro una coppia di chiavi privata e pubblica sul server, tutti i file degli utenti potrebbero essere enceypted abbastanza facilmente sul server con la password degli utenti. Ma la mia applicazione desktop non sarà in grado di decrittografare il file con una sola password che avrei dovuto inserire la chiave privata nella mia applicazione desktop
Domanda 1: se la mia applicazione desktop è compilata, un utente malintenzionato può decompilare l'applicazione e ottenere la chiave privata, esiste un modo per archiviare in modo sicuro i dati in un programma compilato per prevenire tale violazione.
Opzione2: AES Un altro metodo che pensavo era che io uso un algoritmo di hashing per cancellare la password degli utenti e quindi usare quell'hash come chiave per crittografare il file usando la crittografia AES. Quindi sulla mia applicazione desktop utilizzo lo stesso algoritmo di hash per ricreare la chiave quando il destinatario del file inserisce la password per decodificare il file
Domanda2: lo stesso problema, se un attaker decompila il mio programma e vedere quale algoritmo di hashing viene usato per tornare al punto di partenza, ora possono solo generare hash e forzare il file aperto
Domanda 3: qualcuno sa come implementare meglio questo