Non c'è niente che puoi fare per "proteggere" la chiave di crittografia finché la chiave esiste da qualche parte nell'ambiente di un utente.
Ecco alcuni possibili vettori di attacco:
- Ho potuto scansionare la memoria del computer ed estrarre la chiave una volta caricata nella RAM.
- Potrei esaminare le risorse del tuo programma e trovare qualsiasi cosa (come una stringa) che assomigli alla tua chiave.
- Potrei decodificare il tuo programma per scoprire come viene caricata la chiave, quindi riprodurre gli stessi passaggi per caricare la chiave da solo.
Finché la chiave di crittografia esiste in un ambiente controllato da un potenziale hacker, l'hacker può modificare l'ambiente in qualsiasi modo necessario per trovare la chiave. L'unico modo possibile per impedire a detto hacker di ottenere la chiave sarebbe isolare la crittografia in un ambiente che il controllo dell'hacker non può controllare. Un paio di soluzioni possibili:
- Un dispositivo basato su hardware con la chiave integrata che esegue la crittografia per te. Dovrebbero essere prese misure per proteggere il dispositivo fisico.
- Una soluzione basata su server in cui i dati vengono caricati, crittografati e quindi scaricati.
- Uno schema di crittografia asimmetrico, in cui una chiave "pubblica" viene utilizzata per crittografare e una chiave "privata" viene utilizzata per decrittografare (o viceversa), sebbene ciò dipenda dallo scopo di "nascondere" le chiavi.