Crittografia delle credenziali utente usando AES: come nascondere la chiave

1

Uno dei miei software (un pacchetto R) deve salvare informazioni sensibili sugli utenti del disco.

Cifrò tali informazioni usando la crittografia AES usando una chiave casuale che viene generato al momento dell'installazione (che viene salvato nella stessa directory in cui memorizzo il profilo utente).

Sto cercando di trovare un modo per offuscare la chiave ed evitare che altri utenti sulla stessa macchina accedano alla chiave degli altri utenti (la chiave ovviamente ha le autorizzazioni di lettura solo per gli utenti che la hanno creata, ma i super user possono usare la chiave e leggi altri profili).

Vorrei sapere:

  1. è davvero necessario preoccuparsi dei superutenti? Il mio istinto mi dice di no: in principio, qualunque sia il metodo di crittografia, un superutente può leggere tutti i file e in definitiva qualsiasi tipo di chiave degli utenti;

  2. è un modo migliore per memorizzare un profilo utente diverso dalla crittografia utilizzando AES o qualsiasi altro metodo?

posta lucacerone 18.04.2015 - 09:47
fonte

2 risposte

1

is it really necessary worrying about superusers? My gut feeling says no: in princible whathever the encryption method a superuser can read all the files and ultimately any kind of keys of the users;

Tipo di. Anche se il file è crittografato e la decrittografia viene eseguita solo all'interno del processo, il superutente ha accesso alla maggior parte dei sistemi alla memoria del processo e può quindi estrarre i dati decrittografati da lì. Ovviamente ci vuole molta più conoscenza per farlo invece di limitarsi a leggere il semplice file.

is there a better way store a user profile other than encrypting it using AES or any other method?

Questa non è una domanda facile e dipende molto dall'ambiente in cui lavori, da come ti fidi degli utenti, dalla sicurezza generale, dalla sensibilità dei dati e forse anche da una politica aziendale o da restrizioni simili. Se non ti fidi del superutente o temi un compromesso del sistema, semplicemente non memorizzi e gestisci alcun dato sensibile sul sistema. Se gli utenti possono essere indotti a eseguire codice nel sistema, non sarà di aiuto se i file sono crittografati ma possono essere decifrati senza l'interazione dell'utente ...

In breve: non esiste una risposta generale. Non esiste una sicurezza al 100% e devi valutare i rischi nel tuo ambiente e quali sono i rischi accettabili. Basandoti su questo, puoi andare nel modo economico ad alto rischio o nel modo costoso a basso rischio o qualcosa in mezzo. In alcuni casi "migliore" significa facilità d'uso al costo di un rischio più elevato, in altri casi "migliore" è a basso rischio anche se causa problemi di usabilità e altri costi. Avere la chiave insieme ai dati crittografati è sicuramente un rischio elevato che potrebbe essere abbassato ma non eliminato dall'offuscamento delle funzionalità chiave e anti-debug nel software di decodifica.

    
risposta data 18.04.2015 - 10:11
fonte
0

Non sono un programmatore ma penso che se non vuoi che le persone abbiano accesso al tuo codice allora devi renderlo lato server, il codice eseguito dal lato client, deve essere disponibile non criptato sul lato client ad un certo punto.

Questo è esattamente come il DRM: stai dando all'utente un lucchetto, e anche la chiave, e ti aspetti che sia in grado di dire cosa possono fare con esso.

È teoricamente impossibile: se il loro computer può eseguire il codice, deve essere decrittografato lì. E se il suo AND decrittografato è disponibile all'utente, in realtà non dovresti passare il tempo a sviluppare un modo per impedire alle persone di leggerlo o copiarlo o fare qualsiasi cosa ... guarda solo quanto successo di Hollywood e dei giochi le aziende sono crollate in giorni o settimane se vale il tempo e lo sforzo allora la gente .

Sposta la logica sul lato server se vuoi, non hai detto cosa fa esattamente il tuo programma quindi non posso darti idee, ma forse non memorizzi mai il profilo utente sul dispositivo ma sul tuo server? Difficile dirlo senza sapere cosa vuoi che questo profilo utente faccia, ma ce l'hai.

Anche la sicurezza per oscurità non funziona quasi mai, puoi offuscare il tuo codice il più difficile che puoi, ma questo fermerà solo le persone meno determinate come ho detto che se lo vogliono abbastanza lo supereranno .

    
risposta data 18.04.2015 - 10:31
fonte

Leggi altre domande sui tag