MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY

Bezpečnost OS Android

Bakalářská práce

Markéta Szydlowská

Brno, 2012 Prohlášení

Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypra- covala samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypra- cování používala nebo z nich čerpala, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.

Markéta Szydlowská

Vedoucí práce: Ing. Mgr. Zdeněk Říha, Ph.D. Poděkování

Děkuji svému vedoucímu práce Ing. Mgr. Zdeňku Říhovi, Ph.D. za cenné rady a připomínky, které mi pomohly při tvorbě a psaní práce. Děkuji také své rodině, příteli a kamarádům za podporu při studiu a rady při psaní práce. Shrnutí

Cílem této práce je prozkoumat operační systém Android a jeho bezpečnost, za- měřit se na nejdůležitější hrozby a opatření proti nim. Aplikace, která je součástí práce, se zaměřuje na oprávnění, jež povolují jiným aplikacím přístup k funkcím telefonu. Klíčová slova bezpečnost, Android, , aplikace, , Java, XML Obsah

1 Úvod...... 1 2 Operační systém Android...... 3 2.1 Historie OS Android...... 3 2.2 Architektura OS Android...... 8 2.2.1 Základní uspořádání OS Android...... 8 2.2.2 Rozšíření základu OS Android...... 11 3 OS Android a jeho bezpečnost...... 14 3.1 Klíčové součásti vytváření bezpečnostního modelu OS Android....14 3.2 Aplikační Sandbox...... 17 3.3 Další důležitá bezpečnostní opatření...... 18 4 Způsoby ochrany dat uživatele...... 22 4.1 Antiviry...... 22 4.2 Firewally...... 23 4.3 Uživatelská rozvážnost...... 23 4.4 Ochrana dat při ztrátě nebo krádeži zařízení...... 24 5 Návrh aplikace ...... 25 5.1 Vývoj aplikací pro chytré telefony...... 25 5.1.1 Vývojové prostředí pro Android...... 26 5.2 Základ architektury aplikace OS Android...... 26 5.2.1 Aktivity...... 26 5.2.2 Dodavatelé obsahu (Content providers)...... 28 5.2.3 Služby (Services)...... 28 5.2.4 Záměry (Intents)...... 28 5.2.5 AndroidManifest...... 29 5.3 Návrh grafického rozhraní aplikace...... 31 5.3.1 Extensible Markup Languate - XML...... 32 5.3.2 Pohledy a Skupiny pohledů...... 33 6 Závěr...... 34 7 Literatura...... 35 8 Přílohy...... 41 1 Úvod

Součástí života snad každého z nás se stal mobilní telefon. Díky mobilním tech- nologiím můžeme být prakticky kdykoliv ve spojení s rodinou, s přáteli nebo s obchodními partnery. Z mobilních telefonů se postupem času stávali malé počí- tače a s tím přišel i mobilní operační systém. Mezi nejznámější operační systémy pro mobilní telefony patří Android1 firmy Inc., Bada2 vyvíjená společností Samsung, iOS3 vytvořený firmou Apple Inc., Belle4 od firmy Nokia, Windows Mobile5, který stejně jako počítačové Windows vlastní firma Microsoft, a Meego6, které vzešlo ze spojení firem Intel a Nokia. Na chytrém telefonu může uživatel provádět prakticky cokoliv. Od obyčejného psaní textových zpráv, přes natáčení videa až po přihlášení do banky. Používáním telefonu do něj zazna- menáváme svá citlivá data, která mohou být relativně snadno odcizena, pokud uživatel nebude dostatečně opatrný.

Cílem této práce je zmapovat operační systém Android, popsat jeho bezpečnostní opatření, doporučit způsoby ochrany před případnými nežádoucími vlivy a vy- tvořit aplikaci, která k vybrané funkci telefonu zobrazí aplikace, které mají k funkci povolen přístup. Na aplikaci jsou zároveň ukázány důležité části vývoje aplikací pro OS Android.

OS Android je mezi mobilními operačními systémy již čtyři roky. Jeho stručná historie je obsažena ve druhé kapitole s názvem 2 Operační systém Android spolu se základními informacemi o architektuře tohoto operačního systému, mezi jejíž částí patří jádro, application runtime, zařízení hardwaru a knihovny. Ve druhé kapitole jsou také zmíněny způsoby, jak rozšířit základní nabídku aplikací

1 http://www.android.com/ 2 http://www.bada.com/ 3 http://www.apple.com/cz/ios/ 4 http://europe.nokia.com/symbian-belle 5 http://www.microsoft.com/windowsphone/cs-cz/ 6 https://meego.com/

1 OS Android. Se zabezpečením architektury nás seznamuje kapitola třetí, která se jmenuje 3 OS Android a jeho bezpečnost, a kde jsou vysvětleny hlavní součásti bez- pečnostního modelu OS Android. O tom, jak se bránit a jak předcházet útokům na zařízení s OS Android se dočteme v kapitole čtvrté 4 Způsoby ochrany dat uživatele. Kapitola 5 Návrh aplikace je kapitolou předposlední. Obsahuje informace o tvorbě aplikací pro OS Android, o samotném vývoji a vývojovém prostředí. Je zde vysvětlena architektura aplikací OS Android a také funkcionalita grafického rozhraní těchto aplikací.

2 2 Operační systém Android

Operační systém Android je nejprodávanějším mobilním operačním systémem na světě – ve třetím kvartále roku 2011 dosáhl 52,6% podílu na trhu (podle prů- zkumu agentury Gartner). [1]

Uživatelé zařízení s OS Android vyhledávají nejen kvůli celkovému propojení s Google účtem (což obnáší například automatické zálohování kontaktů), ale i se sociálními sítěmi jako je Facebook nebo Twitter. Uživatelům jsou nabízeny statisí- ce aplikací, které jsou z velké části zdarma.

2.1 Historie OS Android

V roce 2005 odkoupila firma Google Inc., známá především provozováním in- ternetového vyhledávače Google, společnost Android Inc. (vznik 2003), která vy- vinula základ platformy Andorid. V roce 2007 pak byla založena (dále jen OHA). Členové OHA se zavázali k tomu, že budou dohlížet na vývoj OS Android. [2]

Obrázek č. 1: Logo operačního systému Android[34]

OHA se v současnosti skládá z 84 členů, kteří se dělí do 5 velkých skupin:

● Mobilní operátoři (např. Sprint Nextel, T-mobile, Telefónica, Vodafo- ne, …)

3 ● Výrobci mobilních telefonů (např. Acer Inc., Alcatel mobile phones, ASUSTek Computer Inc., Dell, Garmin Internetional, Inc., HTC Corporation, Huawei Technologies, LG Electronics, Inc., Motorola, Inc., Samsung Electronics, Sony Ericsson, …)

● Výrobci polovodičových součástek (Intel Corporation, MediaTek, Inc., NVIDIA Corporation, …)

● Softwarové společnosti (např. eBay Inc., Google Inc., MOTOYA Co., Ltd., )

● Obchodní společnosti (např. , L&T Infotech, TAT – The Asto- nishing Tribe AB)

První aplikace pro Android vzešly ze soutěže Android Developer Challenge (dále jen ADC), kterou pořádala v roce 2008 firma Google Inc. Vývojáři soutěžili se svými aplikacemi a projekty v deseti různých kategoriích (např. vzdělání, hry, sociální sítě aj.). Odborná porota vybrala 50 projektů, jejichž vývojáři získali k dalšímu vývoji 25.000 dolarů. V každé kategorii byl poté vyhlášen vítěz, který získal 250.000 dolarů. Soutěž ADC se konala ještě jednou v roce 2009 s obdobný- mi pravidly. [3] [4] [5]

Od roku 2007 již vyšlo několik verzí OS Android [6] [7] [8] [33], za což je tato platforma často kritizována, kvůli velké roztříštěnosti. Každá nová verze OS Android odstraňuje chyby verze předchozí, přináší vždy nové funkce a snaží se být více uživatelsky přívětivá.

Android 1.0 Angel Cake První verze OS Android se objevila ke konci září roku 2008. Byl to první open source mobilní operační systém. Byl plně integrován s tehdejšími službami Go- ogle, obsahoval webový prohlížeč, který zobrazoval HTML7 a XHTML8 stránky,

7 Značkovací jazyk pro vytváření webových stránek 8 Rozšíření značkovacího jazyka HTML

4 které se daly přibližovat. Součástí systému byl i Android Market pro stahování a aktualizaci aplikací (rozvedu dále), multitasking9, instant messaging (interne- tový komunikační nástroj). Podporoval Wi-Fi a . Prvnim telefonem s OS Android byl HTC Dream (G1).

Android 1.1 Battenberg Verze 1.1 v únoru 2009 nepřinesla nic zvláštního oproti verzi 1.0, byla určena pouze pro T-Mobile G1.

Android 1.5 Cupcake 30. dubna 2009 vyšla verze 1.5, založena na jádře Linuxu 2.6.27, která obsahovala nové funkce, jako například rychlejší spouštění a práci fotoaparátu, rychlejší ur- čení GPS pozice (Global Positioning System), klávesnici na displeji a možnost na- hrávání videí na Youtube a fotek s obrázky na Picassa10 přímo z telefonu.

Android 1.6 Donut V polovině září téhož roku, kdy vyšla verze 1.5, byla vydána SDK11 verze 1.6, kte- rá obsahovala například okamžité vyhledávání a vyhledávání hlasem, in- tegrovaný fotoaparát s kamerou (již se dalo přepínat mezi fotoaparátem a kame- rou), galerii, indikátor využití baterie, podporu CDMA12 a funkci převodu textu na řeč ve více jazycích než v předchozích verzích. Android 1.6 Donut byl založen na Linuxovém jádře 2.6.29.

Android 2.0/2.1 Éclair Verze Éclair s Linuxovým jádrem 2.6.29 vyšla 26. října 2009 a podporovala mimo jiné synchronizaci emailů a kontaktů z více účtů, Bluetooth 2.1, měla nové uživa- telské rozhraní webového prohlížeče s podporou HTML513 a nové funkce měl i kalendář, vylepšení se dočkaly Google Mapy (verze 3.1.2).

9 Označení schopnosti operačního systému provádět více procesů zároveň 10 http://picasa.google.com/ 11 Základní sada nástrojů umožňující vývoj aplikace. 12 Za pomoci jediného sdíleného média je vysíláno více digitálních signálů. [36] 13 Rozšíření značkovacího jazyka HTML

5 Android SDK 2.01 byl uvolněn v prosinci 2009, Android SDK 2.1 pak v lednu 2010.

Android 2.2 Froyo 20. května 2010 byla uvedena verze 2.2 na Linuxovém jádře 2.6.32 a s ní přišlo i celkové zlepšení rychlosti a paměti, nové widgety14 pro domovskou obrazovku, podpora a vytváření Wi-Fi hotspotů (poskytování bezdrátového internetu), pře- souvání aplikací do rozšířené pamětí – na SD kartu, Adobe Flash 10.1 Plná verze byla lokalizována do mnoha jazyků včetně češtiny a většina telefonů s 2.1 bylo updatováno na novou verzi.

Android 2.3 Gingerbread Verze 2.3 OS Android vyšla 6. prosince 2010 na Linuxovém jádře 2.6.33 nebo 34. Nastaly změny v uživatelském rozhraní – jednoduchost a rychlost, také nová klávesnice pro rychlejší zadávání textu a vyběr slova jedním dotykem pro ná- sledné zkopírování a vložení, podpora NFC15 a internetové volání.

22. února 2011 byl zveřejněn Android 2.3.3 na Linuxovém jádře 2.6.35 a také SDK Androidu pro tablety SDK Androidu 3.0 Honeycomb.

Android 3.0 Honeycomb Android 3.0 byl speciálně vyvinut pro tablety a zařízení s větší úhlopříčkou disp- leje, úhlednější multitasking, možnost vlastního nastavení domovské obrazovky, widgety, bluetooth tethering16 a zabudovaná podpora pro Media/Picture Transfer Protocol17.

SDK 3.2 bylo představeno 18. července 2011.

Android 4.0 Ice Cream Sandwich [9] Zatím poslední verze OS Android vyšla 19. října 2011, je to jediný systém, který je

14 Aktivní ikona. 15 Bezdrátová komunikace mezi zařízeními na velmi krátkou vzdálenost (max 25 cm). 16 Sdílení internetu přes bluetooth. 17 Slouží ke stahování medií a obrázků.

6 určen jak pro mobily, tak pro tablety (s rozlišením WXGA18 - 1280 × 800), a kromě nového typu písma () přichází i s detekcí lidské tváře pro odemčení table- tu a telefonu, Explore-by-touch – režim pro osoby s postižením zraku, Android Beam – pro výměnu kontaktů, odkazů aj. mezi dvěma telefony pomocí NFC, za- bezpečením ASLR19 a mnoho dalšími.

Obrázek č. 2: Podíl verzí na trhu [10]

Obrázek č. 3: Podíl verzí na trhu v procentech [10]

18 Rozlišení obrazovky v poměru 16:9. 19 Ukládá data na různá místa v paměti, čímž ztěžuje přepsání a čtení dat procesoru, který k tomu nemá právo

7 2.2 Architektura OS Android

OS Android je otevřenou platformou, která využívá vyspělý hardware a soft- ware, vlastní i sdílená data, a proto je nutné, aby měl systém k dispozici takové prostředí, které zajistí zabezpečení uživatelů, jejich dat, aplikací a sítě. [5]

Při vývoji OS Android byl kladen důraz na jednoduchost tvorby aplikací. Vývoj aplikací pro OS Android je pro vývojáře usnadněn flexibilitou bezpečnostních prvků. Pokud vývojář není dostatečně informován v otázce bezpečnosti OS Android, je výchozí nastavení bezpečnosti dostatečně elastické, aby jeho ne- znalost nebyla překážkou.

Aby byla skutečně zajištěna bezpečnost otevřené platformy, je potřeba rozsáhlá bezpečnostní architektura a do detailu vyladěné bezpečnostní zásady. Pro to OS Android disponuje vícevrstvou ochranou, což zajišťuje nejen pružnost platformy, ale i dostatečnou ochranu jejích uživatelů. 2.2.1 Základní uspořádání OS Android

Jádro a operační systém Jádro je nejnižší vrstvou architektury. Je postaveno na upraveném monolitickém jádře Linuxu ve verzi 2.6.X. Platforma postavená na Linuxu zajišťuje výrobcům zařízení získat levně operační systém a vývojáři smí bez problémů pro tato za- řízení vyvíjet. Jádro je zprostředkovatelem komunikace mezi běžícími aplikacemi v různých procesech (IPC20) Ke všem zdrojům zařízení, jako jsou funkce kamery, GPS data, Bluetooth, funkce telefonu, připojení k síti aj., je přístup pomocí ope- račního systému. [11] [12]

Linuxové jádro je již léta používáno v mnoha prostředích citlivých na bez- pečnost. Nejednou bylo vývojáři zkoumáno, testováno na bezpečnost. Díky nale- zeným a následně opraveným chybám se linuxové jádro stalo bezpečnějším a zís-

20 a Mezi procesy a jádrem vzniká komunikační tok z důvodu koordinace aktivit procesů

8 kalo si tak přízeň mnoha společností, vývojářů a odborníků na bezpečnost.

I přesto není linuxové jádro vždy bezpečné. Za všechny bezpečnostní chyby sou- visející s linuxovým jádrem je nutno upozornit na jednu z nejaktuálnějších (září 2011), kdy útočník nahrál na oficiální online obchod aplikaci, která vypadala stejně jako jedna z nejstahovanějších her (Angry Birds21). Při instalaci však bez vě- domí uživatele povolila instalaci dalších tří aplikací, které měly přístup ke kontaktům, informaci o poloze a čtení textových zpráv. Všechny takto získané informace mohly být odesílány na vzdálený server a následně zneužity. Tato chy- ba byla již společností Google odstraněna. [13]

Jako základ pro mobilní prostředí poskytuje linuxové jádro v OS Android něko- lik klíčových rysů bezpečností, které obsahují:

● Model oprávnění založený na aktuálním uživateli,

● izolaci procesů pomocí Aplikačního Sandboxu (více v kapitole 3.2),

● rozšiřitelný mechanismus pro bezpečnou meziprocesorovou komunikaci,

● schopnost odstranit zbytečné a potenciálně nebezpečné části jádra.

Jako operační systém s více uživateli je filozofií linuxového jádra oddělit uživatel- ské zdroje jeden od druhého. Úkolem Linuxu je:

● Zabraňovat uživateli A četbu souborů uživatele B,

● zajišťovat, že uživatel A neomezuje paměť uživatele B,

● zajišťovat, že uživatel A neomezuje výpočetní výkon uživatele B,

21 https://market.android.com/details?id=com.rovio.angrybirds&feature=search_result#? t=W251bGwsMSwyLDEsImNvbS5yb3Zpby5hbmdyeWJpcmRzIl0.

9 ● zajišťovat, že uživatel A neomezuje uživateli B využívání zařízení (telefo- nie22, GPS, Bluetooth).

Android Application Runtime Aplikace na OS Android jsou nejčastěji psané v programovacím jazyce, který je velice podobný programovacímu jazyku Java23. Liší se pouze stavbou architektu- ry a omezením paměti a procesoru zařízení, na kterých je program vyvíjený v programovacím jazyce Java pro Android spouštěn. Virtuální stroj , na kterém jsou spouštěny všechny aplikace OS Android, je abstraktní vrstvou mezi operačním systémem a počítačem a úzce souvisí s virtuálním strojem Javy, rozdíl je pouze v architektuře a v koncovkách souborů, které stroj Dalvik spouští. Ty mají příponu .dex a oproti souborům programovacího jazyka Java odstraňují du- plicitní konstanty a části kódu, čímž šetří místo a zajišťují přehlednost kódu. [5] [11]

Mezi další stavební bloky platformy OS Android patří:

Zařízení hardwaru OS Android je kompatibilní s mnoha přístroji, jako jsou například telefony, table- ty, televize nebo set-top-boxy. Android využívá výhod některých hardwarových bezpečnostních funkcí, jako je například ARMv6 eXecute-Never (architektura procesorů).

Nativní knihovny OS Android se skládá z několika knihoven napsaných v programovacím jazyce /C++, které využívají různé komponenty systému. Mezi nejznámější nativní knihovny řadíme například: [11]

● Knihovna médií – podporuje přehrávání a nahrávání audio a video for- mátů, stejně jako práci s obrázky. Například formáty MPEG4, MP3, AAC, AMR, JPG nebo PNG.

22 Obousměrný přenos hlasu v reálném čase 23 http://www.oracle.com/technetwork/java/index.html

10 ● LibWebCore – podporuje webový prohlížeč v OS Android

● 3D knihovny

● FreeType – bitmapové a vektorové vykreslování písma

● SQLite - výkonný a jednoduchý nástroj pro správu relačních databází 2.2.2 Rozšíření základu OS Android

Pro rozšíření základu OS Android firma Google poskytuje dva hlavní zdroje – předinstalované aplikace a aplikace instalované uživatelem.

K instalaci a šíření aplikací na zařízení s OS Android slouží zabalený ZIP balík, známý jako Android Package, od jehož názvu se odvozuje i jeho koncovka .apk. [5] Jsou to zkomprimované zdrojové soubory (více informací o tomto tématu v kapitole 5.2.5).

Předinstalované aplikace OS Android obsahuje sadu předinstalovaných aplikací včetně chytrými telefony a tablety hojně využívaného emailu, kalendáře, webového prohlížeče a kontaktů. Tyto aplikace jsou klíčovými aplikacemi. Mají přístup k hlavním funkcím telefo- nu. Předinstalované aplikace můžou být součástí samotného OS Android nebo jsou rozšířením výrobce daného zařízení a obvykle je nejde odinstalovat. [12]

Aplikace instalované uživatelem OS Android poskytuje otevřené vývojové prostředí, které podporuje vývoj aplikací třetích stran. Tzv. Android Market nabízí uživatelům stovky tisíc aplikací od různých firem a vývojářů.

OS Android byl navržen nejen s ohledem na vývojáře, ale hlavně s ohledem na uživatele. Ti mají přehled nad tím, jak aplikace fungují, a které funkce využívají. Předpokládá se totiž, že případný útočník bude využívat běžně známé útoky

11 (např. sociální inženýrství24), aby donutil uživatele nainstalovat si do svého za- řízení byť nechtěně malware (aplikace poškozující zařízení), a také že bude vyu- žívat aplikace třetích stran. Snahou vývojářů OS Android je snížit možnost ja- kéhokoliv útoku a minimalizoval případné dopady (více o této problematice v kapitole 3.1.), pokud by útok byl úspěšný.

Android Market Android Market je cloudovou službou.25 Je to online obchod, pomocí něhož uživatel snadno a rychle hledá, kupuje a stahuje aplikace, které si pak může nain- stalovat přímo ze svého zařízení s OS Android nebo z webových stránek. Díky Android Marketu mohou uživatelé nacházet aplikace na jednom místě a vývojáři publikovat své aplikace a přiblížit je tak uživatelům – potenciálním zákazníkům. Android Market poskytuje také uživatelské hodnocení aplikací, licenční ověření a bezpečnostní služby. Na Android Marketu může své aplikace uveřejnit každý, kdo si založí vývojářský profil, zaplatí poplatek 25 amerických dolarů a bude souhlasit s tzv. Prodejní dohodou Android Marketu pro vývojáře. [14] [15]

Problémem Android Marketu je paradoxně jeho otevřenost. Aplikace nejsou kontrolovány individuálně před zveřejněním (jako třeba v online obchodu App Store firmy Apple), takže sem útočník může kdykoliv nahrát škodlivou aplikaci. Ta může působit například jako oblíbená hra (nejčastější) nebo jiná aplikace, jenomže bude mít povolena práva, která jsou pro její fungování na- prosto zbytečná. Každá aplikace v Android Marketu má totiž povolena určitá přístupová práva. Ty definují, ke kterým funkcím telefonu bude mít aplikace pří- stup. Škodlivá aplikace bude mít práva navíc (například tapeta na plochu bude mít povolený přístup k textovým zprávám) a těch pak může zneužívat.

V prosinci 2011 Android Market zaznamenal 10 miliard stažených aplikací.

Neznámé zdroje Aby se předešlo šíření malwaru (například stahováním aplikací z neoficiálních

24 http://www.fi.muni.cz/usr/jkucera/pv109/2003p/xsimek3sociotechnika.htm 25 Pomocí cloudových služeb lze onilne sdílet hardware i software

12 online obchodů), má zařízení s OS Android primárně povoleno instalovat aplika- ce pouze z Android Marketu. V nastavení telefonu je možno tento zákaz zrušit.

Android aktualizace Aktualizace služeb OS Android mohou probíhat například prostřednictvím in- ternetu nebo skrze mobilní sítě – Over The Air26 (dále jen OTA). Jedná se převážně o aktualizace verzí OS Android, které znamenají nové funkce a lepší zabezpečení zařízení. Společnost Google vydá oficiálně novou verzi OS Android a každý výrobce mobilních zařízení si ji upraví pro jednotlivé modely (z důvodu přizpůsobení každé verze OS Android danému typu zařízení). Výrobci se však více zabývají vývojem nových zařízení než aktualizováním verzí OS Android pro zařízení se starou verzí. [16]

Služby aplikace Pomocí tzv. frameworků, což jsou nástroje usnadňující programování [37], mají aplikace možnost například zálohovat svá data a nastavení pomocí cloud techno- logie skrze C2MD (což je například automatické zasílání informací o stavu zboží zákazníkům internetových obchodů, kde není zobrazeno telefonní číslo). [17]

Tyto služby nejsou součástí projektu otevřené platformy OS Android, ale jsou důležité pro bezpečnost mnoha zařízení s OS Android.

26 http://overtheair.org/blog/category/about/about-over-the-air/)

13 3 OS Android a jeho bezpečnost

Jednou z velkých výhod zařízení s OS Android je možnost disponovat množ- stvím aplikací a podporovat službu cloudu. To je zásluhou rozšířeného bez- pečnostního modelu. Ačkoliv jsou veřejně známy bezpečnostní chyby v OS Android, snaží se hlavní vývojáři operačního systému testovat pomocí vlastních bezpečnostních programů verze operačního systému po celý jejich životní cyklus. Inspirací k tomu, na co se zaměřit, se jim staly chyby ostatních mobilních, desktopových a serverových platforem. Vytváří tak silný zabezpe- čovací program, jehož úkolem je pohotově reagovat na bezpečnostní problémy a předcházet slabým místům, která byla vypozorována například u konkurence. [12]

3.1 Klíčové součásti vytváření bezpečnostního modelu OS Android

Design Již v rané fázi vývoje životního cyklu platformy Android byl vytvořen uspořá- daný bezpečnostní model a design. Technický a bezpečnostní zdroj přezkoumává každou novou funkci platformy, která pokud projde testy, je zapojena do archi- tektury systému. [12]

Penetrační testy a šifry Penetrační testy jsou simulace pokusů o útok na aplikaci zvenku i zevnitř pomocí různých nástrojů. Komponenty, které byly vytvořeny jako součást vývoje otevřené platformy Android, podléhají bezpečnostním hodnocením. Tato hodno- cení provádí tzv. Android Security Team, Google's Information Security Enginee- ring Team a nezávislí bezpečnostní konzultanti. Cílem hodnocení je co nejčastěji s dostatečným předstihem nalézt slabá místa bezpečnostního modelu a případné chyby v zabezpečení a simulovat typy analýz, které budou prováděny externími

14 bezpečnostními experty po uvolnění platformy. [18] [12]

Open Source a Společenství Všechny zúčastněné strany projektu Android Open Source (firma Google, vý- vojáři, bezpečnostní technici, uživatelé, aj.) mohou využívat široké bezpečnostní kontroly. Mezi tyto kontroly patří například fórum Android Marketu, kde firmy a vývojáři mohou poskytovat informace o určitých aplikacích přímo uživatelům. [12]

Reakce na události I přes všechna bezpečnostní opatření vývojářů OS Android mohou nastat potíže, a proto Android vytvořil souhrnné bezpečnostní odezvy, které řeší vzniklý problém. Tým starající se o bezpečnost OS Android neustále monitoruje specia- lizované i veřejně známé zabezpečení pomocí diskuzí (týkajících se možných chyb v zabezpečení) v Android Marketu. Objeví-li se nějak stížnost, bezpečnostní tým vše okamžitě prověří a pokud je stížnost oprávněná, ihned reaguje, aby tak minimalizoval potenciální rizika pro uživatele OS Android. Tyto reakce jsou prováděny například přes cloud pomocí aktualizace platformy OS Android (po- mocí aktualizace OTA), odstraněním aplikace z Android Marketu, a také od- straněním aplikace přímo ze zařízení, ve kterém je nainstalována.

Všechny operační systémy a jejich bezpečnostní modely se snaží být nejlepší. Jejich cílem je :

● Ochrana uživatelských dat

● Ochrana všech systémových prostředků.

● Vzájemná izolace aplikací.

OS Android toho dosahuje pomocí těchto klíčových bezpečnostních složek:

● Rozsáhlé zabezpečení na úrovní OS Android pomocí Linuxového jádra.

15 ● Povinný Aplikační Sandbox (více k tomuto tématu v kapitole 3.2) pro všechny aplikace.

● Bezpečné meziprocesové komunikace.

● Poskytování oprávnění pro přístup k jednotlivým funkcím zařízení.

Obrázek č. 4 [11]

Na Obrázku č. 4 jsou zobrazeny bezpečnostní složky a uspořádání různých úrovní softwaru OS Android. Předpokládá, že každá složka využívá fakt, že složky na nižších vrstvách jsou (co se bezpečnosti týče) pečlivě zajištěny. Vý- jimkou je část jádra OS Android, která běží s nejvyšším oprávněním a bez ja- kýchkoliv omezení. Všechny ostatní nástavby jsou omezeny Aplikačím Sandbo- xem.

16 3.2 Aplikační Sandbox

Platforma OS Android využívá výhod linuxového zabezpečení uživatelů, hlavně identifikaci a izolaci nástrojů aplikací. Každá aplikace je spouštěna jako oddělený proces s unikátním uživatelským ID (též UID), které je přiřazováno OS Android. Tímto způsobem nepracuje žádný jiný operační systém (ani tradiční linuxová konfigurace u které mají procesy v rámci jednoho uživatele stále stejná práva), na kterém také běží více aplikací se stejným uživatelským oprávněním.[12] [20]

O tuto funkci se na úrovni jádra stará Aplikační Sandbox. Jádro zajišťuje bez- pečnost mezi aplikacemi a systémem na procesní úrovni, kdy jsou aplikacím při- řazována ID, pomocí nichž mají aplikace povolení přístupu k určitým operacím. Běžně se aplikace nemohou vzájemně ovlivňovat a mají omezený přístup do ope- račního systému. Pokud se aplikace A pokouší o neoprávněný přístup k aplikaci B, například čtení jejích dat nebo vytáčení čísla bez povolení, je jí to operačním systémem zakázáno. [12] [20]

Ačkoliv je Aplikační Sandbox uložen v jádře, rozšiřuje se i do nativního kódu a do aplikací operačního systému. Všechen software vystavěný nad Linuxovým jádrem, včetně knihoven operačního systému, aplikačního frameworku, apli- kační runtime a všech aplikací, je spouštěn pomocí Aplikačního Sandboxu. Problémem jiných platforem je, že jsou vývojáři nuceni pracovat se speciálním vývojářským frameworkem nebo specifickým jazykem za účelem zvýšení bez- pečnosti. Díky Sandboxu je totiž nativní kód stejně bezpečný, jako kód interpre- tovaný, a proto nemá OS Android žádná omezení toho, jak má být aplikace na- psána.[12]

Pokud v některých operačních systémech nastane porušení integrity paměti, jedná se o zásadní ohrožení bezpečnosti. V OS Android se tak neděje díky tomu, že všechny aplikace jsou na úrovni operačního systému kontrolovány Apli- kačním Sandboxem. Chyba porušení integrity dovolí pouze spuštění libovolného kódu v rámci dané aplikace, která má povolena práva od OS Android.[12] [20]

17 Aplikační Sandbox stejně jako všechny ostatní bezpečnostní prvky OS Android není neprolomitelný. Aby však bylo možné obejít Aplikační Sandbox, je třeba na- rušit bezpečnost Linuxového jádra.

3.3 Další důležitá bezpečnostní opatření

Systémový oddíl a nouzový režim Systémový oddíl obsahuje nejen jádro OS Android, ale také knihovny operačního systému, aplikační runtime, aplikační framework a aplikace. Systémový oddíl je nastaven pouze ke čtení, nedá se do něj zapisovat. Pokud uživatel spustí zařízení v nouzovém režimu, jsou k dispozici pouze základní (předinstalované) aplikace. Uživatel tím zajistí, že se bude vyskytovat v prostředí bez aplikací třetích stran, kde může například zálohovat kontakty, fotky nebo jiná důležitá data. Může se stát, že se nám nepodaří zjistit, v které aplikaci se malware skrývá, a tak je prak- tické dostat se do prostředí, kde není žádná aplikace třetí strany. [20]

Oprávnění souborového systému V Unixovém prostředí zajišťuje oprávnění souborového systému to, že jeden uživatel nemůže měnit nebo číst ze souborů jiného uživatele. Podobně tak v pří- padě OS Android, kdy každá aplikace může číst pouze ze svých souborů a ne ze souborů jiné aplikace. Je pouze na vývojáři aplikace, zda k jeho aplikaci bude mít přístup pouze aplikace samotná, nebo jestli cíleně zveřejňuje soubory jiným aplikacím a umožňuje jim tak přečíst nebo změnit soubory. [12]

Šifrování souborového systému Od verze OS Android 3.0 je možno šifrovat souborový systém, takže všechna uživatelská data mohou být šifrována jádrem. Šifrovací klíč je chráněn šifrou AE- S128. Advanced Encryption Standard šifry (Pokročilý Šifrovací Standard) použí- vají na šifrování i dešifrování stejný klíč (délky klíčů jsou 128, 192 a 256 bitů) a nehrozí jim útok hrubou silou (vyzkoušení všech možných kombinací hesel). [38]

18 V OS Android se tyto šifry používají s podporou klíče odvozeného z uživatelské- ho hesla zadávaného při každém spuštění aplikace, což zabraňuje neoprávněné- mu přístupu k uloženým datům bez zadání uživatelského hesla pro dané za- řízení. Pro zaručení odolnosti vůči systematickým útokům na uhodnutí hesla (například hrubou silou) je heslo v kombinaci s náhodnou „solí“. [39] Sůl je řetě- zec, který se přidává k hashovanému27 heslu. Sůl je pokaždé jiná i pro stejná hes- la. Heslo je také hashováno šifrou SHA-1, která vstup rozdělí na bloky použitím standardního algoritmu PBKDF228. Aby nešlo heslo snadno uhodnout pomocí slovníkového útoku29, jsou na OS Android stanovena pravidla složitosti hesla, která si však nastavuje každý výrobce zařízení sám. [20] [21]

Ochrana heslem Pomocí hesla, které po uživateli může požadovat zařízení, aby k němu měl plný přístup, lze v OS Android šifrovat klíč celého souborového systému a také za- mezit neoprávněnému užití přístroje.

Výrobce zařízení může použití hesla vynutit, stejně jako může nastavit jeho mi- nimální délku a složitost.

Posílení bezpečnosti správy paměti OS Android obsahuje mnoho funkcí, které se starají o to, aby běžné bezpečností prvky byly méně zneužitelné. Android SDK, překladače i samotný operační sys- tém používají nástroje, které ztěžují porušení integrity paměti. Mezi tyto nástroje řadíme například: [12]

● Hardwarově založená No eXecute (NX) ochrana, která se používá k pre- venci provedení kódu na zásobníku nebo haldě.

● ProPolice, díky kterému se vyvarujeme přetečení zásobníku30.

27 Vstupy libovolné délky se mění na výstup délky pevně dané. 28 Password-Based Key Derivation Function – slouží pro odvození klíče. 29 Součástí programu je soubor obsahující slovník, program zkouší slova ze souboru jako hesla. 30 Druh útoku na operační systém nebo aplikaci.

19 ● Safe_iop k redukci přetečení integeru31.

● Rozšíření funkce dlmalloc zabraňující opakovanému volání funkce free() a použití již uvolněné paměti, které by vedlo k porušení integrity (usku- tečnění zápisu ještě před tím než se paměť skutečně uvolní).

Root zařízení Pouze jádro a malá část jádra některých aplikací mají ve výchozím nastavení za- řízení OS Android rootovská práva – práva superuživatele. Pokud uživatel nebo aplikace mají práva superuživatele, mohou měnit operační systém, jádro a jiné aplikace. Superuživatel má přístup ke všem aplikacím a do všech jejich dat. Uživatel zařízení, který root použije, nejen že přichází o záruku zařízení, ale sou- časně snižuje zabezpečení zařízení a vystavuje jej většímu množství potenci- álních rizik.

Důvodem proč je root povolený a proč vůbec existuje je vývoj aplikací na platfor- mě OS Android. Díky bootloaderu32, který mají uživatelé mnoha zařízení s OS Android možnost odemknout, je možné instalovat i jiné verze operačního systému. Tyto verze povolují uživateli získat root přístup za účelem ladění aplikací a systémových komponent nebo přístup k funkcím, které nejsou aplika- cím běžně dostupné.

Jinou verzi operačního systému, který umožňuje změnit obyčejného uživatele na uživatele s rootovskými právy, může nainstalovat i uživatel s fyzickou kontrolou zařízení a USB kabelem. Aby byl původní uživatel i jeho data chráněni, jsou při procesu zpřístupnění bootloaderu smazána veškerá uživatelská data. Rootovská práva, která jsou získaná pomocí chyby jádra nebo bezpečnostní díry, mohou tuto ochranu obejít.

31 Překročení daného rozmezí. 32 Část kódu, která leží ve vrchní části programové paměti, jejímž úkolem je získávat nový kód a zapisovat jej do spodní části programové paměti.. [40]

20 Data aplikací nejsou chráněna před uživateli s právy root kvůli šifrování dat po- mocí klíče uloženého na zařízení.

Data aplikací, které mají práva superuživatele, nejsou chráněny pomocí klíče uloženého na daném zařízení. Ochrana aplikace může být zvýšena přidáním klí- če, který je uložen mimo zařízení (například na serveru) nebo pomocí uživatel- ského hesla. Tato ochrana je pouze dočasná. Ve chvíli kdy aplikace klíč využije, stane se přístupným i uživatelům s právy root.

Odolnějším přístupem k ochraně dat před uživatelem s root právy je použití spe- cializovaného hardwaru. OEM33 výrobce pak může omezit přístup k určitému obsahu, například při přehrávání videa nebo k úložišti dat elektronické peně- ženky používající NFC.

Jelikož je klíč k dešifrování souborového systému chráněn uživatelským heslem, není možné (například v případě zcizení zařízení) uživatelská data zpřístupnit ani použitím bootloaderu, ani úpravou operačního systému. [12] [22]

33 Výrobce, který využívá ve svém zařízení části od jiných výrobců.

21 4 Způsoby ochrany dat uživatele

I přes bezpečnostní opatření vývojářů OS Android se často z různých periodik lze dozvědět o bezpečnostních problémech, které nastaly, ať už chybou systému nebo nastražením škodlivých aplikací v Android Marketu. Aby nedošlo k od- cizení dat, může se uživatel chránit sám několika způsoby.

4.1 Antiviry

Ve světě mobilních antivirů se snaží prorazit cestu hlavně velké firmy z oblasti bezpečnosti na počítačích, například firma AVG34.

Antiviry, které lze nalézt na Android Marketu mají hodně společných funkcí:

● Kontrolují nově stahovanou aplikaci,

● kontrolují v zařízení nainstalované aplikace,

● lokalizují zařízení (po přihlášení na účet, který se vytváří při prvním spuštění aplikace, se uživateli na mapě zobrazí poloha zařízení),

● obnovují zařízení do továrního nastavení,

● spouští na dálku alarm,

● antispam (například zablokování volání nežádoucího telefonního čísla).

Nevýhodou antivirů je jejich velká spotřeba baterie zařízení a také to, že se dají z telefonu jednoduše odinstalovat. Výjimečně jsou chráněny heslem, aby při krá-

34 https://market.android.com/details?id=com.antivirus

22 deži nebyl k antiviru snadný přístup, ale i to lze obejít přeinstalováním systému. Další nevýhodou je, že většina antivirů kontroluje pouze první stažení aplikace. Pokud aplikaci aktualizujeme a je v ní obsažen i nebezpečný kód, antivir to ne- zjistí. [23]

4.2 Firewally

Největším úkolem firewallů pro OS Android je blokovat určitým aplikacím pří- stup na internet. I přes to, že se u blokace dá nastavit doba působení (obvykle na nějaký časový úsek, do restartu nebo napořád), u většiny firewallů je omezení tak jako tak dočasné – po nějaké době se zákaz sám odblokuje a aplikace se znovu (aniž by si toho uživatel všiml) připojuje dál.

Některé firewally umí například blokovat sledování polohy. Se sledováním polo- hy se setkáváme u OS Android velice často. Využívá se například v cílených re- klamách aplikací (aplikace OS Android jsou převážně bezplatné – peníze vydě- lávají vloženou reklamou, která je cílená buď podle věku uživatele nebo podle místa, kde se nachází). Také sám Google je anonymně sbírá pro své statistiky. Do- plňkovými službami firewallů může být například sledování toku dat aplikací, nebo stejně jako u antivirů lokalizace či možnost nastavení antispamu. [24]

4.3 Uživatelská rozvážnost

Nejúčinějším nástrojem pro zabezpečení telefonu před napadením je uživatelovo vlastní uvažování. Stahuje-li nějakou aplikaci z Android Marketu, vždy je u ní uveden seznam funkcí telefonu, ke kterým má povolen přístup. Ty jsou zapsány v kódu aplikace v tzv. AndroidManifestu (více o této tématice v kapitole 5.2.5). V okamžiku, kdy aplikace bude mít povolenou funkci, ke které by podle přimě- řeného logického uvažování neměla mít přístup, není doporučeno ji stahovat. Uživatel si však musí uvědomit, že například plný přístup k internetu je u mnoha aplikací nutný z důvodu načítání reklam, které jsou do nich vkládány. Před tím,

23 než si nějakou aplikaci stáhne do svého zařízení, by se měl podívat, jaká dostala hodnocení, případně si přečíst příspěvky v komentářích. Zajistí tím, že neudělá stejnou chybu jako uživatelé před ním a nestáhne si malware do svého telefonu.

4.4 Ochrana dat při ztrátě nebo krádeži zařízení

Ztráta nebo krádež zařízení je velice nepříjemná záležitost, hlavně pak v případě chytrých telefonů, kdy uživatel může přijít nejen o kontakty a textové zprávy, ale i o citlivá data, jako například hesla a fotografie. Existují však aplikace, které se postarají o to, aby se uživatelova data nedostala do cizích rukou, a které mohou zařízení třeba i lokalizovat. Aplikací v Android Marketu najdeme hned několik. Obvykle jsou vybaveny upozorněním, že byla vyměněna karta SIM v telefonu. Pomocí webového rozhraní lze lokalizovat zařízení, spustit hlasitý alarm, obnovit tovární data, uzamknout zařízení nebo stáhnout výpis přijatých zpráv a hovorů. Aplikace obvykle nabízí i bonusové služby jako je například antivir, záloha dat na kartu SD nebo pořízení fotografie zloděje.

24 5 Návrh aplikace

Tato kapitola se zabývá popisem vývojového prostředí pro OS Android, ná- vrhem, stavbou a charakteristikou tříd aplikace DetectiveDroid, která má za úkol k vybrané funkci telefonu vypsat nainstalované aplikace, které mají povolena práva k tomu, aby mohly funkci využívat. Opačný postup, kdy lze ke každé aplikaci zobrazit funkce které používá, je možno vyhledat v nastavení zařízení, v položce Aplikace.

5.1 Vývoj aplikací pro chytré telefony

Již v polovině devadesátých let, byly zaznamenány první pokusy o propojení mobilního telefonu a internetu, byl vytvořen jednoduchý značkovací jazyk Handheld Device Markup Language (HDML)35, který byl předchůdcem WAP technologie36. Internet je u chytrých telefonů velice důležitý. Všechna data (poča- sí, zprávy, zálohování) i všechny aplikace jsou svázány s internetovým připo- jením (např. z důvodu aktualizace nebo stahování reklam). Do podvědomí širší- ho spektra uživatelů se však chytré (dotykové) telefony dostaly až v posledních pár letech hlavně díky společnosti Apple Inc. a jejímu telefonu iPhone. S velkou popularitou chytrých telefonů přichází i možnost a chuť programovat aplikace.

Jedním z nejzajímavějších faktorů OS Android je právě možnost programovat vlastní aplikace. Webová aplikace AppInventor umožňuje uživateli snadno vy- tvářet aplikace pro OS Android bez znalosti programovacího jazyka. Existuje mnoho návodů, jak si jednoduše vytvořit i pokročilejší aplikaci, avšak projekt AppInventor přestane být k 31. prosinci 2011 podporován ze strany firmy Google Inc. a služba bude ukončena. [25]

35 http://www.kosek.cz/clanky/wapkurz/uvod-konkurence.html 36 Jednodušší verze internetu pro mobilní telefony.

25 5.1.1 Vývojové prostředí pro Android

Nejjednodušším způsobem jak vytvořit aplikaci pro OS Android je nainstalovat si vývojové prostředí Eclipse (nutnost minimálně verze Galileo 3.5)37 a rozšířit jej o modul Android Development Tools (ADT – umožňuje jednoduše vylepšovat funkčnost aplikace v emulátoru i v reálném telefonu).

Dále je potřeba Android Virtual Device – AVD. Virtuální zařízení disponující OS Android. Je potřeba k tomu, abychom mohli vytvořenou aplikaci (nebo její části) testovat v emulátoru a vyzkoušet tak její funkčnost v různých verzích OS Android. Prakticky tak nepotřebujeme reálné telefony, i když na těch je testování přece jenom o něco přesnější.

Během vytváření aplikace je nutno OS Android oznámit s jakou úrovní API38 bude pracovat. Aplikace DetectiveDroid je vytvořena na platformě Android 2.2 v jazyce Java. Android 2.2 není nejaktuálnější platformou, která je k dispozici, ale testovací telefon LG Optimus Black měl na začátku práce na aplikaci dostupnou pouze verzi Android 2.2. Výhodou OS Android je, že aplikace programované na starších verzích platforem jsou vždy kompatibilní s novějšími verzemi operační- ho systému.

5.2 Základ architektury aplikace OS Android

5.2.1 Aktivity

Hlavní stavební bloky aplikací OS Android se nazývají aktivity. Každá aktivita představuje jednu obrazovku aplikace. „Aktivity můžete chápat jako analogii oken či dialogů aplikace pro stolní počítač.“ [26] To umožňuje, že se jednotlivé obrazovky a jejich části dají vyvolat i z jiné než mateřské aplikace. [5] [27] [28]

37 http://www.eclipse.org/ 38 Rozhraní aplikačního programu, je udáváno číslem, které zaznamenává verzi OS Android.

26 Obrázek č. 5: Životní cyklus aktivity [28]

Každá aktivita má svůj životní cyklus, který se skládá ze čtyř částí. Aplikace je:

● Aktivní (Running) – aktivita spuštěná uživatelem, běží v popředí

● Pozastavená (Paused) – aktivita byla narušena upozorněním. Je spuštěná uživatelem, běží a je čitelná, překrývá ji však okno s upozorněním - na- příklad oznámení o příchozí zprávě SMS

● Zastavená (Stopped) – aktivita je spuštěna uživatelem, ale byla skryta ji- nými aplikacemi, které byly spuštěny po ní, s uživatelem může stále ko- munikovat pomocí upozornění

27 ● Mrtvá (Destroyed) – aktivita mohla být násilně ukončena (například kvů- li nedostatku paměti), nebo ji uživatel vůbec nespustil

Spouštění a ukončování aktivit funguje na principu LIFO39, kdy se aplikace po spuštění dostane na vrchol pomyslného balíku karet. Pokud uživatel právě spuštěnou aktivitu zavře nebo se vrátí o krok zpět, vždy se mu objeví aktivita dříve spuštěná. 5.2.2 Dodavatelé obsahu (Content providers)

Data uložená v zařízení mohou být přístupná několika rozličným aplikacím. Zá- kladem vývojového modelu OS Android je zpřístupnit data a obrazovky aplikace i jiným aplikacím. K tomu slouží Dodavatel obsahu, který zajišťuje kontrolu pří- stupu k uživatelským datům. Usnadní to tak práci programátorům, kteří mohou používat aktivity a data jiných dříve vytvořených aplikací. [26] [28] 5.2.3 Služby (Services)

Služba je kód, který je spuštěn na pozadí. Aktivity a Dodavatele obsahu můžeme kdykoliv vypnout a také nedisponují dlouhou životností. Oproti nim jsou služby neustále aktivní. Jsou nezávislé na aktivitách, kterými byly spuštěny. Využívají se například při přehrávání hudby, kdy uživatel hudbu spustí a poté ukončí uživa- telské rozhraní, ale chce, aby hudba stále hrála na pozadí, k detekci aktualizací RSS, nebo ke kontrole aktualizace aplikací z Android Marketu. [26] [28] 5.2.4 Záměry (Intents)

Aplikace v OS Android mezi sebou komunikují pomocí Záměrů. Jsou to zprávy systému, které upozorňují sdružené aplikace, že se něco změnilo. Mezi takové změny patří například hardwarová konfigurace (např. nedostatek místa v pamě- ti), upozornění na příchozí data (např. příchozí volání) nebo samotné události aplikace (např. selhání aplikace). [26] [28]

39 Last In – First Out

28 5.2.5 AndroidManifest

AndroidManifest je řídícím souborem psaným ve značkovacím jazyce XML (více v kapitole 5.3.1 ), který popisuje celou aplikaci a její Aktivity, Služby, Dodavatele obsahu a Záměry aplikace. Obsahuje také soupis všech oprávnění, která říkají, ke kterým funkcím telefonu má aplikace přístup. Ty si poté může uživatel přečíst v informacích o aplikaci v Android Marketu nebo v nastavení aplikací ve svém telefonu. V AndroidManifest se také dozvídáme, jaké má naše aplikace Aktivity a jakou minimální verzi SDK musí naše zařízení mít, aby aplikace korektně fungovala.

Součástí AndroidManifest. je package – jméno balíčku, ve kterém se skrývá celá aplikace. Aby mohla být aplikace distribuována v Android Marketu, musí být jméno balíčku jedinečné. Jméno balíčku také slouží jako Android Package – ZIP balík s koncovkou .apk, který slouží instalaci a šíření aplikací na zařízení s OS Android. Jsou v něm uloženy zkomprimované zdrojové soubory aplikace. [26] [29]

Zdrojový kód č. 1: Ukázka povolení přístupu k funkci.

29

Zdrojový kód č. 2: Ukázka přidání úvodní aktivity aplikace DetectiveDroid.

Při vytváření aplikace DetectiveDroid jsem se snažila využívat principu KISS (Keep It Simple, Stupid), který říká, že nejlepší cesta k úspěchu vede přes jedno- duchost. [30]

Obrázek č. 6: Use case diagram aplikace DetectiveDroid

30 Při tvorbě aplikace DetectiveDroid bylo potřeba uvědomit si, co všechno může uživateli nabízet.

● Zapni aplikaci – spuštění aplikace uživatelem.

● Zobraz funkce telefonu – zobrazí skupiny funkcí (povolení) telefonu, uživatel vybírá skupinu, jejíž funkce chce zobrazit.

● Zobraz funkce telefonu – pro vybranou kategorii se zobrazí funkce te- lefonu, k nimž mohou mít aplikace přístup, uživatel vybírá tu funkci, ke které chce zobrazit v telefonu nainstalované aplikace, jež ji využí- vají.

● Zobraz aplikace – zobrazení aplikací, které využívají uživatelem zvo- lenou funkci.

● Seřaď aplikace – seřadí aplikace podle abecedy nebo podle data aktua- lizace.

Základem bylo roztřídit funkce telefonu do nadřazených kategorií, aby byla aplikace přehlednější. Tím byl určen počet aktivit v aplikaci. Díky Záměrům a Dodavatelům úrovně mohly být funkce telefonu v aplikaci DetectiveDroid na totožné úrovni ve stejné aktivitě.

5.3 Návrh grafického rozhraní aplikace

Při plánování grafického rozhraní aplikace je nutné brát v potaz několik nevýhod chytrých telefonů. Patří mezi ně například velikost displeje, která je oproti počíta- čům velice malá, ale občas je zase úhlopříčka displeje natolik veliká, že uživatel těžko dosahuje z jednoho konce obrazovky na druhý. Nebo také nepohodlná klávesnice (ať už virtuální nebo vestavěná), která může dělat potíže lidem s větší- mi prsty. Při návrhu aplikace DetectiveDroid bylo úmyslem vytvořit aplikaci

31 jednoduchou a příznivou pro uživatele. Díky rozdělení do skupin funkcí, vznikly tři přehledné obrazovky, ve kterých se uživatel pohybuje jednoduše pomocí dote- ků na obrazovce, případně tlačítka zpět, které je na většině telefonů integrováno. 5.3.1 Extensible Markup Languate - XML

Vzhled aplikací v dotykových chytrých telefonech je jedním z nejpřitažlivějších faktorů těchto zařízení. Prvky uživatelského rozhraní, které používáme v aplika- ci, a které nám aplikaci formují, dodávají jí sympatický vzhled, se nazývají Wi- dgety. V OS Android můžete tvárnost aplikace určovat dvěma způsoby – pomocí značkovacího jazyka XML nebo pomocí kódu Javy. Mezi vývojáři je jazyk XML oblíbenější. XML totiž využívá principu Model-Viewer-Control, kdy je uživatel- ské rozhraní odděleno od logického kódu a vše tak působí přehledněji. [26] [27]

Značkovací jazyk XML se skládá ze dvou hlavních prvků – elementů a atributů. Elementy jsou základní jednotkou celého dokumentu psaného ve značkovacím jazyce XML a je nutné, aby byly ohraničeny počátečním a koncovým tagem. Pod pojmem tag rozumíme ostré závorky – „<“ na začátku jako počáteční tag a „>“ na konci elementu jako tag koncový. Vezmeme si například tag elementu s názvem „string“. Jeho počáteční tag značíme a k němu náleží tag koncový . Obsah elementu, pokud se nejedná o element prázdný, se nachází mezi těmito značkami. Máme-li element prázdný, značíme jej . Atributy doplňují elementy – doplňují jejich význam, upřesňují element. Na- příklad určují elementu jeho ID, můžeme pomocí nich manipulovat se vzhledem výchozího dokumentu, odkazovat na další elementy aj. Atribut se skládá ze jmé- na a jeho příslušné hodnoty. Jméno i hodnotu udáváme v počáteční značce ele- mentu (který může být opět prázdný). Hodnotu atributu od jména oddělujeme rovnítkem (=) a uvádíme ji vždy v uvozovkách nebo apostrofech. Například atribut android:gravity="center" zarovnává daný element na střed. Součástí jednoho elementu nemůžeme mít dva atributy nesoucí stejné jméno. [31]

32

Zdrojový kód č. 3: Ukázka kódu barevné odrážky 5.3.2 Pohledy a Skupiny pohledů Okno aktivity se zobrazuje na celou obrazovku, ale může zabírat pouze část. To je specifikováno na základě nastavení Pohledů - Views. Vizuální komponenta Pohled představuje na obrazovce prostor ve tvaru obdélníku. Součástí Pohledů jsou Plány - Layouts, díky kterým je možno vhodně rozložit postavení prvků (tlačítek, obrázků, ikon, textu) na obrazovce.

Speciálním typem Pohledů jsou ViewGroups – Skupiny pohledů. Ty obsahují a zároveň i řídí menší či větší množství Pohledů a také jiné Skupiny pohledů. Díky Skupinám pohledů mohou být jejich podřízené komponenty řešeny jako ce- lek (mohou jim být hromadně nastavovány některé parametry). Tato hierarchie Skupin pohledů a Pohledů se nazývá Stromová struktura. [27] [32]

Obrázek č. 7: Ukázka aplikace DetectiveDroid

33 6 Závěr

Bezpečnost OS Android je založena nejen na průběžném testování odolnosti bez- pečnostního modelu, ale také na neustálém monitorování situace, kdy bez- pečnostní tým sleduje jak případné nedostatky u samotného OS Android, tak i problémy konkurence. Bezpečnostní tým OS Android také zabraňuje rozšíření škodlivých aplikací. Ty se mohou do zařízení dostat z důvodu otevřenosti ope- račního systému, kdy nejsou nově nabízené aplikace jednotlivě kontrolovány bezpečnostním týmem, ale jsou poskytovány přímo uživatelům OS Android skrze internetový obchod Android Market. Součástí kódu každé aplikace jsou po- volení, která umožňují aplikaci přístup k určitým funkcím telefonu. Škodlivé aplikace mohou mít přístup k funkcím telefonu, ke kterým by vůbec přístup mít neměly. Jedná se o promyšlený útok, kdy jsou uživateli bez jeho vědomí nejčastěji monitorovány odchozí a příchozí hovory, textové zprávy nebo informace z webového prohlížeče zařízení. Získaná data jsou pak odesílána na vzdálený server a mohou být zneužita. Povolení přístupu k funkcím jsou uživateli vždy před stažením aplikace z Android Marketu zobrazena a on sám může roz- hodnout, zda-li chce aplikaci s tímto povolením mít nainstalovanou v telefonu. Je-li uživatel méně zkušený, může si do zařízení nainstalovat firewall nebo an- tivir. To ovšem neznamená jistou ochranu před škodlivými aplikacemi, protože tyto služby běžně při aktualizaci aplikace na povolení přístupu již nedohlíží a mohou škodlivou aplikaci do telefonu pustit.

Pomocí aplikace DetectiveDroid je v práci popsána základní architektura aplikací OS Android. DetecitveDroid k vybrané funkci telefonu zobrazuje aplikace, které mají oprávnění přístupu k dané funkci. To usnadňuje uživateli odhalení škodlivé aplikace s povolením přístupu k funkci, která není využívána oprávněným způ- sobem. Nabude-li uživatel podezření, že nějaká aplikace využívá pro ni běžně nepotřebné funkce, pomocí aplikace DetectiveDroid získá seznam vytříděných aplikací, ve kterém se mu bude orientovat lépe než v seznamu všech v telefonu nainstalovaných aplikací a snadněji tak škodlivou aplikaci odhalí a odstraní.

34 7 Literatura

[1] Gartner Says Sales of Mobile Devices Grew 5.6 Percent in Third Quarter of 2011; Smartphone Sales Increased 42 Percent [online]. c2011, poslední revize 15.12.2011 [cit. 2011-12-13]. Dostupný z WWW: .

[2] Alliance Members | Open Handset Alliance [online]. c2011, [cit. 2010-10-18]. Dostupný z WWW:

[3] Android Developer Challenge [online]. c2011, [cit. 2011-10-18]. Dostupný z WWW:

[4] TÝŘ, Jíří. První krůčky s Google Android - Root.cz [online]. c2009, poslední revize 2.2.2009 [cit. 2011-10-18]]. Dostupný z WWW:

[5] KYPTA, Tomáš. Vyvíjíme pro Android – úvod [online]. c1999-2011 , poslední revize 16.3.2011 [cit. 2011-12-03. Dostupný z WWW:

[6] [x]cubelabs. The Android Story. [INFOGRAPHIC] [online]. c2011, [cit. 2011- 10-20]. Dostupný z WWW:

[7] VITÁSEK, Jakub. Co umí který Android? Přinášíme vám přehled jeho verzí | mobilenet.cz [online]. c2004-2011 , poslední revize 10.9.2010 [cit. 2011-10-20]. Dostupný z WWW: http://mobilenet.cz/clanky/co-umi-ktery-android-prina- sime-vam-prehled-jeho-verzi-5778/>

35 [8] KILIÁN, Karel. Historie operačního systému Android a jeho verzí v kostce - Za- Rohem.cz [online]. c2011, poslední revize 29.8.2011[cit. 2011-10-20]. Dostupný z WWW: < http://blog.zarohem.cz/clanek.asp?cislo=2076>

[9] ČÍŽEK, Jakub. Do nitra Ice Cream Sandwich: co všechno umí? - MobilMania.cz [online]. c2000–2011, poslední revize 20.10.2011 [cit. 2011-10-20]. Dostupný z WWW:

[10] Platform Versions | Android Developers [online]. c2011, poslední revize 1.12.2011 [cit. 2011-12-21]. Dostupný z WWW:

[11] What is Android? | Android Developers [online]. c2010, poslední revize 3.11.2011 [cit. 2011-11-10]. Dostupný z WWW:

[12] Android Security Overview | Android Open Source [online]. c2011, [cit. 2011- 12-03]. Dostupný z WWW:

[13] Two Android Vulnerabilities Allow Malicious Apps To Install On Your Device Wi- thout Your Permission [online]. c2011, poslední revize 20.9.2011 [cit. 2011-12- 16]. Dostupný z WWW:

[14] Android Apps - Nápověda Android Market [online]. c2011, [cit. 2011-11-06]. Dostupný z WWW:

36 [15] Aplikace ve službě Android Market [online]. c2011, [cit. 2011-11-06]. Dostupný z WWW:

[16] LUTONSKÝ, Marek. O sirotcích s Androidem - MobilMania.cz [online]. c2000–2011 , poslední revize 31.10.2011[cit. 2011-11-06]. Dostupný z WWW:

[17] VOGEL, Lars. Android Cloud to Device Messaging (C2DM) - Tutorial [online]. c2011, poslední revize 9.12.2011 [cit. 2011-12-14]. Dostupný z WWW:

[18] Penetrační testy | DCIT, a.s. [online]. c2011, [cit. 2011-11-30]. Dostupný z WWW:

[19] Zabezpečení v zařízeních Android [online]. [cit. 2011-12-06]. Dostupný z WWW:

[20] Boot Into Safe Mode – Wiki [online]. c2010, poslední revize 27.7.2010 [cit. 2011-12-06]. Dostupný z WWW:

[21] Notes on the implementation of encryption in Android 3.0 | Android Open Source [online]. c2011, [cit. 2011-12-07]. Dostupný z WWW:

37 [22] HOUŠKA, Petr. Co je to ten Root? | Androidmarket.cz [online]. c2011, po- slední revize 24.1.2011 [cit. 2011-12-10]. Dostupný z WWW:

[23] VACULÍK, Přemysl. Android Apps 11 - antivirový speciál [online]. c2011, po- slední revize 4.8.2011 [cit. 2011-12-15]. Dostupný z WWW:

[24] KYLIÁN, Karel. Nechcete, aby vás Google špehoval? Nasaďte firewall!; Svět Androida Novinky ze světa mobilního operačního systému Android [online]. c2011, poslední revize 5.5.2011 [cit. 2011-12-14]. Dostupný z WWW:

[25] About - . [cit. 2011-12-16]. Dostupný z WWW:

[26] MURPHY, Mark L. Android 2 : průvodce programováním mobilních aplikací. Přeložil Jakub MUŽÍK. 1.vydání. Brno: Computer Press, 2011 [cit. 2011-12- 06]. 375 s. ISBN 978-80-251-3194-7

[27] GRAMLIC Nicolas. Andbook! Android programming. [online]. c2011, [cit. 2011-12-10]. Dostupný z WWW:

[28] All comments on Learning Android [online]. c1997-2009 , [cit. 2011-12-08]. Dostupný z WWW:

[29] VOGEL, Lars. Android 4.0 Development Tutorial [online]. c2009-2011 , po- slední revize 4.12.2011 [cit. 2011-12-08]. Dostupný z WWW:

38 [30] What is KISS principle? definition and meaning [online]. c2011, [cit. 2011-12- 16]. Dostupný z WWW:

[31] PITNER, T. Moderní značkovací jazyky a jejich aplikace [online]. c2011, po- slední revize 22.2.2011 [cit. 2011-12-16], Dostupný z WWW:

[32] MEIER, Reto. Professional Android™ 2 Application Development. Indianapolis : Wiley Publishing, Inc., 2010. str. 543. ISBN: 978-0-470-56552-0.

[33] RENSHAW, Nickl. A brief history of Android OS | Life of Android [online]. c2011 , poslední revize 2.2..2011 [cit. 2011-10-18]. Dostupný z WWW:

[34] Android [online]. c2011, [cit. 2011-10-18]. Dostupný z WWW:

[35] Průvodce jádrem operačního systému - Meziprocesorová komunikace [onli- ne]. [cit 2011-10-18]. Dostupný z WWW:

[36] What Is CDMA? [Online]. c2003-2011, [cit 2011-12-21]. Dostupný z WWW:

[37] What Is a Framework? - CodeProject® [online]. c2003, poslední revize 3.11.2003 [cit. 2011-12-21]. Dostupný z WWW:

[38] KLÍMA, Vlastimil. Nová šifra nastupuje [online]. Poslední revize květen 2002 [cit. 2011-12-21]. Dostupný z WWW:

39 [39] TICHÝ, Jan. PHP Guru - Solení hesel aneb Sůl nad zlato [online]. c2005-2011, poslední revize 30. 10. 2007 [cit. 2011-12-21]. Dostupný z WWW:

[40] Bootloader (zavaděč) - JS Homepage [online]. [cit. 2011-12-21]. Dostupný z WWW:

[41] KOVÁČ, Adam. Android 4.0 a bezpečnost; Svět Androida Novinky ze světa mo- bilního operačního systému Android [online]. Poslední revize 10.11.2011 [cit. 2011-12-23]. Dostupný z WWW:

40 8 Přílohy

Na přiloženém CD je následující obsah:

Zdrojové kódy k aplikaci DetectiveDroid

Aplikace DetectiveDroid (.apk)

41