2013-03-25 2 views
6

Quanto è sicuro il dati localiWindows 8 Applicazioni - Local Storage Security

ApplicationData.Current.LocalSettings 

storage utilizzato in Windows 8 Conservare Apps?

Questo articolo application data storage non dice nulla sulla sicurezza, nemmeno this one.

Questi dati possono essere manipolati dall'esterno dell'app?

ho guardato la posizione dei dati di

C: \ Users [nome utente] \ AppData \ Local \ Packages [package_namespace] \ LocalState)

ma non lo abbiamo trovato. Dove viene salvato esattamente?

Sto cercando di valutare la sicurezza di questo meccanismo di archiviazione per decidere se posso memorizzare lì informazioni di sicurezza importanti.

risposta

4

Dopo un po 'di più indagini che ho trovato:

http://lunarfrog.com/blog/2012/09/13/inspect-app-settings/

I dati vengono memorizzati in

C: \ Users [nome utente] \ AppData \ Local \ Packages [package_namespace] \ LocalState \ Impostazioni \ settings.dat

che è un file di registro di Windows NT (REGF) che può essere aperto con l'editor del Registro di sistema e può anche essere manipolato.

Significato, la memoria locale NON è sicura.

Se non c'è altro modo, encrypting the data e offuscamento delle chiavi è una possibilità.

+0

Da cosa e chi si desidera proteggere i dati? Lettura? Modifica? Dall'utente? Da altre applicazioni sulla macchina? –

+0

Da tutto tranne la lettura e la scrittura dall'app su una determinata macchina. – dschenk

+1

Per quella costellazione, "sicuro" è un termine molto tenue. Anche se crittografate i dati, è necessario archiviare la chiave all'interno dell'app. Quindi se qualcuno vuole davvero leggerlo, estrarrà la chiave e decodificherà i dati stessi. È il motivo per cui il DRM solo software è così facile da hackerare: se qualcuno può leggerlo, è probabile che anche qualcun altro possa leggerlo. –

2

Questo articolo di archiviazione dei dati delle applicazioni non dice nulla sulla sicurezza, né lo fa. Questi dati possono essere manipolati dall'esterno dell'app?

Tale spazio è simile a iOS's Core Data. Il suo input essenzialmente non attendibile a meno che non sia protetta la memoria (sotto il livello dell'applicazione). Anche se lo spazio di archiviazione è protetto con crittografia, è probabile che non sia autenticato e pertanto soggetto a manomissioni.

Se non c'è altro modo per crittografare i dati e offuscare le chiavi è una possibilità.

Su piattaforme Windows, il modo standard per proteggere i dati sensibili è utilizzare l'API di protezione dati (DPAPI). Utilizzare DPAPI con il segreto fornito dall'utente (l'entropia aggiuntiva nelle API) per la migliore protezione. Memorizzate i dati di DPAPI con il profilo dell'utente, nel registro o sul filesystem. Vedere, ad esempio, Windows Data Protection, How to: Use Data Protection e Data protection API (Windows Store apps). Michael Howard e David LeBlanc hanno un buon trattamento del tema in .Vedere il capitolo 9, Protezione Segreto dati, a partire da pagina 299.

Se si desidera base di dati come la crittografia, guarda SQLCipher. Utilizza la crittografia autenticata, quindi fornisce riservatezza e integrità. Windows 8 supporta le librerie native, anche sui loro telefoni (vedere, ad esempio, Native code on Windows Phone 8).

3

Se si tratta di credenziali utente che si desidera archiviare, dare un'occhiata alla classe PasswordVault. Altrimenti usa DPAPI come ti hai già suggerito.