Salve.
Sto realizzando un software gestionale ad interfaccia grafica in Java, che tra le altre cose deve gestire i dati di diversi clienti: si tratta di dati personali, che vengono salvati su file .txt in locale, quindi devo proteggerli adeguatamente o rischio una violazione della legge sulla privacy e potenzialmente un'accusa penale.
Al di là di questo, è anche buon senso: come proteggere i preziosi dati dei clienti da eventuali nemici della mia attività che vogliono portarmeli via?
Per il momento, ho sviluppato due metodi: criptare i file contenenti i dati dei clienti con un algoritmo di mia invenzione, non conosciuto e basato su una chiave inserita ogni volta che si vuole leggere/cancellare/modificare un file; e analogamente proteggere il programma all'avvio con username e password, per evitare che, nel caso in cui qualcuno si introduca nottetempo nell'azienda destinataria del mio software, riesca a passare la notte a cercare di trovare la chiave: avrebbe due protezioni da superare, in questo caso doppia, e quindi farebbe molta più fatica.
Il problema però è evidente: quando l'utilizzatore dell'sw inserisce username e password, il programma verifica che siano corretti perchè ne ha una copia in memoria; allo stesso modo, il criptaggio e il decriptaggio avvengono con un algoritmo inserito nel mio programma, altrimenti non funzionerebbero, e qualunque malintenzionato un minimo esperto di informatica potrebbe rivoltare come un calzino in 30 secondi i miei file .class o .jar e carpire il tutto, vanificando la mia fatica.
Come posso ovviare a questi problemi? Possibilmente senza offuscatori di cui mi fido poco, o nel caso se ne avete uno buono e fidato posso pensarci.
Altra cosa: i file possono sempre essere copiati e crackati altrove; come posso impedirlo?