Android Licensing Server, de 'beveiliging' die Google aanbiedt voor makers van betaalde Android-apps, is nog niet op beveiliging gericht. Dat zegt Google in een reactie op het nieuws dat de beveiliging gemakkelijk te omzeilen zou zijn.
De code was erop gericht om het ontwikkelaars gemakkelijk te maken de code in hun applicatie te stoppen, zo zegt de maker van Android. "De eerste release is uitgebracht met de simpelste, zo transparant mogelijke implementatie van een sample, die was geschreven zodat hij gemakkelijk is te begrijpen en aan te passen. De code is niet gericht op beveiliging."
Dat het bovendien zo eenvoudig is, ligt volgens Google ook aan de ontwikkelaars die het licentiesysteem in hun applicatie gebruiken. "Sommige ontwikkelaars gebruiken de sample 'as is' en dat maakt het gemakkelijker om aan te vallen." Google raadt ontwikkelaars aan om de code te 'verduisteren', een techniek die het kraken van de applicatie een stuk lastiger zou maken.
Dinsdag werd duidelijk dat de Android Licensing Service gemakkelijk te omzeilen is door de apk uit te pakken en de code aan te passen. De kwetsbaarheid van het licentiesysteem zit in het bestand LicenseValidator.smali, waarmee wordt gecontroleerd of de gebruiker de applicatie heeft gekocht. De controle vindt plaats bij het starten van de applicatie en dat gebeurt op het toestel zelf.
De truc is dat de code wijst naar een volgende actie als de licentie wel of niet op het toestel aanwezig is. Zo wijst de uitkomst 0x1, de code voor de constatering dat er geen licentie op het toestel is gevonden, naar de actie sswitch_de, de melding dat er geen licentie is gekocht. Door in de code de actie te veranderen in sswitch_d3, wat aangeeft dat de licentie is gecheckt en de applicatie dus mag doorgaan, kan de beveiliging worden omzeild. Opvallend is dat de applicatie wel 'weet' dat er geen licentie is gekocht.
Google belooft geen updates en geeft toe dat ontwikkelaars zich nooit volledig tegen het kraken van applicaties kunnen beschermen. "Dat is nooit mogelijk in een systeem waarop third party code mogelijk is." De zoekgigant richt zich er daarom op om het kraken van applicaties moeilijker en duurder te maken, waardoor mensen eerder geneigd zijn om 'gemakkelijk' te doen en de app te kopen.
Een aantal van de Android-gebruikers die gekraakte applicaties gebruiken, doet dat vanwege het gebrek aan betaalmethoden in de Android Market; daarin kan alleen met creditcard worden betaald en die hebben veel Europeanen niet. Toch kunnen ook mensen zonder creditcard zaken kopen bij downloadwinkels en webwinkels die alleen creditcards accepteren, zo legt tweaker Gamefreakin uit.
Security through obscurity? Raar advies.oogle raadt ontwikkelaars aan om de code te 'verduisteren', een techniek die het kraken van de applicatie een stuk lastiger zou maken.
[Reactie gewijzigd door boe2 op 25 augustus 2010 17:27]
[Reactie gewijzigd door ncoesel op 25 augustus 2010 23:44]
Nou ga je wel heel kort door de bocht. Tuurlijk moet er iets geheim blijven (nou ja, twee dingen: de manier om te decrypten en de plain text), anders kun je encryptie sowieso wel vergeten. Maar er is een wezenlijk verschil tussen het geheim houden van een algorithme (dat in elk apparaat aanwezig moet zijn) en het geheimhouden van een sleutel (een duidelijk afgebakende, kleine hoeveelheid data die je niet hoeft te verspreiden).Dat is een misverstand. Beiden zijn gebaseerd op het geheim blijven van iets.
Niet persé. Als ik een DVDtje op de diplomatieke post doe dan kan ik mijn ambassade zo 4 GB aan sleutel sturen. Als die onderschept wordt, nou ja lekker interessant, dan brand ik wel een nieuwe; die random data was niet geheim, daar heeft niemand iets aan. Zolang ik die sleutel niet gebruik om data te versturen totdat mijn ambassade bevestigd heeft dat de DVD goed is aangekomen (en dat het zegel niet verbroken is!) is dit wel degelijk nuttig. Je kunt er een tamper-evident kanaal mee "upgraden" naar een tamper-proof kanaal (of, zoals in het voorbeeld, een tamper-evident kanaal gebruiken om een gewoon kanaal (internet) te upgraden naar tamper-proof).Die eerste eis is natuurlijk meteen de grote zwakte van XOR, want het veilig "versturen" van de sleutel is nu even moeilijk als het versturen van het bericht zelf...
In verhouding tot een correcte implementatie van het hele SSL-protocol ("SSL.dll")? Oh jawel hoor, da's heel erg veel kleiner.Ik zou b.v. een SSL certificaat geen kleine hoeveelheid data willen noemen.
Valt reuze mee. Zoals Delgul al zegt is RSA helemaal niet zo ingewikkeld (het bewijs waarom het werkt wel, maar daar heb ik het niet over). Hetzelfde geldt voor Rijndeal (AES). Ja, het is een gruwelijke bak werk om met de hand te moeten doen, maar tegen je computer roep je gewoon for(i=0;i<256;i++) (tenminste, het waren 256 rondes, toch?). Ook de code in elk ronde stelt niet heel veel voor.Het grote nadeel van openbare algoritmes is dat het algoritme erg complex is.
Maar in een [i]openbaar[/i[ algorithme zullen fouten veel sneller worden opgespoord, zodat je een goed idee hebt hoe veilig het precies is. Dat is het essentiële punt! Als een fabrikant zijn algorithme geheim houdt weet ik niks; voor hetzelfde geld is het een ceasar-"cipher" (qua sterkte vergelijkbaar met gewoon plain text sturen).Dat is meteen het zwakke punt. Een complex algoritme heeft veel kans op fouten c.q. achterdeurtjes. Bovendien nodigt een complex algoritme uit tot een vals gevoel van veiligheid.
Da's een onhandige vergelijking omdat bij encryptie er een heel scherpe scheiding is tussen algorithme en sleutel. Security through obscurity gaat niet om het verstoppen van de sleutel maar om het verstoppen van (de werking van) het slot. Het is het verschil tussen een bewaker die niks zegt en alleen maar nors voor zich uit staart en de bewaker die vraagt "ken je de geheime handdruk?". Nou, dan weet je in elk geval alvast dat je geen (gesproken) wachtwoord hoeft te raden.Obscurity is niet iets waar je op wilt vertrouwen, dat is zoiets als de sleutel onder de mat leggen. De eerste inbreker die daar toevallig kijkt, is binnen.
[Reactie gewijzigd door TIGER79 op 25 augustus 2010 17:28]
[Reactie gewijzigd door kidde op 26 augustus 2010 12:49]
"De eerste release is uitgebracht met de simpelste, zo transparant mogelijke implementatie van een sample, die was geschreven zodat hij gemakkelijk is te begrijpen en aan te passen. De code is niet gericht op beveiliging."
[Reactie gewijzigd door watercoolertje op 25 augustus 2010 17:37]
Klopt en ze hebben daar dus ook goede redenen voor.Maar daar komt het dan dus wel op neer. Ze hebben zogenaamde 'beveiliging' uitgebracht, die dus helemaal niet als beveiliging bedoelt was.
Het probleem van die zin is dat iedereen er van uit ging dat dit ter beveiliging van apps zou dienen. Google heeft nu dus uitgelegd dat dit niet zo is.beveiliging Android-apps is niet op beveiliging gericht
[Reactie gewijzigd door ZeBoxxToo op 25 augustus 2010 18:10]
Mwoah... kijk, een vaste creditcard is natuurlijk goedkoper -als- je vaak wat koopt. Maar iDeal is dan weer -nog- goedkoper. Maar ja.. de hele wereld aan de iDeal zal niet zo 1-2-3 lukken.En die 3Vcard kost nogal wat...
Dan kun je de applicatie in demo mode zetten of direct stoppen, als de applicatie ziet dat de applicatie niet officieel gekocht is. Al dan niet met een error code.Door in de code de actie te veranderen in sswitch_d3, wat aangeeft dat de licentie is gecheckt en de applicatie dus mag doorgaan, kan de beveiliging worden omzeild. Opvallend is dat de applicatie wel 'weet' dat er geen licentie is gekocht.
[Reactie gewijzigd door worldcitizen op 25 augustus 2010 17:56]
[Reactie gewijzigd door World Citizen op 25 augustus 2010 20:52]
[Reactie gewijzigd door swampy op 25 augustus 2010 23:19]
Op dit item kan niet meer gereageerd worden.
Populair: Tablets E3 2013 Mobiele telefoons Google Sony Microsoft Apple Games Politiek en recht Consoles
© 1998 - 2013 Tweakers.net B.V. onderdeel van De Persgroep, ook uitgever van Computable.nl, Autotrack.nl en Carsom.nl • Hosting door True