Autore Topic: Sicurezza dati  (Letto 685 volte)

Offline wlf

  • Utente normale
  • ***
  • Post: 337
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Sicurezza dati
« il: 21 Novembre 2014, 13:08:44 CET »
0
Ho alcuni dubbi sulla sicurezza dati; sono consapevole che su un dispositivo rootato si può accedere tranquillamente ai dati, sia sharedPreference che db Sqlite. :(

Senza entrare nel merito della modalità con cui si possono proteggere i dati vorrei fugare altri dubbi.

Se fossi così bravo a realizzare un App che riesce a criptare i dati delle sharedPreference e db Sqlite vorrei capire se questi dati che leggo casomai da Application e li carico su variabili pubbliche visibili a tutte le mie Activity se possono essere carpiti da qualche altra App realizzata ad-hoc per sniffare dati di altre App? Sarebbe come mettere dei dati segreti in una cassaforte di vetro ... :)

Per quanto riguarda la classe pubblica DbAdapter questa se avesse al suo interno la chiave per leggere e scrivere i dati sul DB potrebbe essere utilizzata per leggere e scrivere i dati criptati da qualche malintenzionato? In questo caso è come mettere una cassaforte chiusa dall'interno ma con un telecomando per aprirla esterno in vista.

Infine se metto le chiavi per criptare e decriptare i dati dell'App nel codice che sicurezza ho che questi non vengano individuati? Esistono dei disassemblatori di codice che riescono a individuare delle chiavi inserite nel codice?

Vorrei sostanzialmente capire qual'è il perimetro per rendere i dati sicuri; non servirebbe a nulla perdere tempo per criptare l'impossibile e poi ritrovarsi con una cassaforte di vetro!  :)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Sicurezza dati
« Risposta #1 il: 21 Novembre 2014, 14:01:11 CET »
0
Infine se metto le chiavi per criptare e decriptare i dati dell'App nel codice che sicurezza ho che questi non vengano individuati?

Se metti le chiavi nell'app, la sicurezza è vicina allo ZERO.

Per avere una parvenza di sicurezza, devi criptare usando una chiave fornita dall'utente (con tutti i vari accorgimenti del caso), che non risiede nel terminale. Solo con questa premessa ha senso fare qualsiasi altro ragionamento su algoritmo usato, presenza in memoria, etc.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline wlf

  • Utente normale
  • ***
  • Post: 337
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Sicurezza dati
« Risposta #2 il: 21 Novembre 2014, 15:49:19 CET »
0
Se metti le chiavi nell'app, la sicurezza è vicina allo ZERO.

Vuoi dire che un APK può essere tranquillamente disassemblato decompilato trovando la chiave di critpografia? :(
Manco se la chiave pur essendo scritta in chiaro viene poi ricalcolata con un algoritmo che utilizza ad esempio l'ANDROID_ID? Anche l'algoritmo che ricalcola la chiave sarebbe facilmente ricostruibile?

Citazione
Per avere una parvenza di sicurezza, devi criptare usando una chiave fornita dall'utente, che non risiede nel terminale.

Buonanotte! :(
Nel mio caso non dovrei criptare i dati difendendoli da un terzo, ma dovrei difendermi dall'utente. :(
Sarebbe inoltre uno strazio tutte le volte che accede all'App chiedergli una password o codice d'accesso; se poi il custode della chiave è lui stesso un potenziale intruso ...  :(
L'unica difesa sarebbe quindi tenere i dati salvati online? In questo caso comprometterei il funzionamento dell'App senza una connessione dati. :(

Citazione
(con tutti i vari accorgimenti del caso)

Esiste magari un tutorial per documentarsi appunto su tutti i vari accorgimenti del caso? :)

Citazione
Solo con questa premessa ha senso fare qualsiasi altro ragionamento su algoritmo usato, presenza in memoria, etc.

Praticamente sono spacciato in partenza. :(
Dovrei scegliere solamente a quale albero impiccarmi ... :)

Offline wlf

  • Utente normale
  • ***
  • Post: 337
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Sicurezza dati
« Risposta #3 il: 30 Marzo 2015, 18:30:34 CEST »
0
Ho cercato di approfondire l'argomento ed ho trovato qualcosa nella documentazione ufficiale.

A quanto ho inteso ci sarebbe la possibilità di memorizzare i dati in modo che siano visibili solamente all'App ma l'unico limite è che è stato introdotto dalla Android 4.3 (API level 18). :(

Quindi sotto tale versione bisognerebbe comunque trovare una tecnica valida. :(

Avete qualche suggerimento dove documentarmi in merito? Grazie.

Offline ciopper90

  • Utente junior
  • **
  • Post: 106
  • Respect: +4
    • Mostra profilo
Re:Sicurezza dati
« Risposta #4 il: 30 Marzo 2015, 20:09:25 CEST »
0
Ho cercato di approfondire l'argomento ed ho trovato qualcosa nella documentazione ufficiale.

A quanto ho inteso ci sarebbe la possibilità di memorizzare i dati in modo che siano visibili solamente all'App ma l'unico limite è che è stato introdotto dalla Android 4.3 (API level 18). :(

Quindi sotto tale versione bisognerebbe comunque trovare una tecnica valida. :(

Avete qualche suggerimento dove documentarmi in merito? Grazie.

Oltretutto in molti dispositivi e implementato in software e non in hardware. rilasciando quindi i vincoli di sicurezza(se non mi sbaglio)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Sicurezza dati
« Risposta #5 il: 30 Marzo 2015, 20:20:57 CEST »
0
Veramente da quanto mi risulta  u dati visibili solo dall' app si chiamano sharedPreferences  e sono supportate a partire dalle api livello 1

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Sicurezza dati
« Risposta #6 il: 31 Marzo 2015, 07:57:29 CEST »
0
Nel mio caso non dovrei criptare i dati difendendoli da un terzo, ma dovrei difendermi dall'utente. :(

Non per cattiveria, ma è praticamente impossibile impedire all'utente generico l'accesso ai dati che l'app utilizza. Puoi renderlo molto difficile e quindi ridurre la platea di chi (se vuole) è in grado, ma una soluzione "sicura" non c'è. Perchè se l'app può accedervi, vuol dire che nel codice (disassemblabile e leggibile) ci sono tutte le informazioni per decriptare e reperire i dati.

La soluzione che cerchi comprende memorizzare almeno parte della chiave di decriptatura esternamente al terminale. Se ti vuoi difendere da terzi, c'è il cervello dell'utente, che può memorizzare una password. Se vuoi difenderti dall'utente stesso, puoi conservare parte della chiave su un server esterno che la fornisce su richiesta quando l'utente vuole accedere ai dati (poco pratico).

Sta a te decidere quanto è importante tenere sicuri i dati e da chi.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline wlf

  • Utente normale
  • ***
  • Post: 337
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Sicurezza dati
« Risposta #7 il: 31 Marzo 2015, 09:55:18 CEST »
0
Veramente da quanto mi risulta  u dati visibili solo dall' app si chiamano sharedPreferences  e sono supportate a partire dalle api livello 1

Si, ma con un dispositivo rootato puoi leggere tranquillamente i dati memorizzati nelle sharedPreferences, sono pure in chiaro quindi non fai neppure nessuna fatica.
Ho la necessità di fare in modo che l'utente non possa accedere ai dati memorizzati oppure perlomeno che siano criptati e non sia possibile risalire al dato originario.

Non per cattiveria, ma è praticamente impossibile impedire all'utente generico l'accesso ai dati che l'app utilizza. Puoi renderlo molto difficile e quindi ridurre la platea di chi (se vuole) è in grado, ma una soluzione "sicura" non c'è. Perchè se l'app può accedervi, vuol dire che nel codice (disassemblabile e leggibile) ci sono tutte le informazioni per decriptare e reperire i dati.

Quindi in sostanza anche se io cripto i dati visto che nel codice sono "obbligato" a scrivermi la chiave di decriptazione disassemblando l'app riescono comunque a decriptare i dati che volevo difendere. :(

Citazione
La soluzione che cerchi comprende memorizzare almeno parte della chiave di decriptatura esternamente al terminale.

E' chiaro quello che dici, anche se mantenere parte della decriptatura esternamente al terminale non è così elementare, magari lo fosse! ;)

Citazione
Se ti vuoi difendere da terzi, c'è il cervello dell'utente, che può memorizzare una password.

Mi vorrei difendere da terzi ma non posso permettermi di chiedere una chiave tutte le volte che l'utente accede all'App; inoltre un terzo può diventare anche un mio utente installando l'App quindi sarebbe basilare difendersi dall'utente stesso.

Citazione
Se vuoi difenderti dall'utente stesso, puoi conservare parte della chiave su un server esterno che la fornisce su richiesta quando l'utente vuole accedere ai dati (poco pratico).

Questa soluzione anche se fattibile non posso adottarla perché l'App potrebbe essere usata anche in luoghi dove non c'è copertura rete dati oppure wifi. :(
Non posso bloccare l'utente se non riesce a connettersi in remoto per ottenere la chiave di decriptatura. :(

Citazione
Sta a te decidere quanto è importante tenere sicuri i dati e da chi.

In questo caso non è per un mio vezzo che voglio proteggere i dati; sono dati che giungono da un server remoto che dovrei salvare in locale la prima volta da tenere al sicuro sia dall'utente che da terzi.

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Sicurezza dati
« Risposta #8 il: 31 Marzo 2015, 10:24:13 CEST »
0
Se son dati che giungono dal server remoto e la tua app è in grado di accedere a tale server, il tuo problema e duplice, non ti basta proteggere i dati cachati, ma dovresti proteggere anche l'accesso al server remoto.

Cmq, mi viene difficile capire, come una App, che dovrebbe essere un servizio all'utente, possa aver necessità di avere dati di cui l'utente non debba venire a conoscenza. Se l'utente deve vedere solo un estratto o un elaborazione di quei dati, solo quelli dovresti scaricare dal server. A quel punto è il server che discinde cosa l'utente può vedere e cosa no. Ciò che non esce dal server non può essere letto dall'utente.

Ciao.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Sicurezza dati
« Risposta #9 il: 31 Marzo 2015, 10:33:12 CEST »
0
Cmq, mi viene difficile capire, come una App, che dovrebbe essere un servizio all'utente, possa aver necessità di avere dati di cui l'utente non debba venire a conoscenza. Se l'utente deve vedere solo un estratto o un elaborazione di quei dati, solo quelli dovresti scaricare dal server. A quel punto è il server che discinde cosa l'utente può vedere e cosa no. Ciò che non esce dal server non può essere letto dall'utente.

Sottoscrivo al 100%.

E' assurdo pretendere di poter ricreare nell'app remota (per di più off-line) la sicurezza dei dati prelevati dal server. Come dice arlabs, se non vuoi che l'utente possa accedere a certi dati, non mandarli. Manda solamente quelli strettamente necessari al funzionamento dell'app, che quindi l'utente vedrebbe comunque.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline wlf

  • Utente normale
  • ***
  • Post: 337
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Sicurezza dati
« Risposta #10 il: 31 Marzo 2015, 11:02:27 CEST »
0
Se son dati che giungono dal server remoto e la tua app è in grado di accedere a tale server, il tuo problema e duplice, non ti basta proteggere i dati cachati, ma dovresti proteggere anche l'accesso al server remoto.

L'accesso al server remoto è protetto sia da https che da utente e password salvate dall'app che sarebbero tra i dati da proteggere. L'utente conosce la password ma non il codice univoco utente che viene generato da remoto.

Citazione
Cmq, mi viene difficile capire, come una App, che dovrebbe essere un servizio all'utente, possa aver necessità di avere dati di cui l'utente non debba venire a conoscenza.

In questo caso i dati da salvare sono chiavi d'accesso ad un dispositivo esterno all'App. Questi dati non devono quindi essere esplicitati in alcun modo all'utente; si avrebbe accesso incontrollato/indesiderato ad un dispositivo remoto (centralina elettronica) e questo potrebbe pure causare seri danni. Per questo motivo i dati non debbono essere palesati all'utente.

Citazione
Se l'utente deve vedere solo un estratto o un elaborazione di quei dati, solo quelli dovresti scaricare dal server. A quel punto è il server che discinde cosa l'utente può vedere e cosa no. Ciò che non esce dal server non può essere letto dall'utente.

Non ho pretesa di mantenere segreti i dati memorizzati in di Sqlite che contengono il log delle variazioni effettuate sul dispositivo remoto. La conoscenza di questi da parte dell'utente non costituisce un pericolo per il funzionamento dell'apparato remoto. Sono i codici d'accesso dell'apparato che voglio difendere. ;)