In Android, come in tutti i dispositivi di calcolo, AIR è conforme al modello di sicurezza nativo. Allo stesso tempo, AIR conserva le proprie regole di sicurezza, che consentono di semplificare la scrittura di applicazioni dotate di connessione a Internet protette.
Poiché le applicazioni AIR su Android utilizzano il formato pacchetto Android, l'installazione rientra nel modello di sicurezza di Android. Il programma di installazione dell'applicazione AIR non è utilizzato.
I tre aspetti primari del modello di sicurezza di Android sono:
-
Autorizzazioni
-
Firme applicazione
-
ID utenti applicazione
Autorizzazioni Android
Numerose funzioni di Android sono protette dal meccanismo di protezione del sistema operativo. Per utilizzare una funzione protetta, il descrittore dell'applicazione AIR deve dichiarare che l'applicazione richiede l'autorizzazione necessaria. Quando un utente cerca di installare l'applicazione, il sistema operativo Android visualizza tutte le autorizzazioni richieste all'utente prima che il processo di installazione continui.
La maggior parte delle applicazioni AIR deve specificare autorizzazioni Android nel descrittore dell'applicazione. Per impostazione predefinita, non è inclusa nessuna autorizzazione. Le autorizzazioni seguenti sono richieste per funzioni Android protette esposte tramite il runtime AIR:
-
ACCESS_COARSE_LOCATION
-
Consente all'applicazione di accedere ai dati di posizione della rete WiFi e cellulare tramite la classe Geolocation.
-
ACCESS_FINE_LOCATION
-
Consente all'applicazione di accedere ai dati GPS tramite la classe Geolocation.
-
ACCESS_NETWORK_STATE e ACCESS_WIFI_STATE
-
Consente all'applicazione di accedere alle informazioni di rete tramite la classe NetworkInfo.
-
CAMERA
-
Consente all'applicazione di accedere alla fotocamera.
-
INTERNET
-
Consente all'applicazione di effettuare richieste di rete e di eseguire il debug remoto.
-
READ_PHONE_STATE
-
Consente al runtime AIR di disattivare l'audio nel caso di una chiamata in entrata.
-
RECORD_AUDIO
-
Consente all'applicazione di accedere al microfono.
-
WAKE_LOCK e DISABLE_KEYGUARD
-
Consente all'applicazione di impedire che il dispositivo entri in modalità sleep utilizzando le impostazioni della classe SystemIdleMode.
-
WRITE_EXTERNAL_STORAGE
-
Consente all'applicazione di scrivere sulla scheda di memoria esterna del dispositivo.
Firme dell'applicazione
Tutti i pacchetti applicazione creati per la piattaforma Android devono essere firmati. Poiché le applicazioni AIR su Android sono inserite in un formato APK Android nativo, vengono firmate in base alle convenzioni Android anziché quelle AIR. Sebbene Android e AIR utilizzino la firma del codice in maniera simile, esistono differenze significative:
-
Su Android, la firma verifica che la chiave privata sia posseduta dallo sviluppatore, ma non venga utilizzata per verificare l'identità dello stesso.
-
Per applicazioni inviate al mercato Android, il certificato deve essere valido per almeno 25 anni.
-
Android non supporta la migrazione della firma del pacchetto a un altro certificato Se un aggiornamento viene firmato da un certificato diverso, gli utenti devono disinstallare l'applicazione originale prima di poter installare l'applicazione aggiornata.
-
Due applicazioni formate con lo stesso certificato possono specificare un ID condiviso che consente a una delle due di accedere alla cache e ai file di dati dell'altra. (Tale condivisione non è supportata da AIR. )
ID utenti applicazione
Android utilizza un kernel Linux. A tutte le applicazioni installate viene assegnato un ID utente di tipo Linux che determina le autorizzazioni per operazioni quali l'accesso ai file. I file nell'applicazione, nella directory di memorizzazione e nelle directory temporanee sono protetti in accesso dalle autorizzazioni del file system. I file scritti su memoria esterna (in altre parole, la scheda SD) possono essere letti, modificati e cancellati da altre applicazioni, o dall'utente, quando la scheda SD viene montata come dispositivo di archiviazione di massa su un computer.
I cookie ricevuti con richieste internet non vengono condivisi tra applicazioni AIR.
Riservatezza dell'immagine di sfondo
Se un utente imposta un'applicazione per in funzionamento in background, alcune versioni di Android catturano una schermata che viene impiegata come miniatura nell'elenco delle applicazioni recenti. Questa schermata viene memorizzata nella memoria del dispositivo ed è accessibile da un utente malintenzionato che dispone del controllo fisico del dispositivo.
Se l'applicazione visualizza informazioni riservate, è necessario adottare le protezioni adeguate per evitare che tali informazioni vengano acquisite dalla schermata di sfondo. L'evento
deactivate
inviato dall'oggetto NativeApplication segnala che un'applicazione sta per passare allo sfondo. Utilizzate questo evento per cancellare o nascondere eventuali informazioni riservate.
Dati crittografati su Android
Le applicazioni AIR su Android possono utilizzare le opzioni di crittografia disponibili nel database SQL integrato per salvare dati crittografati. Per prestazioni di sicurezza ottimali, basate la chiave di crittografia su una password immessa dall'utente che deve essere specificata ogni volta che l'applicazione viene eseguita. Una chiave di crittografia o password archiviata a livello locale è difficile o impossibile da "nascondere" a un eventuale hacker che ha accesso ai file dell'applicazione. Se l'hacker è in grado di recuperare la chiave, la crittografia dei dati non offre alcuna protezione aggiuntiva oltre alla sicurezza del filesystem basata sull'ID utente fornita dal sistema Android.
La classe EncryptedLocalStore può essere utilizzata per salvare i dati, tuttavia tali dati non vengono crittografati su dispositivi Android. Al contrario, il modello di sicurezza Android si basa sull'ID utente dell'applicazione per proteggere i dati da altre applicazioni. Le applicazioni che impiegano degli ID utente condivisi e che sono firmate con lo stesso certificato per la firma del codice utilizzano lo stesso archivio locale crittografato.
Importante:
sui telefoni “originari”, tutte le applicazioni eseguite con privilegi principali sono in grado di accedere ai file di qualsiasi altra applicazione. Di conseguenza, i dati memorizzati mediante l'archivio locale crittografato non possono considerarsi sicuri su dispositivi originari.