Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Sicurezza del sistema e del kernel

A livello di sistema operativo, la piattaforma Android fornisce la sicurezza del kernel Linux, oltre a una funzione IPC (secure inter-process communication) per abilitare la comunicazione sicura tra applicazioni in esecuzione in processi diversi. Queste funzionalità di sicurezza a livello di sistema operativo assicurano che anche il codice nativo sia vincolato dalla sandbox dell'applicazione. Indipendentemente dal fatto che il codice sia il risultato del comportamento dell'applicazione inclusa o dello sfruttamento di una vulnerabilità dell'applicazione, il sistema è progettato per impedire all'applicazione canaglia di danneggiare altre applicazioni, il sistema Android o il dispositivo stesso. Vedi Configurazione del kernel per le misure che puoi adottare per rafforzare il kernel sui tuoi dispositivi. Vedere il documento di definizione della compatibilità Android (CDD) per le impostazioni richieste.

Sicurezza Linux

La base della piattaforma Android è il kernel Linux. Il kernel Linux è ampiamente utilizzato da anni e viene utilizzato in milioni di ambienti sensibili alla sicurezza. Attraverso la sua storia di costante ricerca, attacco e riparazione da parte di migliaia di sviluppatori, Linux è diventato un kernel stabile e sicuro di fiducia di molte aziende e professionisti della sicurezza.

Come base per un ambiente di elaborazione mobile, il kernel Linux fornisce ad Android diverse funzionalità di sicurezza chiave, tra cui:

  • Un modello di autorizzazioni basato sull'utente
  • Isolamento del processo
  • Meccanismo estensibile per IPC sicuro
  • La capacità di rimuovere parti non necessarie e potenzialmente insicure del kernel

In quanto sistema operativo multiutente, un obiettivo di sicurezza fondamentale del kernel Linux è isolare le risorse degli utenti l'una dall'altra. La filosofia di sicurezza di Linux è proteggere le risorse degli utenti l'una dall'altra. Quindi, Linux:

  • Impedisce all'utente A di leggere i file dell'utente B.
  • Assicura che l'utente A non esaurisca la memoria dell'utente B.
  • Assicura che l'utente A non esaurisca le risorse della CPU dell'utente B.
  • Assicura che l'utente A non esaurisca i dispositivi dell'utente B (ad esempio, telefonia, GPS e Bluetooth)

La sandbox dell'applicazione

La sicurezza delle applicazioni di Android viene applicata dalla sandbox dell'applicazione, che isola le app l'una dall'altra e protegge le app e il sistema da app dannose. Per ulteriori dettagli, vedere Sandbox dell'applicazione .

Partizione di sistema e modalità provvisoria

La partizione di sistema contiene il kernel di Android e le librerie del sistema operativo, il runtime dell'applicazione, il framework dell'applicazione e le applicazioni. Questa partizione è impostata in sola lettura. Quando un utente avvia il dispositivo in modalità provvisoria, le applicazioni di terze parti possono essere avviate manualmente dal proprietario del dispositivo ma non vengono avviate per impostazione predefinita.

Autorizzazioni del file system

In un ambiente in stile UNIX, i permessi del filesystem assicurano che un utente non possa alterare o leggere i file di un altro utente. Nel caso di Android, ogni applicazione viene eseguita come un proprio utente. A meno che lo sviluppatore non condivida esplicitamente i file con altre applicazioni, i file creati da un'applicazione non possono essere letti o modificati da un'altra applicazione.

Linux con protezione avanzata

Android utilizza Security-Enhanced Linux (SELinux) per applicare i criteri di controllo degli accessi e stabilire il controllo degli accessi obbligatorio (mac) sui processi. Per i dettagli, vedere Linux con protezione avanzata in Android .

Avvio verificato

Android 6.0 e versioni successive supportano l'avvio verificato e device-mapper-verity. L'avvio verificato garantisce l'integrità del software del dispositivo a partire da una radice hardware di attendibilità fino alla partizione di sistema. Durante l'avvio, ogni fase verifica crittograficamente l'integrità e l'autenticità della fase successiva prima di eseguirla.

Android 7.0 e versioni successive supportano l'avvio verificato rigorosamente applicato, il che significa che i dispositivi compromessi non possono avviarsi.

Vedi Avvio verificato per maggiori dettagli.

Crittografia

Android fornisce una serie di API crittografiche per l'utilizzo da parte delle applicazioni. Questi includono implementazioni di primitive crittografiche standard e comunemente usate come AES, RSA, DSA e SHA. Inoltre, vengono fornite API per protocolli di livello superiore come SSL e HTTPS.

Android 4.0 ha introdotto la classe KeyChain per consentire alle applicazioni di utilizzare l'archiviazione delle credenziali di sistema per chiavi private e catene di certificati.

Rooting di dispositivi

Per impostazione predefinita, su Android solo il kernel e un piccolo sottoinsieme delle applicazioni principali vengono eseguiti con i permessi di root. Android non impedisce a un utente o un'applicazione con autorizzazioni di root di modificare il sistema operativo, il kernel o qualsiasi altra applicazione. In generale, root ha pieno accesso a tutte le applicazioni ea tutti i dati dell'applicazione. Gli utenti che modificano le autorizzazioni su un dispositivo Android per concedere l'accesso root alle applicazioni aumentano l'esposizione della sicurezza ad applicazioni dannose e potenziali difetti delle applicazioni.

La possibilità di modificare un dispositivo Android di loro proprietà è importante per gli sviluppatori che lavorano con la piattaforma Android. Su molti dispositivi Android gli utenti hanno la possibilità di sbloccare il bootloader per consentire l'installazione di un sistema operativo alternativo. Questi sistemi operativi alternativi possono consentire a un proprietario di ottenere l'accesso come root per eseguire il debug di applicazioni e componenti di sistema o per accedere a funzionalità non presentate alle applicazioni dalle API Android.

Su alcuni dispositivi, una persona con il controllo fisico di un dispositivo e un cavo USB è in grado di installare un nuovo sistema operativo che fornisce i privilegi di root all'utente. Per proteggere i dati utente esistenti da compromessi, il meccanismo di sblocco del bootloader richiede che il bootloader cancelli i dati utente esistenti come parte della fase di sblocco. L'accesso root ottenuto sfruttando un bug del kernel o un buco di sicurezza può aggirare questa protezione.

La crittografia dei dati con una chiave archiviata sul dispositivo non protegge i dati dell'applicazione dagli utenti root. Le applicazioni possono aggiungere un livello di protezione dei dati utilizzando la crittografia con una chiave memorizzata fuori dal dispositivo, ad esempio su un server o una password utente. Questo approccio può fornire una protezione temporanea mentre la chiave non è presente, ma a un certo punto la chiave deve essere fornita all'applicazione e diventa quindi accessibile agli utenti root.

Un approccio più solido alla protezione dei dati dagli utenti root è attraverso l'uso di soluzioni hardware. Gli OEM possono scegliere di implementare soluzioni hardware che limitano l'accesso a tipi specifici di contenuti come DRM per la riproduzione di video o l'archiviazione attendibile relativa a NFC per il portafoglio Google.

In caso di dispositivo smarrito o rubato, la crittografia completa del filesystem sui dispositivi Android utilizza la password del dispositivo per proteggere la chiave di crittografia, quindi la modifica del bootloader o del sistema operativo non è sufficiente per accedere ai dati dell'utente senza la password del dispositivo dell'utente.

Funzionalità di sicurezza dell'utente

Crittografia del file system

Android 3.0 e versioni successive forniscono la crittografia completa del file system, quindi tutti i dati dell'utente possono essere crittografati nel kernel.

Android 5.0 e versioni successive supportano la crittografia dell'intero disco . La crittografia dell'intero disco utilizza un'unica chiave, protetta dalla password del dispositivo dell'utente, per proteggere l'intera partizione dei dati utente di un dispositivo. All'avvio, gli utenti devono fornire le proprie credenziali prima che qualsiasi parte del disco sia accessibile.

Android 7.0 e versioni successive supportano la crittografia basata su file . La crittografia basata su file consente di crittografare diversi file con chiavi diverse che possono essere sbloccate in modo indipendente.

Maggiori dettagli sull'implementazione della crittografia del file system sono disponibili nella sezione Crittografia .

Protezione della password

Android può essere configurato per verificare una password fornita dall'utente prima di fornire l'accesso a un dispositivo. Oltre a impedire l'uso non autorizzato del dispositivo, questa password protegge la chiave crittografica per la crittografia completa del file system.

L'utilizzo di una password e / o delle regole di complessità della password può essere richiesto da un amministratore del dispositivo.

Amministrazione del dispositivo

Android 2.2 e versioni successive forniscono l'API di amministrazione del dispositivo Android, che fornisce funzionalità di amministrazione del dispositivo a livello di sistema. Ad esempio, l'applicazione di posta elettronica Android integrata utilizza le API per migliorare il supporto di Exchange. Tramite l'applicazione E-mail, gli amministratori di Exchange possono applicare criteri per le password, comprese password alfanumeriche o PIN numerici, su tutti i dispositivi. Gli amministratori possono anche cancellare da remoto (ovvero ripristinare le impostazioni di fabbrica attivate) i telefoni smarriti o rubati.

Oltre a essere utilizzate nelle applicazioni incluse nel sistema Android, queste API sono disponibili per fornitori di terze parti di soluzioni di gestione dei dispositivi. I dettagli sull'API sono forniti in Device Administration .