Androids beveiliging is om te huilen

Recent las ik een nieuws artikel over een bug in de encryptie van Android. Android apparaten zijn net als iOS beschermd met een full disk encrytion, of op zijn minst toch de nieuwste apparaten. Maar ondanks dit bleek deze encryptie toch te kort te schieten. Dit komt door de manier waarop Android zijn apparaten encrypteerd. In tegenstelling tot iPhone — die een per file key gebruikt dat is gemengd met een hardware key en gebruikers pincode, en veilig opgeslagen is in de secure enclave — gebruikt Android een softwarematige sleutel die beschermd word met de pincode van het apparaat en slaat deze op op het flashgeheugen. Deze sleutel wordt gebruikt om het volledige geheugen van Android apparaten te encrypteren. De TrustZone van Android regelt het vrijgeven van de encryptie sleutel, maar twee lekken in deze TrustZone zorgde er voor dat een hacker de sleutel kon verkrijgen. Dit bracht mij op het idee om twee aspecten van de Android en iOS beveiliging te vergelijken.

Security white paper.

Losstaand van dit enkele beveiligingsprobleem wil ik het nu hebben over de security white paper van zowel Android als iOS. Ik ken redelijk veel van computerbeveiliging en heb de security white papers van deze twee besturing systemen grondig bestudeerd. En werkelijk, die van Android is om van te huilen. Ik weet niet waar het beveiliging team van Android het haalt. Maar als je een beetje van computerbeveiliging kent zie je meteen aan de security white paper van Android dat het de mist in gaat. Zo gebruikt Android standaard zwakke beveiligingsmaatregelen.


Lees ook: Het einde van het wachtwoord.


Laten we het eerst even over code signing hebben. iOS gebruikt code signing voor elk uitvoerbaar stukje broncode. Dit beschermd het besturingssysteem tegen veel vormen van malware waaronder Trojan Horses. Deze applicaties moeten een certificaat bevatten van een vertrouwde certificaat autoriteit en bij iOS is enkel Apple zelf vertrouwd. Je kan dit een beetje overdreven noemen en misschien volstaat het vertrouwen van derde partijen als CA wel maar het geeft apple wel volledige controle over hun platform. Android in tegenstelling verijst ook dat elke applicatie is gesigneerd met een certificaat. Dit naar hun eigen zeggen om te voorkomen dat een applicatie kan gewijzigd worden door hackers. Maar Android vereist niet dat een certificaat op zijn beurt wordt gesigneerd door een vertrouwde CA. Met andere woorden, zij staan zelf ondertekende certificaten toen. Voor zij die niet veel van certificaten in computemrtegnologie verstaan, dit is heel slecht. Als een certificaat niet kan worden gecontroleerd be een CA, dan kan Android nooit malware tegen houden zoals iOS dat doet. Hackers kunnen nog steeds een applicatie aanpassen en dat onderteken met hun eigen certificaat. Als google dat certificaat vervolgens in de backlist zet onderteken de hackers hun applicatie weer met een nieuw certificaat en gaat het spelletje gewoon door. Met het certificaten systeem van Apple gaat dit niet, want elke ontwikkelaar moet geregistreerd worden bij apple. Eens een applicatie malware blijkt te zijn kan Apple deze ontwikkelaar buiten spel zetten en heeft hij een veel moeilijkere tijd om terug een ondertekend certificaat te bemachtigen. Wat iOS voor een lange periode van deze hacker beschermd.


Lees ook: Waarom een ongeëncrypteerde Kernel een goede zaak is.


De Sandboxing van Android stel ik ook in vraag. iOS gebruikt standaard sandboxing voor alle apps uit de App Store en een hoop van hun standaard meegeleverde apps. Elke uitzondering om buiten die sandbox te treden — bevoordeeld: toegang tot de fotobibliotheek — moet worden toegestaan door de eindgebruiker. Dit beschermd iOS van applicatie die al dan niet op malicieuze wijze data van je iOS apparaat vergaren. Toegang to data van andere apps is niet toegestaan en enkel via de file browser kan men tijdelijk toegang krijgen tot de iCloud data van andere apps. Hier is een actie van de gebruiker vereist waarbij hij manueel het bestand moet open via de file browser. Nooit kan een applicatie dit softwarematig uitvoeren en nooit krijgt een applicatie volledige toegang tot de sandbox van een andere app. Een ander methode die iOS gebruikt vereist het versturen van het bestaand naar een andere sandbox. Hierbij verstuur je het bestand via de applicatie die er toegang tot heeft en wordt er een kopie gemaakt naar de desbetreffende app waarin het geopend moet worden; weer vereist dit een manuele handeling van de gebruiker en kan dit niet softwarematig worden uitgevoerd. Ik zeg het nog eens. Nooit heeft een applicatie toegang tot de volledige sandboxing van andere apps. Android in tegenstelling maakt het mogelijk voor applicaties om content providers te creëren. Dit stelt andere applicatie in staat om rechtsreeks toegang te hebben tot zijn bestanden. Een minder veilige methode dan iOS. Android vereist hier geen handeling van de gebruiker vooraleer toegang te verlenen aan de bestanden. Een eenmalige waarschuwing waar je me akkoord moet gaan volstaat al om een applicatie in en andere sandbox te laten rondneuzen; en niets beperkt het tot welke bestanden in die sandbox men toegang heeft.


Lees ook: Differential Privacy verandert hoe Apple data analyseert.


Er valt nog veel meer te vertellen over de beveiliging van Android maar ik ga het voorlopig hier bij laten. Maak zelf maar je conclusies of Android veilig genoeg voor je is, maar ik prefereer de beveiliging van iOS.