Quanto è sicuro l'archiviazione isolata su Windows?

9

Uso la memoria isolata con i seguenti flag:

IsolatedStorageScope.User |IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly

Quanta sicurezza fornirà? Ci sono vulnerabilità o trucchi?

Nota : non mi sto basando esclusivamente sull'archiviazione isolata. La mia applicazione crittografa i dati, ma senza registrare la password. Ovviamente, sarà vulnerabile ai key logger e ai programmi che leggono i dati decrittografati dalla RAM, ma non credo che sia possibile proteggerli contro questi.

    
posta Casebash 26.07.2011 - 09:24
fonte

2 risposte

8

Si dovrebbe guardare alla classe .net SecureString se si è preoccupati di memorizzare i dati nella RAM: link

Ecco alcune informazioni importanti sullo storage isolato: link

Although isolated storage is well suited to the scenarios described previously, there are a few cases in which you should not use isolated storage:

  • Do not use isolated storage to store high-value secrets, such as unencrypted keys or passwords, because isolated storage is not protected from highly trusted code, from unmanaged code, or from trusted users of the computer.

Senza saperne di più sulla tua applicazione, potresti voler utilizzare DPAPI tramite Classe ProtectedMemory .

In questo modo è possibile proteggere i dati in base all'utente corrente o in base al computer corrente. Ovviamente se puoi restringerlo all'utente corrente i dati saranno più sicuri.

Quindi, lo storage isolato offre un luogo sicuro in cui archiviare i dati (non dovrai preoccuparti di sovrascrivere altri dati delle applicazioni, ma non è sicuro). ProtectedData garantirà che i dati siano al sicuro dove sono archiviati.

Spero che ti aiuti.

Ross

    
risposta data 26.07.2011 - 14:31
fonte
5

Of course, it will be vulnerable to key loggers and programs that read the decrypted data from RAM, but I don't think its possible to protect against these.

A meno che il contenuto che desideri proteggere sia estremamente prezioso, direi che probabilmente hai ragione di ignorarli. Leggere i dati decrittografati dalla RAM non sarebbe banale e probabilmente suggerisce un attacco mirato se si trova dopo la RAM dell'applicazione in particolare.

Lo storage isolato sembra essere un'astrazione .net su Windows piuttosto che un'estensione dell'API di Windows. Questo articolo MSDN rivela che le posizioni sono essenzialmente i soliti percorsi dei dati dell'applicazione. L'impatto dei flag utente, dominio e assembly è riepilogato in questo articolo .

Non sono uno sviluppatore .net di per sé, quindi ho deciso che il modo migliore per verificare cosa sarebbe successo sarebbe stato utilizzare la demo di codeproject , dai un'occhiata alle directory e guardala con procmon .

Quindi, in primo luogo, che tipo di attributi di sicurezza ha C:\Users\username\AppData\Local\IsolatedStorage avere?

Inlicenza,sembrachenoncisianodirittidiaccessospecificioltreaquellicheunutentenormalepotrebbeaspettarsidiutilizzare.

In effetti, come vedi sopra, posso entrare in valzer. Infine, provarci con procmon:

Potrebbeesserenecessarioingrandirlo,macomeinterpretazione,èsolounsetstandarddichiamateAPIWindowseunpo'diaccessoalfile.Perchépotrebbeesserediinteresse,quellochestavocercandoeraunachiamataa SetNamedSecurityInfo() che si presenta come IRP_MJ_SET_SECURITY .

In breve, penso che IsolatedStorage sia isolato come un'astrazione .net, ma .net gira attualmente su Win32, da cui non fornisce alcuna difesa a cui possa pensare. Quindi, è sicuro come scrivere file su My Documents o su qualsiasi altra posizione di App Settings che ti interessa prendere dalla prospettiva di un'app Win32. Che è esattamente quello che ha detto Ross: nessuna difesa dal codice non gestito. Mi piacciono le foto.

    
risposta data 26.07.2011 - 23:44
fonte

Leggi altre domande sui tag