Come crittografare i file senza fornire l'accesso all'utente? [duplicare]

-1

Non so se dovrei fare questa domanda su security.SE o stackoverflow, quindi sposta il mio post se necessario.

Desidero memorizzare i miei dati di applicazione (C #) in modo che l'utente non possa leggerli o modificarli. Se crittografo i file, avrò bisogno di una password per poterli decodificare quando il mio programma deve leggerli.

Dove conserverei questa password (perché il codice sorgente può essere letto con i disassemblatori, quindi memorizzare le password nel codice non è un'opzione)?

C'è un'altra opzione per la memorizzazione dei dati rispetto all'utilizzo di una password? In caso contrario, quale sarebbe il posto migliore in cui memorizzare la password senza che l'utente possa accedervi?

    
posta pascalhein 27.06.2013 - 19:34
fonte

1 risposta

4

Quello di cui stai parlando è il famigerato problema del DRM. Purtroppo non c'è modo di farlo. Il problema fondamentale è di fiducia. Negli attuali sistemi moderni, l'utente è dio. Hanno il controllo dell'hardware e possono quindi abusare del sistema in ogni caso. Il tuo programma deve essere eseguito nel loro dominio. Come tale, qualsiasi cosa il tuo programma possa fare, l'utente può decodificare e fare l'ingegnere. Puoi rendere più difficile per loro capire che cosa devono fare, ma alla fine, se è sul loro hardware, è il loro sistema, non il tuo.

Questo è il DRM perché, in definitiva, il DRM consiste nell'avere un segreto protetto dall'utente che il software conosce. Come funziona DRM sulla musica? Cerca di nascondere la chiave di crittografia per la musica in modo che il software possa riprodurla, ma l'utente non può decrittografarla. Il tuo caso non è diverso. La risposta è di avere un sistema in cui l'utente non è dio (cioè, l'utente non ha accesso root alla scatola e l'hardware è considerato sicuro come sicuro) o allo stesso modo, eseguire il software su un server che controlli e limitare il loro accedere in modo tale da non poter fare ciò che non vuoi che facciano.

Se vuoi provarlo, non puoi diventare molto più sicuro della semplice chiave nel codice sorgente. Puoi provare uno dei vari sistemi commerciali per nascondere le chiavi, ma possono essere tutte infrante. La discussione di tecniche dettagliate per cercare di nasconderlo qui sarebbe a) troppo ampia e b) inutile come chiunque potrebbe cercare questo post e vedere che tipo di cose potresti fare.

    
risposta data 27.06.2013 - 20:32
fonte

Leggi altre domande sui tag