På Android, liksom på alla datorenheter, följer AIR den inbyggda säkerhetsmodellen. Samtidigt har AIR egna säkerhetsregler, som är avsedda att underlätta för utvecklare att skriva säkra, Internet-anslutna program.
Eftersom AIR-program på Android använder Androids paketformat lyder installationen under Androids säkerhetsmodell. AIR-programmets installationsprogram används inte.
De tre huvudsakliga aspekterna i Android-säkerhetsmodellen är:
-
Behörighet
-
Programsignaturer
-
Användar-ID för program
Android-behörigheter
Många Android-funktioner skyddas av operativsystemets behörighetsfunktioner. För att kunna använda en skyddad funktion måste AIR-programbeskrivningsfilen deklarera att programmet behöver den nödvändiga behörigheten. När en användare försöker installera programmet visar Android-operativsystemet alla begärda behörigheter för användaren innan installationen inleds.
De flesta AIR-program måste ange Android-behörigheter i programbeskrivningsfilen. Som standard ingår inga behörigheter. Följande behörigheter krävs för skyddade Android-funktioner som används av AIR-miljön:
-
ACCESS_COARSE_LOCATION
-
Tillåter programmet att komma åt platsdata för WIFI och mobilnätverk via klassen Geolocation.
-
ACCESS_FINE_LOCATION
-
Tillåter programmet att komma åt GPS-data via klassen Geolocation.
-
ACCESS_NETWORK_STATE och ACCESS_WIFI_STATE
-
Tillåter programmet att komma åt nätverksinformation via klassen NetworkInfo.
-
CAMERA
-
Tillåter programmet att komma åt kameran.
-
INTERNET
-
Tillåter programmet att utföra nätverksbegäranden och fjärrfelsökning.
-
READ_PHONE_STATE
-
Tillåter AIR-miljön att stänga av ljudet vid inkommande samtal.
-
RECORD_AUDIO
-
Tillåter programmet att komma åt mikrofonen.
-
WAKE_LOCK och DISABLE_KEYGUARD
-
Tillåter att programmet hindrar enheten från att försättas i viloläge via inställningarna för klassen SystemIdleMode.
-
WRITE_EXTERNAL_STORAGE
-
Tillåter programmet att skriva till enhetens externa minneskort.
Programsignaturer
Alla programpaket som skapas för Android-plattformen måste signeras. Eftersom AIR-program på Android paketeras i Androids APK-format signeras de i enlighet med Androids regler i stället för de som gäller i AIR. Även om Android och AIR använder kodsignering på liknande sätt, finns det betydande skillnader:
-
På Android verifierar signaturen att utvecklaren äger den privata nyckeln, men den används inte för att verifiera utvecklarens identitet.
-
För program som ska lanseras för Android måste certifikatet vara giltigt i minst 25 år.
-
Android saknar stöd för att migrera paketsignaturer till nya certifikat. Om en uppdatering signeras av ett annat certifikat måste användarna avinstallera det ursprungliga programmet innan de kan installera uppdateringen.
-
Två program som signerats med samma certifikat kan ange ett delat ID, som tillåter dem att komma åt varandras cacheminnen och datafiler. (Sådan delning medges inte av AIR. )
Användar-ID för program
Android använder en Linux-kärna. Alla installerade program tilldelas ett användar-ID av Linux-typ, och detta avgör vilka behörigheter som gäller för till exempel filåtkomst. Filer i programmet, programkatalogen och tillfälliga kataloger åtkomstskyddas av filsystemets behörigheter. Filer som skrivs till externa lagringsplatser (t.ex. SD-kortet) kan läsas, ändras och tas bort av andra program, eller av användaren, när SD-kortet monteras som en masslagringsenhet på en dator.
Cookies som tas emot med Internet-begäranden delas inte mellan olika AIR-program.
Sekretess för bakgrundsbilder
När en användare lägger ett program i bakgrunden, tas i vissa Android-versioner en skärmdump som används som miniatyr i programlistan för nyligen använda program. Denna skärmdump lagras i enhetens minne och en angripare med fysik kontroll över enheten kan komma åt den.
Om känslig information visas i programmet ska du skydda sådan information som finns i skärmdumpen i bakgrunden. Händelsen
deactivate
som skickas av NativeApplication-objektet signalerar att ett program kommer att placeras i bakgrunden. Du bör använda denna händelse för att dölja eller rensa all känslig information.
Krypterade data på Android
AIR-program på Android kan använda de krypteringsalternativ som finns i den inbyggda SQL-databasen för att spara krypterade data. För att få optimal säkerhet ska du basera krypteringsnyckeln på ett användargivet lösenord som anges när programmet körs. En lokalt lagrad krypteringsnyckel eller ett lösenord är svårt eller omöjligt att "dölja" för en angripare som har åtkomst till programfilerna. Om angriparen får tag i nyckeln, erbjuder kryptering av data inget ytterligare skydd utöver den användar-ID-baserade filsystemssäkerheten som tillhandahålls i Android-systemet.
Klassen The EncryptedLocalStore kan användas för att spara data, men dessa data krypteras inte på Android-enheter. I stället förlitar sig säkerhetsmodellen i Android på programanvändar-ID för att skydda data från andra program. Program som använder ett delat användar-ID och som är signerade med samma kodsigneringscertifikat använder samma krypterade lokala lagerplats.
Viktigt!
På en "öppen" telefon har alla program som körs med rotprivilegier åtkomst till filer i andra program. Detta medför att data lagrade i den krypterade lokala lagerplatsen inte är skyddade på "öppna" enheter.