Cifrare database

Forum di discussione sul linguaggio Java e JSP

Moderatore: Toki

Regole del forum
Leggi: IProgrammatori.it - Regolamento Forum
Avatar utente
federaimondi
Utente Junior
Messaggi: 16
Iscritto il: 16 feb 2017, 14:41

Cifrare database

Messaggioda federaimondi » 11 ago 2017, 09:18

Buongiorno,
avrei bisogno di un consiglio. Ho sviluppato un applicativo che si appoggia su un DB scritto con SQLITE e volevo cifrare il file .db così da non farlo manipolare se non quando il programma è avviato.
Mi date un punto di inizio,un testo, un blocco di codice un santo a cui affidarmi? Mi sto un pò perdendo.
Sarebbe da usare la libreria java.security e javax.crypto? Qualche link o qualche testo a riguardo lo avete?

Grazie
Avatar utente
migliorabile
Utente Senior
Messaggi: 2615
Iscritto il: 05 apr 2013, 09:44

Re: Cifrare database

Messaggioda migliorabile » 11 ago 2017, 11:07

Non si puo' fare.
Inoltre non ha nemmeno molto senso farlo: dove salvi la password per decifrare il db?
Avatar utente
federaimondi
Utente Junior
Messaggi: 16
Iscritto il: 16 feb 2017, 14:41

Re: Cifrare database

Messaggioda federaimondi » 11 ago 2017, 11:47

Il meccanismo è:
Al primo accesso crea il db dove vengono memorizzate un utente ed una pass dell'utilizzatore del programma.
Ad ogni altro avvio dell'applicativo vengono richieste le credenziali altrimenti esce in automatico dal programma.
Poi, con una password interna al programma, cifra e decifra il db ad ogni query solo se il nome utente e la password dell'utilizzatore sono giuste.
Quindi in teoria il db resta cifrato se esternamente vogliono modificarlo con un secondo applicativo.

Inutilie? quanche consiglio?
In pratica ho messo dei check sul db per limitarne la portata, e non deve essere modificato.(assurdo?)
Avatar utente
federaimondi
Utente Junior
Messaggi: 16
Iscritto il: 16 feb 2017, 14:41

Re: Cifrare database

Messaggioda federaimondi » 11 ago 2017, 11:52

Forse è meglio usare FilePermission?
Avatar utente
migliorabile
Utente Senior
Messaggi: 2615
Iscritto il: 05 apr 2013, 09:44

Re: Cifrare database

Messaggioda migliorabile » 11 ago 2017, 13:27

1) con le opportune competenze, scoprire la password cablata nel codice e' questione di minuti
2) cifrare e decifrare il db ogni volta lascia una copia del db non cifrato facilmente ricuperabile con i tool di ricupero dei file cancellati: questione di minuti
3) se ti serve una gestione piu' seria dell'accesso al db, usa un db piu' serio!
In pratica: inutile.
Avatar utente
federaimondi
Utente Junior
Messaggi: 16
Iscritto il: 16 feb 2017, 14:41

Re: Cifrare database

Messaggioda federaimondi » 11 ago 2017, 18:07

Ma invece se usassi qualche altra libreria che mi consentisse di bloccare la lettura,scrittura e cancellazione del db? che ne dici come soluzione?
Poi,ad ogni query, metto e tolgo l'accesso al file.
+m2+
Utente Senior
Messaggi: 292
Iscritto il: 10 mag 2017, 18:22

Re: Cifrare database

Messaggioda +m2+ » 11 ago 2017, 18:25

Se vuoi operare qualcosa di vagamente serio, bisogna che cripti e decripti le informazioni "al volo", ad esempio mediante AES, memorizzandole sotto forma di stringa binaria.
Dovrai memorizzare anche un IV (se proprio vuoi lavorare "bene"), utilizzando la password dell'utente come "qualcosa" (esempio: sale).

Se il programma è meno che banale la faccenda non è esattamente indolore.
Perdi chiaramente tutte le possibilità di fare query SQL a favore di una scansione record-per-record (almeno per quanto ricordi, è parecchio che non uso sqllite)
Avatar utente
federaimondi
Utente Junior
Messaggi: 16
Iscritto il: 16 feb 2017, 14:41

Re: Cifrare database

Messaggioda federaimondi » 11 ago 2017, 18:44

migliorabile ha scritto:3) se ti serve una gestione piu' seria dell'accesso al db, usa un db piu' serio!


Sto già optando per altri dbms embedded.

Torna a “Java”

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti