Sto sviluppando un programma piuttosto standard che consente agli utenti di salvare il proprio lavoro in un formato file personalizzato e riaprirlo in seguito. Ora vorrei aggiungere la possibilità di crittografare il file utilizzando una password definita dall'utente e mi chiedo quali passi intraprendere e quali tecnologie utilizzare.
Da quanto ho letto sull'argomento penso di aver bisogno di un modo per ricavare una chiave di crittografia dalla password, così come un algoritmo di crittografia simmetrica che verrà usato per crittografare il contenuto del file pertinente. Devono esserci alcuni dati non crittografati nel file per necessità (numero magico / versione, parametri di crittografia / sali / IV) e un modo per verificare che quei parametri non crittografati non siano stati manomessi. Infine, per decifrare il file abbiamo bisogno di un modo per verificare che la password inserita fosse effettivamente corretta, senza introdurre un potenziale vettore di attacco.
Quindi quali passi dovrei fare per raggiungere questo obiettivo?
Quali tecnologie dovrei usare?
Quale dovrebbe essere la progettazione generale del formato di file?
Il risultato dovrebbe essere sufficientemente sicuro dagli standard odierni per un target di utenti privati e piccole aziende.