Cifrare database

di il
8 risposte

Cifrare database

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

8 Risposte

  • Re: Cifrare database

    Non si puo' fare.
    Inoltre non ha nemmeno molto senso farlo: dove salvi la password per decifrare il db?
  • Re: Cifrare database

    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?)
  • Re: Cifrare database

    Forse è meglio usare FilePermission?
  • Re: Cifrare database

    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.
  • Re: Cifrare database

    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.
  • Re: Cifrare database

    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)
  • Re: Cifrare database

    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.
  • Re: Cifrare database

    Da Migiorabile:
    1) con le opportune competenze, scoprire la password cablata nel codice e' questione di minuti
    Intendi de-compilando un programma in java? Mi chiedevo se potresti dirmi come fai, cioè il programma che si potrebbe usare (sempre se è lecito e vuoi dirmelo,è chiaro)
Devi accedere o registrarti per scrivere nel forum
8 risposte