Archiviazione locale crittografataIl runtime di Adobe® AIR® comprende un archivio locale crittografato persistente per ogni applicazione AIR installata nel computer dell'utente. In questo modo, potete salvare e recuperare i dati memorizzati sul disco rigido locale dell'utente in un formato crittografato che non può essere facilmente decifrato da altri utenti. Si utilizza un archivio locale crittografato distinto per ogni applicazione AIR e ogni applicazione AIR utilizza un archivio locale crittografato diverso per ogni utente. Nota: oltre all'archivio locale crittografato, in AIR è disponibile anche una funzione per crittografare il contenuto archiviato in database SQL. Per ulteriori dettagli, consultate Uso della crittografia con i database SQL.
È possibile utilizzare l'archivio locale crittografato per memorizzare nella cache informazioni che devono essere garantite, come le credenziali di accesso per i servizi web. L'archivio ELS è indicato per memorizzare informazioni che devono rimanere private e nascoste agli altri utenti. Tuttavia, non protegge i dati da altri processi eseguiti dallo stesso account utente. Non è quindi adatto per proteggere i dati di un'applicazione, ad esempio i dati DRM o le chiavi di crittografia. Per associare l'archivio locale crittografato a ogni applicazione e utente, AIR usa DPAPI in Windows, KeyChain in Mac OS e KeyRing o KWallet in Linux. L'archivio locale crittografato utilizza la crittografia AES-CBC a 128 bit. Le informazioni nell'archivio locale crittografato sono disponibili solo per il contenuto dell'applicazione AIR nella sandbox di sicurezza dell'applicazione. Se aggiornate un'applicazione AIR, la versione aggiornata conserva i dati dell'archivio locale crittografato a meno che:
Limiti dell'archivio locale crittografatoI dati dell'archivio locale crittografato sono protetti dalle credenziali dell'account del sistema operativo dell'utente. Altre entità non possono accedere ai dati dell'archivio a meno che non accedano a tale account. Tuttavia, i dati non sono protetti dall'accesso di altre applicazioni eseguite da un utente autenticato. Poiché per il successo degli attacchi l'utente deve essere autenticato, i dati privati dell'utente sono ancora protetti (a meno che l'account utente stesso non sia compromesso). Tuttavia, i dati che l'applicazione desidera mantenere segreti, ad esempio le chiavi utilizzate per la gestione delle licenze o per il DRM (Digital Rights Management), non sono sicuri. L'ELS non è pertanto una posizione appropriata per la memorizzazione di queste informazioni, È appropriato solo per l'archiviazione dei dati privati di un utente, ad esempio le password. La perdita dei dati dell'archivio ELS si può verificare in varie circostanze. Ad esempio, l'utente potrebbe disinstallare l'applicazione ed eliminare il file crittografato. Oppure, l'ID editore potrebbe cambiare a seguito di un aggiornamento. Si consiglia pertanto di gestire l'ELS come una cache privata e non come un archivio dati permanente. Il parametro stronglyBound è stato dichiarato obsoleto e non deve essere impostato su true. L'impostazione di questo parametro su true non garantisce una protezione supplementare dei dati. Allo stesso tempo, l'accesso ai dati diventa impossibile dopo un aggiornamento dell'applicazione, anche se l'ID editore rimane lo stesso. Le prestazioni dell'archivio locale crittografato potrebbero risultare ridotte se la dimensione dei dati memorizzati supera 10 MB. Quando si disinstalla un'applicazione AIR, il programma di disinstallazione non elimina i dati memorizzati nell'archivio locale crittografato. Per l'uso dell'archivio ELS sono consigliate le seguenti modalità:
Aggiunta di dati all'archivio locale crittografatoUtilizzare il metodo setItem() statico della classe EncryptedLocalStore per memorizzare dati nell'archivio locale. I dati sono memorizzati in una tabella hash. Le stringhe vengono utilizzate come chiavi e i dati sono memorizzati come array di byte. Ad esempio, il codice seguente memorizza una stringa nell'archivio locale crittografato: var str:String = "Bob";
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(str);
EncryptedLocalStore.setItem("firstName", bytes);
Il terzo parametro del metodo setItem(), il parametro stronglyBound è opzionale. Se questo parametro è impostato su true, l'archivio locale crittografato associa l'elemento memorizzato alla firma digitale e ai bit dell'applicazione AIR di memorizzazione: var str:String = "Bob";
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(str);
EncryptedLocalStore.setItem("firstName", bytes, false);
Per un elemento memorizzato con stronglyBound impostato su true, le chiamate successive a getItem() vengono eseguite correttamente solo se l'applicazione AIR chiamante è identica all'applicazione di memorizzazione (se non sono stati modificati dati nella directory dell'applicazione). Se l'applicazione AIR chiamante è diversa dall'applicazione di memorizzazione, viene generata un'eccezione Error quando chiamate getItem() per un elemento con un'associazione forte. Se aggiornate l'applicazione, questa non sarà più in grado di leggere i dati con associazione forte che erano stati scritti in precedenza nell'archivio locale crittografato. Se il parametro stronglyBound è impostato su false (impostazione predefinita), solo l'ID dell'editore deve rimanere lo stesso per consentire all'applicazione di leggere i dati. Le porzioni dell'applicazione possono cambiare (e devono essere firmate dall'editore), ma non devono essere necessariamente le stesse porzioni dell'applicazione che ha memorizzato i dati. Le applicazioni aggiornate con lo stesso ID editore dell'originale possono continuare ad accedere ai dati. Nota: in pratica, l'impostazione di stronglyBound su true non aggiunge protezione dati supplementare. Un utente “malintenzionato” può ancora modificare un'applicazione per ottenere l'accesso agli elementi memorizzati nell'ELS. Inoltre, i dati sono protetti da minacce non utente esterne in maniera altrettanto solida a prescindere dal fatto che stronglyBound sia impostato su true o false. Per questi motivi, si consiglia di non impostare stronglyBound su true.
Accesso ai dati nell'archivio locale crittografatoPotete recuperare un valore dall'archivio locale crittografato con l'ausilio del metodo EncryptedLocalStore.removeItem(), come nell'esempio seguente: var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName");
trace(storedValue.readUTFBytes(storedValue.length)); // "Bob"
Rimozione di dati dall'archivio locale crittografatoÈ possibile eliminare un valore dall'archivio locale crittografato con l'ausilio del metodo EncryptedLocalStore.removeItem(), come nell'esempio seguente: EncryptedLocalStore.removeItem("firstName");
È possibile eliminare tutti i dati dall'archivio locale crittografato chiamando il metodo EncryptedLocalStore.reset(), come nell'esempio seguente: EncryptedLocalStore.reset(); |
|