prefazione xiii introduzione xvviii android certificatefactory e certpath ..... 127...
TRANSCRIPT
Indice generale
Prefazione ..........................................................................................xiii
Introduzione .......................................................................................xvDestinatari del libro .....................................................................xviPrerequisiti ..................................................................................xviVersioni di Android .....................................................................xviiOrganizzazione del libro .............................................................xviiConvenzioni ..............................................................................xviiiRingraziamenti ............................................................................xixL’autore .......................................................................................xixIl revisore tecnico .........................................................................xx
Capitolo 1 Modello di sicurezza di Android ...................................1Architettura di Android .................................................................. 1
Kernel di Linux ........................................................................ 1Userspace nativo ....................................................................... 2Dalvik VM ................................................................................ 3Librerie di runtime Java ............................................................ 4Servizi di sistema ...................................................................... 4Comunicazione tra processi ...................................................... 4Binder ...................................................................................... 5Librerie del framework Android ................................................ 9Applicazioni ............................................................................. 9
Modello di sicurezza di Android ....................................................11Sandboxing delle applicazioni ..................................................12Permessi ..................................................................................14IPC .........................................................................................14Firma del codice e chiavi della piattaforma ...............................15Supporto multiutente ..............................................................15SELinux ..................................................................................16Aggiornamenti del sistema .......................................................17
vi Android
Boot verificato .........................................................................17Riepilogo .....................................................................................18
Capitolo 2 Permessi .......................................................................19Natura dei permessi ......................................................................19Richiesta dei permessi ..................................................................20Gestione dei permessi ...................................................................21Livelli di protezione dei permessi ..................................................22Assegnazione dei permessi.............................................................24Applicazione dei permessi .............................................................28
Applicazione a livello di kernel ................................................28Applicazione a livello di daemon nativo ...................................29Applicazione a livello di framework .........................................31
Permessi di sistema ........................................................................35Permessi di firma .....................................................................36Permessi di sviluppo ................................................................37
User ID condiviso .........................................................................37Permessi personalizzati ..................................................................39Componenti pubblici e privati ......................................................41Permessi per activity e servizi ........................................................42Permessi per i broadcast ................................................................42Permessi per i content provider .....................................................44
Permessi per i provider statici ...................................................44Permessi per i provider dinamici ..............................................45
Pending intent ..............................................................................46Riepilogo .....................................................................................47
Capitolo 3 Gestione dei package ..................................................49Formato dei package di applicazione Android................................49Firma del codice ...........................................................................50
Firma del codice Java ...............................................................51Firma del codice Android ........................................................56
Processo di installazione dei file APK ............................................58Posizione di dati e package delle applicazioni ...........................59Componenti attivi ...................................................................59Installazione di un package locale .............................................64Aggiornamento di un package .................................................69Installazione di file APK crittografati ........................................73Forward locking ......................................................................76Implementazione del forward locking di Android 4.1 ...............76App crittografate e Google Play ...............................................78
Verifica dei package ......................................................................79Supporto di Android per la verifica dei package .......................79Implementazione di Google Play .............................................81
Riepilogo .....................................................................................82
Indice generale vii
Capitolo 4 Gestione degli utenti ...................................................83Panoramica sul supporto multiutente.............................................83Tipi di utenti ................................................................................84
Utente primario (proprietario) .................................................85Utenti secondari ......................................................................87Profili con restrizioni ...............................................................87Utente guest ............................................................................90
Gestione degli utenti .....................................................................90Strumenti a riga di comando ...................................................90Stati utente e broadcast correlati ...............................................91
Metadati utente ............................................................................91File dell’elenco utenti ..............................................................92File dei metadati utente ...........................................................92Directory di sistema utente ......................................................93
Gestione delle applicazioni per utente ...........................................94Directory dati delle applicazioni ...............................................94Condivisione delle applicazioni ................................................96
Memoria esterna ...........................................................................98Implementazioni della memoria esterna ...................................99Memoria esterna multiutente ...................................................99Permessi della memoria esterna ..............................................104
Altre funzionalità multiutente......................................................106Riepilogo ...................................................................................106
Capitolo 5 Provider di crittografia ..............................................107Architettura dei provider JCA .....................................................107
Provider del servizio di crittografia .........................................108Classi engine JCA .......................................................................111
Recupero dell’istanza di una classe engine ..............................111Nomi degli algoritmi .............................................................111SecureRandom ......................................................................112MessageDigest .......................................................................113Signature ...............................................................................114Cipher ...................................................................................115Mac .......................................................................................118Key .......................................................................................119SecretKey e PBEKey .............................................................120PublicKey, PrivateKey e KeyPair ............................................120KeySpec ................................................................................120KeyFactory ............................................................................121SecretKeyFactory ...................................................................121KeyPairGenerator ..................................................................122KeyGenerator ........................................................................123KeyAgreement ......................................................................123KeyStore................................................................................124
viii Android
CertificateFactory e CertPath ................................................127CertPathValidator e CertPathBuilder .....................................127
Provider JCA di Android .............................................................128Provider Crypto di Harmony ................................................128Provider Bouncy Castle di Android ........................................129Provider AndroidOpenSSL ....................................................132OpenSSL ...............................................................................132
Uso di un provider personalizzato ...............................................134Spongy Castle ........................................................................134
Riepilogo ...................................................................................135
Capitolo 6 Sicurezza di rete e PKI ................................................137Panoramica su PKI e SSL ............................................................138
Certificati a chiave pubblica ...................................................138Trust diretto e CA private ......................................................139Infrastruttura a chiave pubblica ...............................................140Revoca dei certificati .............................................................142
Introduzione a JSSE ....................................................................143Socket sicuri ..........................................................................143Autenticazione dei peer .........................................................144Verifica del nome host ...........................................................145
Implementazione JSSE di Android ..............................................147Gestione e convalida dei certificati .........................................147Blacklisting dei certificati .......................................................153Riesame del modello di trust PKI ..........................................157
Riepilogo ...................................................................................161
Capitolo 7 Archiviazione delle credenziali .................................163Credenziali EAP per VPN e Wi-Fi .............................................164
Certificati e chiavi di autenticazione ......................................164Archivio delle credenziali di sistema .......................................165
Implementazioni dell’archivio delle credenziali ............................166Servizio keystore ....................................................................166Tipi e versioni di key blob .....................................................168Restrizioni di accesso ............................................................168Implementazione del modulo keymaster e del servizio keystore ............................................................168Implementazione con supporto hardware di Nexus 4 .............169Integrazione nel framework ...................................................172
API pubbliche ............................................................................172API KeyChain .......................................................................172Implementazione dell’API KeyChain .....................................178Controllo dell’accesso al keystore ...........................................178Provider keystore di Android ..................................................180
Riepilogo ...................................................................................181
Indice generale ix
Capitolo 8 Gestione degli account online ..................................183Panoramica sulla gestione degli account in Android .....................183Implementazione della gestione degli account .............................184
AccountManagerService e AccountManager ..........................184Moduli autenticatori ..............................................................185Cache del modulo autenticatore ............................................186Permessi e operazioni di AccountManagerService ..................187Database degli account ...........................................................189Supporto multiutente ............................................................193Aggiunta di un modulo autenticatore .....................................194
Supporto per gli account Google ................................................197Servizio di login Google ........................................................198Autorizzazione e autenticazione per i servizi Google ..............200Google Play Services .............................................................203
Riepilogo ...................................................................................205
Capitolo 9 Sicurezza aziendale ...................................................207Amministrazione del dispositivo ..................................................208
Implementazione ...................................................................209Aggiunta di un amministratore del dispositivo ........................215Integrazione degli account aziendali .......................................218
Supporto VPN ............................................................................220PPTP ....................................................................................221L2TP/IPSec ..........................................................................222IPSec Xauth ..........................................................................222VPN basate su SSL ................................................................222VPN legacy ...........................................................................223VPN basate sulle applicazioni .................................................229Supporto multiutente ............................................................232
EAP Wi-Fi ..................................................................................234Metodi di autenticazione EAP ...............................................235Architettura Wi-Fi di Android ................................................236Gestione delle credenziali EAP ..............................................237Aggiunta di una rete EAP con WifiManager ..........................240
Riepilogo ...................................................................................242
Capitolo 10 Sicurezza del dispositivo ...........................................243Controllo dell’installazione e dell’avvio del sistema operativo .......244
Bootloader ............................................................................244Recovery ...............................................................................245
Boot verificato ............................................................................246Informazioni generali su dm-verity ........................................246Implementazione in Android .................................................247Abilitazione del boot verificato ..............................................248
x Android
Crittografia del disco ..................................................................250Modalità di cifratura ..............................................................251Derivazione della chiave ........................................................252Password di crittografia del disco ............................................253Modifica della password di crittografia del disco .....................254Abilitazione della crittografia .................................................255Avvio di un dispositivo crittografato ......................................257
Sicurezza dello schermo ..............................................................260Implementazione della schermata di blocco ...........................261Metodi di sblocco del keyguard .............................................262Protezione contro gli attacchi di forza bruta ...........................270
Debug USB sicuro ......................................................................271Panoramica su ADB ...............................................................271Esigenza di ADB sicuri ..........................................................273Protezione di ADB ................................................................273Implementazione sicura di ADB ............................................275Chiavi di autenticazione ADB ................................................276Verifica del fingerprint della chiave host .................................276
Backup in Android ......................................................................277Panoramica sul backup in Android .........................................277Formato di file di backup .......................................................279Crittografia del backup ..........................................................280Controllo dell’ambito del backup ...........................................281
Riepilogo ...................................................................................282
Capitolo 11 NFC ed elementi sicuri ...............................................283Panoramica su NFC ....................................................................283Supporto NFC in Android ..........................................................284
Modalità Reader/Writer .......................................................284Modalità Peer-to-Peer ...........................................................288Modalità di emulazione delle card ..........................................288
Elementi sicuri ...........................................................................289Fattori di forma SE nei dispositivi mobili ...............................290Accesso ai SE incorporati .......................................................292Ambiente di esecuzione SE di Android ..................................295UICC come elementi sicuri ..................................................298
Emulazione di card software ........................................................302Architettura HCE di Android 4.4 ...........................................303Routing APDU .....................................................................303Scrittura di un servizio HCE .................................................307Sicurezza delle applicazioni HCE ...........................................309
Riepilogo ...................................................................................310
Indice generale xi
Capitolo 12 SELinux .......................................................................311Introduzione a SELinux ..............................................................312
Architettura di SELinux .........................................................312Mandatory Access Control .....................................................313Modalità di SELinux ..............................................................314Contesti di protezione ...........................................................314Assegnazione e persistenza del contesto di protezione .............315Policy di sicurezza ..................................................................316Istruzioni per le policy ...........................................................316Regole di transizione dei tipi .................................................319Regole di transizione dei domini ...........................................319Regole dei vettori di accesso .................................................320
Implementazione in Android .......................................................322Modifiche al kernel ...............................................................322Modifiche allo userspace ........................................................323File di policy del dispositivo ...................................................330Registrazione degli eventi delle policy ...................................331
Policy SELinux di Android 4.4 ....................................................331Informazioni generali sulle policy ..........................................331Applicazione dei domini ........................................................333Domini unconfined ...............................................................334Domini delle app ...................................................................335
Riepilogo ...................................................................................337
Capitolo 13 Aggiornamenti di sistema e accesso root ................339Bootloader ..................................................................................340
Sblocco del bootloader ..........................................................340Modalità fastboot ...................................................................342
Recovery ....................................................................................344Recovery stock ......................................................................344Recovery personalizzati .........................................................353
Accesso root ...............................................................................355Accesso root sulle build di engineering ..................................356
Accesso root sulle build di produzione ........................................359Rooting mediante modifica dell’immagine di boot o di sistema ............................................................................359Rooting mediante flashing di un package OTA ......................360Rooting tramite exploit .........................................................366
Riepilogo ...................................................................................366
Indice analitico..................................................................................367