AIR past zich op Android net als op alle andere apparaten aan het native beveiligingsmodel aan. Tegelijkertijd houdt AIR zich aan de eigen beveiligingsregels die zijn ontworpen om het ontwikkelaars gemakkelijk te maken om veilige internettoepassingen te schrijven.
Aangezien AIR-toepassingen op Android gebruikmaken van de Android-pakketindeling, valt de installatie onder het Android-beveiligingsmodel. Het installatieprogramma van de AIR-toepassing wordt niet gebruikt.
Het Android-beveiligingsmodel bestaat uit drie primaire aspecten:
Android-machtigingen
Vele Android-functies worden beschermd door het bevoegdhedenmechanisme van het besturingssysteem. Om een beschermde functie te gebruiken, moet de descriptor van de AIR-toepassing declareren dat de toepassing de vereiste bevoegdheid nodig heeft. Wanneer een gebruiker probeert de toepassing te installeren, geeft het Android-besturingssysteem alle gewenste bevoegdheden weer voordat de installatie wordt uitgevoerd.
De meeste AIR-toepassingen moeten Android-machtigingen opgeven in het descriptorbestand van de toepassing. Standaard zijn geen bevoegdheden opgenomen. De volgende bevoegdheden zijn vereist voor beveiligde Android-functies die via de AIR-runtime worden getoond:
-
ACCESS_COARSE_LOCATION
-
Hiermee geeft u de toepassing via de klasse Geolocation toegang tot locatiegevens van het WiFi- en mobiele-telefoonnetwerk.
-
ACCESS_FINE_LOCATION
-
Hiermee krijgt de toepassing via de klasse Geolocation toegang tot GPS-gegevens.
-
ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE
-
Hiermee geeft u de toepassing via de klasse NetworkInfo toegang tot netwerkgegevens.
-
CAMERA
-
Hiermee krijgt de toepassing toegang tot de camera.
-
INTERNET
-
Hiermee kan de toepassing netwerkverzoeken indienen en wordt foutopsporing op afstand mogelijk gemaakt.
-
READ_PHONE_STATE
-
Hiermee kan de AIR-runtime het geluid dempen in geval van een binnenkomende oproep.
-
RECORD_AUDIO
-
Hiermee krijgt de toepassing toegang tot de microfoon.
-
WAKE_LOCK en DISABLE_KEYGUARD
-
Hiermee voorkomt de toepassing via de instellingen voor de klasse SystemIdleMode dat het apparaat inactief wordt.
-
WRITE_EXTERNAL_STORAGE
-
Hiermee kan de toepassing naar de externe geheugenkaart op het apparaat schrijven.
Handtekeningen van toepassingen
Alle toepassingspakketten die voor het Android-platform worden gemaakt, moeten worden ondertekend. Aangezien AIR-toepassingen voor Android in de native APK-indeling van Android worden opgenomen, worden ze ondertekend in overeenkomst met de Android-regels in plaats van met de AIR-regels. Android en AIR maken vergelijkbaar gebruik van codeondertekeningen, maar er zijn enkele belangrijke verschillen:
-
Op Android controleert de ondertekening of de privésleutel in bezit is van de ontwikkelaar. De identiteit van de ontwikkelaar wordt echter niet geverifieerd.
-
Het certificaat van Android-toepassingen dient minstens 25 jaar geldig te zijn.
-
Android biedt geen ondersteuning voor het migreren van de pakketondertekening naar een ander certificaat. Wanneer een update door een ander certificaat wordt ondertekend, dienen gebruikers de oorspronkelijke toepassing te verwijderen voordat ze de bijgewerkte toepassing kunnen installeren.
-
Twee toepassingen die met hetzelfde certificaat zijn ondertekend, kunnen een gedeelde id opgeven die ze toestemming geeft elkaars cache- en gegevensbestanden te openen. (Het delen van deze bestanden is niet mogelijk op AIR. )
Gebruiker-id's van toepassingen
Android maakt gebruik van een Linux-kernel. Aan elke geïnstalleerde toepassing wordt een gebruikers-id van het Linux-type toegewezen die de bevoegdheden voor bewerkingen als het openen van bestanden bepaalt. Bestanden in de toepassingsmap, tijdelijke mappen en de opslagmap zijn beveiligd tegen benadering door bestandssysteembevoegdheden. Naar externe opslag (met andere woorden: naar een SD-kaart) geschreven bestanden kunnen worden gelezen, gewijzigd en verwijderd door andere toepassingen of door de gebruiker wanneer de SD-kaart als een apparaat voor massaopslag wordt aangesloten op een computer.
Met internetverzoeken ontvangen cookies worden niet uitgewisseld door AIR-toepassingen.
Privacy achtergrondafbeelding
Wanneer een gebruiker een toepassing op de achtergrond plaatst, leggen enkele Android-versies een schermafbeelding vast die als miniatuur in de lijst met onlangs gebruikte toepassingen wordt gebruikt. Deze schermafbeelding wordt opgeslagen in het apparaatgeheugen en kan worden geopend door een aanvaller die de fysieke besturing heeft van het apparaat.
Als in uw toepassing gevoelige informatie wordt weergegeven, moet u ervoor zorgen dat dergelijke informatie niet wordt vastgelegd in de schermafbeelding van de achtergrond. De gebeurtenis
deactivate
die door het object NativeApplication wordt verzonden, geeft aan dat een toepassing op het punt staat om naar de achtergrond te worden verplaatst. Gebruik deze gebeurtenis om eventuele gevoelige informatie te wisssen of te verbergen.
Gecodeerde gegevens op Android
AIR-toepassingen op Android kunnen de beschikbare coderingsopties in de geïntegreerde SQL-database gebruiken om gecodeerde gegevens op te slaan. Voor optimale beveiliging baseert u de coderingssleutel op een door de gebruiker ingevoerd wachtwoord dat altijd wordt ingevoerd wanneer de toepassing wordt gestart. Het is lastig of onmogelijk een lokaal opgeslagen coderingssleutel of wachtwoord te verbergen voor een hacker die toegang heeft tot de toepassingsbestanden. Als een hacker de sleutel kan ophalen, biedt het coderen van de gegevens niet meer bescherming dan de op de gebruikers-id gebaseerde bestandssysteembeveiliging van het Android-systeem.
Met de klasse EncryptedLocalStore kunt u gegevens opslaan, maar deze gegevens worden niet gecodeerd op Android-apparaten. Android-beveiliging is in plaats daarvan gebaseerd op de gebruikers-id van de toepassing die de gegevens moet beschermen tegen andere toepassingen. Toepassingen die een gemeenschappelijke gebruikers-id gebruiken en die zijn ondertekend met hetzelfde certificaat, maken gebruik van dezelfde gecodeerde lokale opslag.
Belangrijk:
Op een telefoon met rooting kan elke toepassing met rootingbevoegdheden de bestanden uit alle andere toepassingen openen. Gegevens die aan de hand van de gecodeerde lokale opslag worden opgeslagen, zijn dus niet veilig op een apparaat met rooting.