Microsoft Word - Zove Jure-diploma-final_pred_tiskom.docx

Podobni dokumenti
NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

Uporabniški priročnik za aplikacije resound.com

VPELJAVA MDM V DRŽAVEM ZBORU MATJAŽ ZADRAVEC

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Navodila za uporabo Mini snemalnik

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

Navodila za nastavitev mail odjemalca na ios in Android napravah TELEFONI iphone (ios 12) Predlagamo, da do svoje študentske e-pošte dostopate s pomoč

ZAČETNI VODNIK ZA POVEZAVO Izkusite prilagojeno nego perila z aplikacijo My AEG Care. Pralni stroj lahko povežete in upravljate od koder koli in preje

Nameščanje Adopt Open Java Development Kit 8

Nameščanje Adopt Open Java Development Kit 8

Gimnazija Bežigrad Peričeva Ljubljana OPERACIJSKI SISTEM Predmet: informatika

Microsoft Word - CN-BTU4 Quick Guide_SI

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Navodila za uporabo Mini prenosna HD kamera s snemalnikom

PowerPointova predstavitev

Microsoft Word - CNR-MPV2 Quick Guide_SI

PowerPoint Presentation

Chapter 1

TRGOVSKI PORTAL SPLETNA APLIKACIJA NAMENJENA TRGOVCEM POGOSTA VPRAŠANJA IN ODGOVORI Ljubljana, Verzija 1.0

Slide 1

Za vaše podjetje ModernBiz Glossary 2014 Microsoft Corporation. Vse pravice pridržane.

Elektronska pošta

Na podlagi 24. in 25. člena Zakona o varstvu osebnih podatkov (Ur. list RS, št. 94/07), sprejema ravnatelj javnega zavoda Dijaški dom Nova Gorica nasl

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

PowerPointova predstavitev

docx

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik

MT40X Kratka navodila

Vzpostavitev več nivojske varnostne infrastrukture S pomočjo Elektro Maribor, McAfee SIEM, CISCO ISE, NGFW Zorna Varga, Sfera IT d.o.o in Klemen Bačak

Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX Dodajanje uporabnikov vajexx v skupino Vaje

PowerApps

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij.

Microsoft Word - CNC obdelava kazalo vsebine.doc

FOR SMARTER PEOPLE TAKO SE VLOMI PREPREČUJEJO DANES REHAU Smart Guard System plus preventivna protivlomna zaščita WINDOWS. REINVENTED FOR MODERN LIFE.

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Bluetooth slušalka Plantronics Explorer 10 Kataloška št.: 132

NASLOV PREDAVANJA IME IN PRIIMEK PREDAVATELJA

Folie 1

KATALOG 2002/03

Kratka navodila za uporabo razširjevalnika dosega WiFi AC750 model EX3800

Presentation Name / Author

Nove različice programske opreme GE Podjetje GE Digital, vodilni svetovni proizvajalec programske opreme za področje avtomatike, je izdalo kar nekaj n

Najboljša skupaj Kontrola pristopa + registracija delovnega časa

BDV-N890W/BDV-N790W

ISOFT , računalniški inženiring

Vostro 430 Informacijski tehnični list o namestitvi in funkcijah

PowerPointova predstavitev

INTERAKTIVNE REŠITVE PROMETHEAN

Postavka Naziv storitve Enota mere Cenik velja od dalje. Cena v EUR brez davka z davkom Stopnja davka 1. Poslovni paketi in dodatne storitv

TRGOVSKI PORTAL SPLETNA APLIKACIJA NAMENJENA TRGOVCEM NAVODILA ZA REGISTRACIJO IN PRIJAVO Ljubljana, Verzija 1.1

UPRAVLJANJE RAZPRŠENIH PODATKOV Shranjevanje, zaščita in vzdrževanje informacij, ki jih najbolj potrebujete

Microsoft PowerPoint - seminar_ pptx

Splošni pogoji poslovanja 1. Uvodna določba 1) Splošni pogoji poslovanja so pravni dogovor med končnim uporabnikom (fizična ali pravna oseba, v nadalj

Miluma Trader Miluma Trader navodila: V nadaljevanju sledijo osnovna navodila, kako začeli uporabljati Miluma Trader. 1. Preverite spletno stran Ta po

NAVODILA ZA IZPOLNJEVANJE ELEKTRONSKEGA OBRAZCA ZA PRIJAVO IN PREKLIC DIGITALNIH POTRDIL Verzija Datum Opis sprememb dokumenta dokumenta

CODEKS IP KAMERA

Watch 40_MT40X_UM_SL.pdf

SETCCE Uporabniška navodila za namestitev in upravljanje komponente SETCCE proxsign v2.0.5 za MAC OS X [Nova generacija komponent SETCCE proxsign ] Id

Linksys PLEK500 User Guide

DES

NAVODILA ZA MONTAŽO SI EWPE SMART Wi-FI app

NAVODILA ZA UPORABO Smart watch JW018 POZOR! Ura vsebuje magnetne sestavine. Osebe z vgrajenim srčnim spodbujevalnikom (pacemaker) ali kakršnimi drugi

Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnov

NETGEAR R6100 WiFi Router Installation Guide

TRGOVSKI PORTAL SPLETNA APLIKACIJA NAMENJENA TRGOVCEM NAVODILA ZA REGISTRACIJO IN PRIJAVO Ljubljana, Verzija 1.1,

innbox_f60_navodila.indd

Adaptive Sound Technology Dodatek

Slide 1

Microsoft Word - M docx

an-01-Vodoodporna_prenosna_polnilna _postaja_Powerbank_Beltrona_Camouflage_5200_mAh.docx

Modem in krajevno omrežje Uporabniški priročnik

an-01-sl-Bluetooth_HD_glasbeni_sprejemnik_za_brezzicni_prenos_Belkin_G3A2000.docx

INFORMATOR BIROKRAT 1/2011

Hiter začetek Razširjevalnik dosega WiFi N300 Model EX2700

EU-TPD 1 PODROBNOSTI KODIRANJA Informacije za trgovino JB za DCTA, (Final 1.2) Obveznost kodiranja izdelka, urejena s predpisom EU-TPD se n

DCS-2330L_A1_QIG_v1.00(EU).indd

Untitled 2

NETGEAR R6250 Smart WiFi Router Installation Guide

Microsoft PowerPoint - Sequi_SecDAy.ppt

bob p. p Ljubljana Tel.: (cena klica na minuto je 1 z DDV) Posebni pogoji uporabe storitve moj bob

Navodila za uporabo aplikacije mlist - neposredni mentorji za Zdravniško zbornico Slovenije pripravila Gooya, interaktivni mediji, d.o.o. Ljubljana, m

INFORMATOR BIROKRAT 1/2011

NASLOV PREDAVANJA IME IN PRIIMEK PREDAVATELJA

IZGRADNJA PREDSTAVITVENE SPLETNE STRANI GLUCOWATCH Avtor: Marko Zajko Projekt delno financira Evropska unija, in sicer iz Evropskega socialnega sklada

Microsoft Word Navodila za povezavo naprave v oblak_SLO

Spoznajmo PowerPoint 2013

D3 V2 brosura net

Microsoft Word - Brosura neobvezni IP

PowerPoint Presentation

Microsoft Word - Splosni pogoji za uporabnike storitve_ONA_ doc

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO WLAN usmerjevalnik TP LINK Archer C5 Kataloška št.:

Macoma katalog copy

Safety and Regulatory Information

PowerPointova predstavitev

Microsoft Word - Splošni pogoji Horizont veljavni od docx

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Daljinski sprožilec za fotoaparat, iskalec ključev in zaščita

Microsoft PowerPoint - ads

Transkripcija:

Jure Žove MOBILNA APLIKACIJA ZA ŠIFRIRANJE OSEBNIH MULTIMEDIJSKIH VSEBIN Diplomsko delo Maribor, september 2012

MOBILNA APLIKACIJA ZA ŠIFRIRANJE OSEBNIH MULTIMEDIJSKIH VSEBIN Diplomsko delo Študent: Študijski program: Smer: Mentor: Jure Žove univerzitetni študijski program Informatika in tehnologije komuniciranja Informacijski sistemi doc. dr. Marko Hölbl

I

Zahvala Zahvaljujem se mentorju Marku Hölblu za pomoč in vodenje pri opravljanju diplomskega dela. Posebna zahvala gre staršem, ki so mi študij omogočili, partnerki in ostalim bližnjim, ki so mi tekom študija bili v oporo. II

Mobilna aplikacija za šifriranje osebnih multimedijskih vsebin Ključne besede: ios, SDK, varnost, mobilna platforma, mobilna aplikacija UDK: 004.777:621.39(043.2) Povzetek Diplomsko delo opisuje mobilno platformo ios ter predstavi njena glavna ogrodja, programski jezik in orodja za razvoj ter analizo aplikacij. Rezultat diplomskega dela je delujoča aplikacija, ki uporabnikom na enostaven in intuitiven način omogoča šifriranje osebnih multimedijskih vsebin na mobilnih napravah. Predstavljen je razvoj aplikacije in najpogostejše tehnike načrtovanja aplikacij na platformi ios. Prav tako so opisane omejitve ter rešitve težav, ki so se pojavljale tekom razvoja. III

A mobile application for encrypting personal multimedia content Key words: ios, SDK, security, mobile platform, mobile application UDK: 004.777:621.39(043.2) Abstract This study outlines ios mobile platform and presents its frameworks, programming language and tools for development and analysis of applications. The result of the study is a working application that enables users to easily and intuitively encrypt their personal multimedia content on mobile devices. The thesis provides presentation of the application development and most common ios programming techniques used, as well as limitations and solutions to difficulties that occurred during development. IV

VSEBINA 1. UVOD... 1 2. MOBILNE TEHNOLOGIJE... 3 2.1. Evolucija mobilnih tehnologij... 3 2.2. Mobilni operacijski sistemi... 4 3. PLATFORMA ios... 9 3.1. Naprave ios... 10 3.2. Varnost in zaščita... 11 3.3. SDK (Software Development Kit)... 13 3.4. Xcode... 15 3.5. Programski jezik Objective-C... 16 4. ŠIFRIRANJE PODATKOV V APLIKACIJI... 20 4.1. Metoda šifriranja AES... 20 5. RAZVOJ APLIKACIJE SECURIT... 22 5.1. Funkcionalnosti aplikacije... 22 5.2. Omejitve pri razvoju... 22 5.3. Uporabljene metode in načrtovalski vzorci... 23 5.4. Uporabniški vmesnik... 26 5.5. ARC (Automatic reference counting)... 30 5.6. Testiranje... 32 6. SKLEP... 35 7. VIRI... 36 KAZALO SLIK Slika 3.1: Nivoji operacijskega sistema ios [1]... 9 Slika 3.2: Načrtovanje uporabniškega vmesnika v Storyboards [5]... 16 Slika 5.1: Aplikacijski peskovniki v ios... 23 Slika 5.2: Diagram načrtovalskega vzorca MVC... 24 Slika 5.3: Shema modelov v Core Data... 26 Slika 5.4: Primer inovativnega uporabniškega vmesnika aplikacije Clear [17]... 27 V

Slika 5.5: Delovanje komponente JZMenu... 28 Slika 5.6: Uporaba komponente JZUnlockView... 28 Slika 5.7: Prikaz komponente na ipadu (levo) in iphonu (desno)... 29 Slika 5.8: Poraba pomnilnika z neoptimiziranim načinom uvoza podatkov... 33 Slika 5.9: Prikaz porabe pomnilnika z optimiziranim načinom uvoza podatkov... 34 KAZALO TABEL Tabela 2.1: Tržni delež operacijskih sistemov 6. septembra 2012 [11]... 7 KAZALO IZSEKOV PROGRAMSKE KODE Izsek kode 3.1: Definicija in implementacija razreda v Objective-C... 17 Izsek kode 3.2: Uporaba objekta tipa Razred... 18 Izsek kode 3.3: Definicija in deklaracija protokola... 18 Izsek kode 3.4: Definicija in implementacija kategorije... 19 Izsek kode 5.1: Razredna metoda za pomoč pri šifriranju podatkov... 30 Izsek kode 5.2: Razredna metoda za dešifriranje podatkov v obliko UIImage... 30 Izsek kode 5.3: Kreiranje objekta tipa NSObject... 31 Izsek kode 5.4: Sproščanje pomnilnika brez sistema ARC... 31 Izsek kode 5.5: Optimizirana koda za uvoz podatkov... 34 VI

UPORABLJENE KRATICE API Application Programming Interface PDA Personal Digital Assistant OS Operating System DOS Disk Operating System HTML Hyper Text Markup Language SDK Software Development Kit SMS Short Message Service MMS Multimedia Messaging Service AES Advanced Encryption Standard MDM Mobile Device Management ARC Automating Reference Counting JSON JavaScript Object Notation GPS Global Positioning System BSD Berkeley Software Distribution DHCP Dynamic Host Configuration Protocol MVC Model View Controller VII

1. UVOD Živimo v dobi informacijskih tehnologij, kjer sta jezikovna in računalniška pismenost vedno bolj enakovredni, saj so se elektronske naprave zlile v naša življenja. Brez elektronskih pripomočkov si vsakdana več ne moremo predstavljati, okoli sebe pa skoraj ne najdemo človeka, ki ne bi znal na mobilnem telefonu vsaj izvesti klica ali poslati sporočila SMS. V preteklosti je bila situacija drugačna, saj so bili tisti, ki so znali uporabljati računalniške terminale, pravi tehnološki guruji. Takrat je bila tehnologija namenjena predvsem znanstvenikom, danes pa nam skoraj ne more biti bliže, saj jo nosimo v svojih žepih, torbicah in kovčkih. Uporabniki sodobnih tehnologij smo vedno večkrat prisiljeni, da skrbimo za varnost svojih spletnih profilov. Ob kreiranju gesel je vse več spletnih portalov, kjer moramo obvezno vpisati močno geslo vsaj ena velika in ena mala črka, vsaj ena številka, vsaj en poseben znak... Kljub temu pa marsikdo pozabi, da tudi na svojem pametnem telefonu nosi zelo občutljive podatke. Sodobni mobilni telefoni so veliko več kot pa samo telefoni. So multimedijske naprave, s katerimi lahko uporabniki ustvarjamo skoraj vrhunske fotografije in video posnetke. Zasebnost teh vsebin marsikdo jemlje za samoumevno, čeprav temu ni tako. Hitro se lahko zgodi, da naša pametna naprava pride v roke nepridipravu ali pa zgolj prijatelju, ki rad brska po tujih stvareh. Takšne situacije so lahko neprijetne, saj marsikdo ne upošteva dejstva, da določene vsebine na mobilnikih niso dovolj zavarovane. Razvoj mobilnih aplikacij je trenutno v polnem razmahu in strokovnjaki predvidevajo, da se bo vedno več spletnega prometa selilo na mobilne telefone. Razlog, da se podjetja odločajo za mobilne platforme, je preprost. Izkušnja, ki jo uporabniki doživijo med uporabo storitev, je danes najpomembnejša, prav mobilne platforme pa že omogočajo ogromno funkcionalnosti in možnosti interakcije. Z razvojem mobilnih tehnologij bo načinov interakcije še več, kar za razvijalce pomeni skoraj neskončen potencial za ustvarjanje aplikacij, ki lajšajo življenje ali kako drugače prinašajo zadovoljstvo v uporabnikov vsakdan. Iz tega razloga smo si za cilj diplomskega dela izbrali implementacijo aplikacije za mobilno platformo ios, ki bo uporabniku omogočala varovanje fotografij in video posnetkov na mobilni napravi. Aplikacija bo fotografije in video posnetke iz sistemske galerije ali kamere v napravi ios šifrirala ter jih uvozila v lastno galerijo, ki bo na ogled možna samo s prednastavljenim geslom. S tem bomo poskrbeli za dodatno zaščito občutljivih multimedijskih vsebin, ki jih želi uporabnik zaščititi. 1

Na tržišču so vsaj tri velike mobilne platforme (ios, Android, Symbian), vendar bomo v tem diplomskem delu razvijali za mobilno platformo ios, ki ima trenutno drugi največji delež med napravami, kar je predstavljeno v podpoglavju 2.2. Čeprav imamo na mobilnikih še druge osebne informacije (sporočila SMS, e-pošta, zapiski ), se bomo omejili na varovanje multimedijskih vsebin. Na tržnicah mobilnih aplikacij že obstajajo rešitve, ki ponujajo šifriranje podatkov, vendar smo po testu le-teh ugotovili, da je v večini primerov uporabniška izkušnja slaba (nejasne funkcije, nedodelan design, preveč možnosti nastavitev...) in verjamemo, da jo je moč izboljšati. Začetna poglavja na kratko predstavijo mobilne tehnologije in njihov razvoj skozi čas. Podrobneje je opisana izbrana platforma ios, zatem uporabljena metoda šifriranja, ki ji sledi glavni del dokumentacije, v katerem je predstavljen razvoj aplikacije Securit. Opisane so najpogostejše metode in tehnologije, ki se uporabljajo pri razvoju aplikacij ios ter orodje, s katerim lahko analiziramo delovanje aplikacij. 2

2. MOBILNE TEHNOLOGIJE Mobilni telefoni so že nekaj časa z nami, vendar vedno večji delež mobilnikov predstavljajo t.i. pametni telefoni, ki so še korak višje od klasičnih, starodobnih mobilnikov s skopim naborom funkcionalnosti. Pametni telefon je po definiciji naprava, ki temelji na mobilni platformi z možnostjo opravljanja naprednejših funkcij. V začetku je to pomenilo, da je bil pametni mobilnik nekakšen hibrid med takrat aktualnimi dlančniki (ang. personal digital asistant), klasičnimi mobilnimi telefoni in pa žepnimi kamerami. Danes so najnovejši pametni mobilniki precej dober nadomestek osebnega računalnika, saj lahko z njihovo pomočjo brskamo po spletu, snemamo visoko-ločljivostne video posnetke, merimo srčni utrip, rezerviramo letalske karte in z lahkoto opravljamo še nešteto drugih opravil. Naprave, ki navidezno mejo med mobilnikom in osebnim računalnikom še hitreje brišejo, pa so t.i. tablice (ang. tablet), ki se ponašajo z večjimi zasloni, kar še dodatno olajša marsikatero opravilo. 2.1. Evolucija mobilnih tehnologij Začetki pametnih mobilnikov segajo daleč v digitalno preteklost. Prvi poskusi pametnih mobilnikov oz. takrat PDA-jev (Personal Digital Assistant) so se pojavili leta 1992, ko je IBM predstavil model Simon, čeprav takrat še ni nosil naziva pametni telefon. S Simonom so kupci lahko poleg klicanja pošiljali še faks in e-pošto, vodili evidenco kontaktov in sestankov, uporabljali kalkulator, uro in celo igrali igre. Imel je tudi zaslon na dotik, kar je pomenilo odsotnost fizične numerične tipkovnice. V devetdesetih letih velika večina mobilnih telefonov ni nudila dodatnih funkcionalnosti in so bili uporabniki, takrat predvsem poslovneži, prisiljeni poleg mobilnega telefona s sabo nositi tudi dlančnik, ki je imel enega od operacijskih sistemov Palm OS, BlackBerry OS ali WindowsCE/Pocket PC. Nokiin model N9000, ki je luč sveta ugledal leta 1996 in s tem postal prvi njihov pametni mobilnik, je dobesedno združil mobilni telefon (njihov najbolje prodajani takrat) in drag PDA podjetja Hewlett-Packard. Na zunanji strani naprave je bil prej omenjeni Nokiin telefon, ki je omogočal osnovne funkcionalnosti, na notranji strani pa je bilo moč upravljati s PDA-jem. Napravi sta bili povezani s tečaji, ki so omogočali uporabniku, da je napravo odprl kot nekakšen mini prenosnik, ki je v notranji strani skrival tipkovnico QWERTY in zaslon visoke ločljivosti (640 x 200 točk). Operacijski sistem na napravi je bil GEOS V3.0, ki je tekel na DOS-u; nudil je e-poštno komunikacijo, ki je bila takrat zelo dobrodošla funkcionalnost. 3

Leta 2007 je na trg prišel Applov prvenec iphone, ki je kljub visoki ceni (499 $) hitro prirasel k srcu milijonom uporabnikom. Za interakcijo je skrbel zaslon diagonale 9 cm in ločljivosti 320 x 480 točk ter samo 5 fizičnih gumbov, od katerih samo en gumb (Home button) upravlja z uporabniškim vmesnikom. 2.2. Mobilni operacijski sistemi Na trgu imamo potrošniki in razvijalci na voljo veliko različnih modelov mobilnih naprav, z njimi pa tudi različne operacijske sisteme. Medtem, ko se potrošniki pri nakupu odločajo predvsem na podlagi funkcionalnosti operacijskega sistema ter tehničnih specifikacij naprave, je razvijalcem v prvi vrsti najbolj smotrno izbrati platformo, kjer je potencialnih kupcev izdelkov največ, ob tem pa je potrebno upoštevati tudi težavnost razvoja. V diplomskem delu smo za razvoj izbrali mobilno platformo ios. Po izkušnjah s platformami Android, Windows Phone 7 in ios ugotavljamo, da z razvojem na izbrani platformi lahko podpremo vse naprave ios z manj truda, kot pri razvoju na platformi Android, kjer je raznolikih naprav več. Platforma Windows Phone 7 trenutno ni dovolj razširjena, da bi bil razvoj smiseln, kar v naslednjem podpoglavju prikazuje tabela 2.1. Na prihodnjih straneh so opisane mobilne platforme, ki so trgu vladale včasih in danes. Symbian Prva naprava, ki se je tržila kot pametni mobilnik je bil Ericssonov R380, katerega je poganjal Symbian OS. Združeval je funkcionalnosti klasičnih mobilnikov in PDA-jev. Na trg je prišel leta 2000, dve leti kasneje pa mu je sledil model P800. Tudi Nokia je svojim napravam namenila Symbian OS, katerega je prvi imel model 9210 communicator. Slednji je imel prvi barvni zaslon v tej liniji. Communicator serije so bile znane predvsem po njihovi nedosegljivosti, saj so bile v povprečju od 20 do 40 % dražji od naslednjega najdražjega mobilnika. Leta 2007 je Nokia predstavila N95, ki se je ponašal z večpredstavnostnimi funkcionalnostmi, kot so GPS, fotoaparat s 5 milijoni točk in bliskavico, 3G in Wi-Fi povezljivost ter izhod za TV. Postavil je temelje za vse pametne mobilnike, ki so mu sledili. N8, prav tako iz Nokiine hiše, je leta 2010 s svojim sistemom satelitske navigacije veljal za najboljšega med mobilniki. Prav tako je bila njegova kamera z možnostjo snemanja v visoki ločljivosti 720p med najboljšimi. Podatki podjetja Gartner kažejo, da je Symbian OS od leta 1996 kraljeval na trgu, dokler ga ni leta 2011 prehitel Googlov Android OS[17]. 4

Android Android je odprtokodna platforma, ki jo je v prvi vrsti podprl Google, hkrati pa tudi proizvajalci strojne in programske opreme, kot so HTC, ARM, Motorola, Samsung in drugi, ki sestavljajo Open Handset Alliance. Prvi mobilnik, ki je debitiral z Androidom, je bil HTC Dream, ki so ga v ZDA oglaševali kot G1. Prednameščene je imel Googlove Maps, Calendar, Gmail in HTML spletni brskalnik. Google je hkrati predstavil tržnico Google Market (zdajšnji Google Play), iz katere lahko uporabniki na svoje mobilnike prenašajo brezplačne in plačljive aplikacije. V začetku leta 2010 je Google predstavil Nexus One, ki je veljal za razvijalski mobilnik in je služil predvsem razvoju aplikacij in širjenju Android Marketa. Windows Mobile/Windows Phone Windows Mobile je prednik Windows Phone sistema, ki si v praksi ne deli popolnoma nobenega dela svojega drobovja z novejšim Windows Phone. Zadnja verzija bo za vedno ostala 6.5.5, kar pa pomeni, da uporabniki starejših mobilnikov nikoli ne bodo morali posodobiti programske opreme na Windows Phone (verzija 7). Windows Phone je prinesel kar nekaj novosti, med katerimi izstopa nov oblikovalski jezik, ki ga je Microsoft poimenoval Metro. Omejitev, ki jo WP7 prinaša, je predvsem tesna povezanost s strojno opremo, kar posledično določa minimalne zahteve, ki jih morajo proizvajalci mobilnikov upoštevati. BlackBerry OS Podjetje RIM je leta 1999 vstopilo na trg mobilnikov z modelom 850, ki je bil praktično dvosmerni pozivnik. Leta 2003 je podjetje predstavilo bolj znan pametni mobilnik BlackBerry, ki je že imel naprednejše funkcionalnosti, med njimi e-poštni odjemalec, faksiranje po internetu, spletni brskalnik in ostale brezžične storitve. Glavna prednost, ki je odgovorna za uspeh BlackBerryja, je tesna integracija e-pošte. Skoraj vsi modeli, z izjemo Storm in novejšega Torch, so imeli QWERTY tipkovnico, prilagojeno za uporabo s palci. Sprva je bila navigacija implementirana s pomočjo fizičnega koleščka, ki je bil nameščen na desni strani naprav, kasneje ga je zamenjala navigacijska kroglica, najnovejši modeli pa imajo namesto kroglice optični sledilnik (ang. trackpad). Bada Operacijski sistem Bada so razvili inženirji pri Samsungu, ime pa izvira iz besede ocean ali morje (v korejščini). Najavili so ga leta 2010 z modelom Wave S8500. Kmalu zatem 5

so ga podprla večja podjetja, med katerimi so bili Twitter, Electronic Arts, Capcom, Gameloft in Blockbuster. Kasneje v letu 2010 je Samsung izdal še beta verzijo paketa razvijalskih orodij, da bi pridobil nekaj razvijalcev. Dodatno so povečali zanimanje še s tekmovanjem Bada Developer Challenge, ki je vseboval nagradni sklad v višini 2,7 milijona ameriških dolarjev. Poleti 2010 so objavili prvo uradno verzijo (1.0) SDK-ja. Leto kasneje so objavili verzijo 2.0, ki je trenutno aktualna različica. ios Apple je leta 2007 predstavil iphone, ki je postavil nove mejnike s svojim velikim zaslonom na dotik, katerega je bilo možno upravljati kar s prsti in ne več s palčkami (ang. stylusi) ali fizičnimi tipkovnicami, in je omogočal več-prstno upravljanje (ang. multi-touch), prav tako pa je s svojim spletnim brskalnikom Safari prekosil vso konkurenco. Kljub temu so strojne specifikacije iphonea za konkurenco zaostajale, prav tako operacijski sistem ni nudil nekaterih osnovnih funkcij, kot so kopiranje in lepljenje besedila, večopravilnost, premeščanje aplikacij na zaslonu in pošiljanje sporočil MMS. Omogočal ni niti nameščanja dodatnih aplikacij, kar je Apple še istega leta popravil in na konferenci WWDC (World Wide Developer Conference) najavil, da bo iphone podpiral zunanje web 2.0 aplikacije v spletnem brksalniku. Leto kasneje je Apple izdal iphone 3G, ki je poleg ostalih novosti prinesel App Store, kar je pomenilo, da so uporabniki lahko nameščali avtohtone aplikacije, ki jih je v začetku bilo le 500, danes pa jih naštejemo že 700.000. Leta 2010 je Apple predstavil ios 4 in iphone 4 z osupljivim zaslonom (640 x 960 točk), leta 2011 pa iphone 4S in ios 5. Slednji je podrl rekord v prodaji, saj so kupci v 24 urah prednaročili 1 milijon naprav in s tem prekosili prodajo modela 4. generacije za kar 400.000. Leta 2012 je iphone 5. generacije ponovno podrl rekorde in dosegel 2 milijona prednaročil v prvih 24-ih urah. Tržni delež operacijskih sistemov Podatki v spodnji tabeli so povzeti s spletne strani www.washingtonpost.com in prikazujejo tržni delež operacijskih sistemov septembra 2012. V primerjavi z lanskimi tržnimi deleži pridemo do ugotovitve, da Android močno raste, Apple je kljub skoraj 2- odstotnem padcu ostal na drugem mestu, Microsoft je svoj delež povečal, ostalim pa je delež na račun Androida padel in trenutno ne predstavljajo konkurence vodilnima na trgu. 6

Tabela 2.1: Tržni delež operacijskih sistemov 6. septembra 2012 [11] Operacijski sistem (proizvajalec) Število prodanih naprav (v milijonih) Tržni delež (%) Tržni delež lani (%) Android (Google Inc.) 104,8 68,1 46,9 ios (Apple Inc. iphone) BlackBerry (Research in Motion Ltd.) 26,0 16,9 18,8 7,4 4,8 11,5 Symbian (Nokia Corp.) 6,8 4,4 16,9 Windows (Microsoft Corp.) 5,4 3,5 2,3 Linux 3,5 2,3 3,0 Drugi 0,1 0,1 0,5 Varnost in zasebnost V preteklosti so bile mobilne naprave tarče napadov s sporočili SMS in MMS ter napadov preko protokola Bluetooth. Uporabnik je lahko ob odprtju sporočila SMS, ki je vseboval kitajsko pismenko, postal žrtev napada DDoS 1. V sporočilih MMS so lahko napadalci kot priponko poslali virus, ki je ob odprtju posredoval isti MMS vsem osebam v imeniku okužene naprave. Nekateri starejši Nokiini modeli pa celo niso preverjali dolžine naslova v poslanih e-poštnih sporočilih, kar je lahko privedlo do neodzivanja storitve Nokia Mail, v kolikor je bil naslov daljši od 32 znakov. Zlorabe Bluetootha so se pojavile kasneje, napadalci pa so ciljali predvsem na protokol paritve naprav, ki sprva ni imel dobro implementirane varnosti. Med bolj znane vrste napadov spada t.i. Bluejacking, ki napravi ne povzroči škode ali kakorkoli drugače vpliva na podatke, ampak zgolj prikaže fotografijo ali besedilo, ki jo napadalec pošlje. Leta 2008 je Bluetooth v2.1 že znal precej bolje skrbeti za varnost, kar je pomenilo tudi pomanjkanje zanimanja napadalcev za to vrsto napadov. Z vedno večjim številom mobilnih naprav na trgu pa raste tudi zanimanje hekerjev za napade na le-te. Vrste napadov so se spremenile in so bolj podobne napadom na osebne 1 Distributed-denial-of-service napad poskuša napravo onemogočiti s pošiljanjem velike količine različnih zahtevkov, ki jih naprava ne more pravočasno in učinkovito obdelati. 7

računalnike, zato igrajo tržnice z aplikacijami (Google Play, App Store, Windows Marketplace ) pomembno vlogo pri zaščiti uporabnikov. Avgusta 2010 je podjetje Kaspersky Lab poročalo o prvem trojanskem konju Trojan-SMS.AndroidOS.FakePlayer.a, ki je okužil veliko naprav z operacijskim sistemom Android. Google nosi del krivde za incident, saj aplikacij pred objavo na tržnici Play (takrat Android Market) ne pregleduje, ampak se s tem ukvarja kasneje, v kolikor se ugotovi, da aplikacija vsebuje zlonamerno kodo. Na drugi strani pa Applovi uslužbenci vsako aplikacijo dobro testirajo in analizirajo delovanje ter s tem zagotovijo varnost in določen nivo kvalitete, preden sploh odobrijo objavo v App Storu. Testirajo tudi vsako posodobitev aplikacije, saj bi lahko razvijalec oz. heker v aplikacijo naknadno dodal škodljivo funkcionalnost. Testiranje uporabnikom aplikacij zagotavlja brezskrbnost uporabe, za razvijalce pa mnogokrat lahko pomeni neželeno zakasnitev objave aplikacije, kajti postopek pregleda v povprečju traja 10 delovnih dni. Pohvalo je Apple prejel junija 2011, ko je podjetje Symantec v 23-stranskem poročilu z naslovom A Window Into Mobile Device Security razglasilo naprave ios 2 za popolnoma varne pred zlonamernimi napadi. Uporabniki pa moramo kljub vsej zaščiti naprav ravnati odgovorno in se poslužiti vseh varnostnih pripomočkov ter si s tem čim bolj zavarovati podatke. Z aplikacijo, ki smo jo razvili, uporabnikom nudimo in predvsem olajšamo postopek zaščite osebnih multimedijskih vsebin. 2 Velja za naprave ios, ki imajo nameščen uradni Applov operacijski sistem in ne prirejenih različic. 8

3. PLATFORMA ios ios oz. na začetku iphone OS je mobilni operacijski sistem, ki so ga razvili pri Applu. Prva verzija je poganjala iphone prve generacije in ipod touch, sčasoma pa se je razširila na ostale Apple naprave. Trenutno poganja poleg omenjenih še ipad in Apple TV. Posebnost ios pred konkurenti je, da Apple ne dovoljuje nameščanja operacijskega sistema na ostale naprave, ki niso znamke Apple. Podjetje uporablja za distribucijo aplikacij tržnico App Store, ki je konec leta 2012 ponujala že 700.000 aplikacij in skupno beleži več kot 30 milijard prenosov. Januarja 2012 je podjetje izdalo podatek, da so registrirani razvijalci s prodajo aplikacij zaslužili že 4 milijarde evrov. Tržni delež operacijskega sistema znaša za obdobje Q2 2012 16,9 % in zaostaja samo za Googlovim Androidom. V svetu spletnih komunikacij krepko vodi, saj je odgovoren za kar 65 % prometa, katerega izvor je 410 milijonov ios naprav. V času pisanja je aktualna verzija ios 5.1.1, katere glavna verzija 5.0 je prinesla več kot 200 novih funkcionalnosti. Med odmevnejšimi so center za obveščanje (ang. Notification Center), kiosk (ang. Newsstand), ki na enem mestu ponuja pregled nad digitalnimi publikacijami in integrirana podpora za Twitter. ios je osnovan na OS X, kar pomeni, da si z njim deli temelje Darwin in ga lahko obravnavamo kot operacijski sistem Unix. Vsebuje 4 nivoje abstrakcije in sicer Core OS, Core Services, Media nivo in pa Cocoa Touch, ki so prikazani na sliki 3.1. Coca Touch Media Core Services Core OS Slika 3.1: Nivoji operacijskega sistema ios [1] Uporabniški vmesnik Apple si je že od samih začetkov prizadeval za enostavnost uporabe njihovih izdelkov in na ios napravah smo priča najboljši izvedbi te filozofije. Uporabniški vmesnik je enostaven in je osnovan na temelju neposredne manipulacije s prsti. Omogoča 9

manipulacijo z več-prstnim dotikom (ang. multi-touch gesture), funkcije pa nadzorujemo z gumbi, stikali in drsniki. Uporabnik lahko podrsa, se dotakne ali uščipne zaslon, vsaka gesta pa ima znotraj operacijskega sistema svojo funkcijo. Fizični senzorji še dodatno izboljšajo uporabniško izkušnjo, saj lahko razvijalci dostopajo do merilnika pospeškov (ang. accelerometer) in z njegovo pomočjo dodajo funkcionalnosti svojim aplikacijam. V kolikor želimo uporabniški vmesnik prilagoditi za vse naprave ios, moramo praviloma načrtovati 3 različice modeli iphone in ipod touch pred letom 2012, iphone 5 in ipad. V prihodnjem poglavju je predstavljena evolucija naprav ios, na katerih je možen razvoj aplikacij. 3.1. Naprave ios Trenutna družina naprav ios šteje 3 različne tipe naprav in sicer iphone, ipad in ipod touch. Prvi iphone iz leta 2007 je že skoraj pozabljen, naslednji model iphone 3G pa je leto kasneje dosegel kar milijon uporabnikov v roku enega meseca od datuma izida. Še bolj popularen je postal iphone tretje generacije 3GS, ki je dodatno izboljšal prodajo, saj je bilo v treh dneh od izida prodanih že milijon primerkov. Četrti na vrsti je bil model iphone 4, ki se med drugim ponaša s popolnoma novim designom, ohišjem iz žlahtnih materialov (aluminij in steklo) ter 9-centimetrskim zaslonom z ločljivostjo 960 x 640 točk, kar pomeni, da je na kvadratnem palcu 3 kar 326 grafičnih točk. Zaslon nosi marketinško ime Retina display, ker je gostota točk tako velika, da človeško oko na povprečni razdalji gledanja ne zazna posameznih točk. iphone 4 je s seboj prinesel tudi ios 4, katerega glavna novost je bila večopravilnost (ang. multitasking). iphone 4S, ki je do pred kratkim bil najnovejši član družine, ima boljši fotoaparat z osmimi milijoni točk in inteligentnega osebnega asistenta Siri. Slednji je bil sprva na voljo kot aplikacija na tržnici App Store, kasneje pa je Apple kupil podjetje Siri Inc. in aplikacijo integriral v operacijski sistem. Pred kratkim pa se je mobilnikom pridružil še iphone 5. generacije, ki ima višji zaslon, je tanjši in ga poganja še močnejši procesor A6. Prednameščen ima tudi ios 6, ki zopet prinaša več kot 200 novih funkcionalnosti. Septembra 2007 je za prvim iphonom luč sveta ugledal prenosni medijski predvajalnik ipod touch. Strojno in programsko opremo je imel skoraj enako kot iphone, z izjemo 3 Angleška in ameriška mera, ki znaša 2,54 centimetrov. 10

fotoaparata, možnosti povezave na mobilna omrežja, zvočnikov, mikrofona in kompasa. Na voljo so bili modeli s kapaciteto 8, 16 in 32 gigabajtov. Naslednja revizija je podpirala funkcionalnost Nike+ 4, dobila pa je tudi gumba za glasnost in zvočnike. Tretja generacija je ponujala predvsem več pomnilnika, hitrejši procesor in boljšo grafično kartico. Novost je bil tudi sistem VoiceOver, ki je omogočal interakcijo z napravo s pomočjo glasovnih ukazov. Za razliko od predhodnikov, sta bili tokrat na prodajnih policah samo dve različici 16 in 32 GB. Trenutno aktualna različica ima aplikacijo FaceTime, ki s pomočjo kamere na sprednji strani naprave omogoča video pogovore, zaslon Retina in kamero na zadnji strani, ki je sposobna zajemati slike v ločljivosti 960 x 720 točk ter video v ločljivosti 720p 5. Tablični računalnik ipad je aprila 2010 povzročil novo evforijo med pristaši Applovih izdelkov in s svojim 25-centimetrskim zaslonom ponujal več prostora za lažje branje publikacij, urejanje dokumentov in ostala opravila, ki zahtevajo večji zaslon. ipad je imel ob izidu nameščen operacijski sistem ios 3.2, ki je bil prilagojen samo za ipada, na voljo pa je bil tudi ios 3.2 SDK. Novembra 2010 je na naprave prišla posodobitev 4.2.1, ki pa je bila univerzalna za vse naprave. SDK je zdaj ponujal nove grafične elemente in krmilnike, ki bolje izkoristijo večjo površino na zaslonu ipada. Leto kasneje je ipad dobil zamenjavo, ki je imela podvojen pomnilnik (zdaj 512 MB), novejši procesor in dve kameri. Marca 2012 pa je novi ipad zadovoljil želje uporabnikov in postregel z zaslonom Retina, ki prikazuje sliko v ločljivosti 2048 x 1536 točk. Da lahko naprava prikazuje sliko v visoki ločljivosti, ima tudi zmogljivejši procesor, 1024 MB pomnilnika in boljšo grafično kartico. 3.2. Varnost in zaščita Platforma ios je bila zasnovana z zaščito v mislih Applovih inženirjev. Dejstvo, da gre za mobilno platformo, pomeni, da imajo uporabniki naprave s seboj, kamorkoli gredo. To pomeni, da so na napravah shranjeni občutljivi podatki in lahko zloraba takšnih podatkov vodi do mnogo neprijetnosti, zato mora biti za varnost dobro poskrbljeno. Naprave ios nudijo striktno zaščitno v operacijskem sistemu samem, kar pomeni, da uporabniku ni potrebno dodatno konfigurirati varnostnih opcij za popolno zaščito. 4 Sistem, ki s senzorjem v športnih copatih in aplikacijo Nike+ Running omogoča spremljanje fizične aktivnosti uporabnika. 5 Format video signala, ki ima 720 horizontalnih linij in razmerje slike 16:9. 11

Mobilne naprave, ki tečejo na platformi ios, so zasnovane s štirimi nivoji zaščite, ki so podrobneje opisani v spodnjih odstavkih. Najnižji nivo ščiti pred škodljivo programsko opremo, v naslednjem je poskrbljeno za šifriranje in varovanje podatkov, sledi omrežna zaščita, najvišji nivo pa omejuje dostop do osebnih podatkov in preprečuje nedovoljeno uporabo. System Architecture Močna integracija strojne in programske opreme omogoča preverjanje aktivnosti v vseh nivojih naprave od zagona naprave do namestitve in poganjanja aplikacij. Sistemska funkcija, ki igra veliko vlogo pri zagotavljanju varnosti, se imenuje App Code Signing in določa, kateri uporabniški procesi in aplikacije se lahko poganjajo. Aplikacije morajo biti podpisane z Applovim certifikatom, kar zagotavlja, da je njihov izvor znan in preverjen. V kolikor aplikacija ni podpisana, sistem njenega izvajanja ne dovoli. Encryption and Data Protection Poleg nadzora nad zagonom aplikacij nudi ios še dodatno zaščito datotek. Vse naprave ios imajo možnost vklopa funkcije, ki pred uporabo naprave od uporabnika zahteva vnos 4-mestne številke ali poljubnega alfanumeričnega gesla. V kolikor ima uporabnik nastavljeno omenjeno varovanje, se vse datoteke lahko šifrirajo s strojno implementacijo standarda AES. Vsaka aplikacija, ki datoteko ustvari, ji določi razred načina šifriranja, ki definira v katerih primerih se datoteka zašifrira in dešifrira. Network Security Šifriranje datotek dopolnjuje nivo omrežne varnosti, ki podpira SSL (Secure Sockets Layer) in TLS (Transport Layer Security) ter omogoča povezavo naprav ios v omrežja VPN 6. Podprti so tudi standardni Wi-Fi-protokoli EAP-TLS, EAP-TTLS, EAP-FAST, EAP- SIM, PEAPv0, PEAPv1 in LEAP. Bluetooth v ios je bil zasnovan z namenom zagotavljanja funkcionalnosti brez povečanega dostopa do zasebnih podatkov, zato v uradnih verzijah ios datotek preko protokola Bluetooth ni možno prenašati, so pa naprave skladne z varnostnimi načini Encryption Mode 3, Security Mode 4 in Service Level 1. 6 Virtual Private Network je tehnologija, ki omogoča povezavo oddaljenih računalnikov preko varnih tunelov v skupno omrežje, ki je izolirano od ostalih naprav v internetu. 12

Device Access Na napravah ios lahko nastavimo varnostno politiko, ki administratorjem omogoča določitev varnostnih zahtev, ki jih morajo uporabniki naprav upoštevati. Zahteve lahko vključujejo pravila za nastavljeno geslo za odklep naprave, pravila za uporabo naprave, ki lahko omejijo dostop do določenih funkcionalnosti naprav in druga pravila, s katerimi zagotovimo varno uporabo naprav. ios ponuja tudi izbris vseh podatkov na napravi na daljavo s pomočjo Applovega MDM 7 ali storitve icloud. 3.3. SDK (Software Development Kit) SDK je paket orodij, ki omogočajo razvoj avtohtonih aplikacij ios, razvijalcem pa je na voljo od marca 2008. Za dostop do programske opreme in dokumentacije potrebujemo uporabniški račun Apple ID, s katerim se registriramo na razvijalskem portalu ios Dev Center. Z brezplačnim uporabniškim računom imamo omogočen razvoj programske opreme in testiranje v simulatorju iphone ki je priložen v SDK-ju. Razvijalci, ki bi radi svoje izdelke testirali na dejanskih napravah in/ali jih distribuirali v App Storu, morajo poseči po plačljivem računu, ki trenutno znaša 99 $ na leto. K temu računu pripada tudi klic na Applovo podporo, kjer njihovi inženirji pomagajo rešiti morebitno težavo, na katero lahko naleti lastnik računa. V kolikor ima razvijalec objavljene aplikacije, mora vsako leto poravnati strošek članarine, saj v nasprotnem primeru vse njegove aplikacije postanejo neaktivne in niso več vidne v App Storu. Naslednja podpoglavja opisujejo nabor funkcionalnosti, ki jih SDK nudi razvijalcem. Cocoa Touch Cocoa je Applovo objektno orientirano ogrodje za operacijski sistem OS X, za ios pa je na voljo Cocoa Touch. Glavni knjižnici sta Foundation Kit oz. Foundation, ki vsebuje osnovne razrede s predpono NS (izvor: NeXTStep 8 ) in metode za delo z objekti ter UIKit, ki velja za osnovo grafičnega uporabniškega vmesnika. Cocoa podpira tudi prevajanje standardne kode C, kar omogoča mešanje programskih jezikov C, C++ in Objective-C. 7 Programska oprema, s katero lahko upravljamo z mobilnimi napravami, kar vključuje namestitev aplikacij, pregled delovanja, zaklep naprav in druge funkcionalnosti, odvisno od implementacije. 8 Objektno orientiran operacijski sistem, razvit v podjetju NeXT, ki ga je ustanovil Steve Jobs, kmalu zatem, ko je bil odpuščen iz podjetja Apple. 13

Razlika med Cocoa in Cocoa Touch je poleg nivoja za interakcijo z dotikom še upravljanje s pomnilnikom (ang. memory management). V prvem za ravnanje s pomnilnikom skrbi t.i. pobiralec smeti (ang. garbage collector), Cocoa Touch pa z verzijo Xcode 4.0 omogoča ARC (Automatic Reference Counting). Opcija ARC, ki jo razvijalec lahko vključi v projektu, pomeni, da mu praviloma ni potrebno skrbeti za ravnanje z objekti (kreiranje, uničevanje). Naprednejši razvijalci so skeptični glede te funkcije in še vedno prisegajo na ročno upravljanje s pomnilnikom, kar pomeni večji nadzor nad porabo in učinkovitostjo aplikacije. ARC je podrobneje opisan v poglavju 5.5. Omrežne storitve Priljubljena oblika monetizacije aplikacij so nakupi vsebin znotraj aplikacij (ang. in-app purchase). Za to skrbi Store Kit, ki omogoča razvijalcem prodajo navideznih dobrih za dejansko plačilo. Razvijalci imamo na voljo tudi storitev obveščanja Apple Push Notification service, ki nam omogoča pošiljanje obvestil uporabnikom. Obvestila so omejena z 256 bajti, lahko pa so samo v tekstovni obliki formata JSON 9. Z ogrodjem GameKit lahko z lahkoto dodajamo možnost večigralnosti (ang. multiplayer) svojim igram, kar omogoča igranje iger preko Bluetootha. Funkcionalnost, ki sicer ni tako zelo razširjena med uspešnejšimi aplikacijami, je iad. Čeprav nudi implementacijo oglasov z bogatimi multimedijskimi vsebinami znotraj aplikacije, se razvijalci raje odločajo za druge poslovne modele. Za uporabniško izkušnjo sta zanimiva ogrodja Map Kit in Core Location. Slednji z uporabo podatkov omrežne povezave ali GPS-a določa fizično lokacijo naprave, Map Kit pa omogoča razvijalcem, da v aplikacijo z lahkoto dodajo vse funkcionalnosti zemljevida. Med te spada uporaba plasti (ang. overlay), ki ponazarjajo določejo regijo na zemljevidu, posebne oznake (ang. annotation), prikaz trenutne lokacije in druge. Komunikacija s spletom poteka preko BSD-kanalov (ang. socket), protokol Bonjour 10 pa pomaga odkrivati ostale naprave v omrežju. Ogrodje Accelerate nudi zahtevnejšim razvijalcem matematične funkcije, specializirane za iphone, ipad in ipod touch, ki se lahko uporabljajo za razvoj iger ali drugih kompleksnejših 9 JavaScript Object Notation je format zapisa podatkov, podoben XML, vendar kompaktnejši in primernejši za prenos preko omrežij. 10 Applova implementacija omrežnih tehnik z imenom Zero configuration networking, ki ustvari omrežje brez potrebe po dodatnih nastavitvah DHCP (Dynamic Host Configuration Protocol) in DNS (Domain Name System). 14

aplikacij. Razvijalci imamo na voljo knjižnice za procesiranje signalov, osnovne vektorske in matrične operacije ter sistem za linerane enačbe. Media Za enostavnejšo uporabo za delo z grafiko skrbi knjižnica Quartz Core, za animacije Core Animation, za zahtevnejše razvijalce pa je na voljo tudi industrijski standard OpenGL ES, ki omogoča razvoj naprednih 3D iger. Predvajanje zvoka v iosu je domena ogrodja Media Player, za manipulacijo pa sta na voljo Core Audio in OpenAL. Apple razvijalcem dovoljuje tudi dostop do upravljanja s kamero (oziroma kamerama na novejših napravah) in knjižnice posnetih fotografij, dostopna pa je tudi zbirka vseh skladb v knjižnici. Core Services Apple zaradi priročnosti razvoja ponuja iphone Simulator, ki simulira dejansko napravo in s tem omogoča razvoj aplikacije brez testne naprave. Čeprav objava aplikacije brez testiranja na dejanski napravi ni priporočljiva, vseeno močno olajša delo, saj razvijalcem ni potrebno ob sebi vedno imeti tudi mobilne naprave. Vsaka aplikacija lahko podatke deli s katerokoli drugo aplikacijo s pomočjo modela URL, ki ga določa. Podprto je tudi pošiljanje e-pošte ali sporočil SMS. Za urejanje teksta imamo na voljo sistemsko odložišče (ang. clipboard), ki je na voljo v vseh aplikacijah. Funkciji, ki sta precej zanimivi, sta 3-osni giroskop in merilnik pospeškov (ang. accelerometer), s katerima lahko zaznavamo premikanje in položaj naprave. Knjižnica, ki skrbi za sprejemanje teh dogodkov, se imenuje Core Motion, brez katere si razvijalci iger razvoja skoraj ne morejo predstavljati. Tukaj velja omeniti še dostop do kompasa, ki ga lahko odlično povežemo s storitvami za zemljevid. 3.4. Xcode Priporočeno razvojno okolje, ki je najpogosteje uporabljeno za razvoj aplikacij ios (in tudi OS X), je Xcode. Prva verzija je bila samo nadgrajena različica Project Builderja, ki je bil razvit v podjetju NeXT in so ga uporabljali v operacijskem sistemu NeXTSTEP. V 11 letih razvoja so izdali še 3 velike nadgradnje in je tako trenutna stabilna verzija 4.4. 15

Storyboards Pred verzijo Xcode 4.2 smo za načrtovanje uporabniškega vmesnika uporabljali program Interface Builder. Z njegovo pomočjo smo lahko ustvarjali datoteke XIB, v katerih smo s standardnimi gradniki sestavljali izgled uporabniškega vmesnika. Tak način dela je pomenil preklapljanje iz ene aplikacije v drugo in veliko število XIB-datotek za eno aplikacijo. Apple je z verzijo Xcode 4.2 in ios 5 SDK predstavil koncept snemalnih knjig (ang. storyboards), ki delujejo na principu velikega platna, na katerem imamo več pogledov (ang. View) za posamezne krmilnike. To nam omogoča lažje načrtovanje in boljšo predstavo o strukturi pogledov v aplikaciji, kar nam demonstrira slika 3.2. Slika 3.2: Načrtovanje uporabniškega vmesnika v Storyboards [5] 3.5. Programski jezik Objective-C Programski jezik, ki se uporablja za razvoj aplikacij, nosi ime Objective-C in je, kot je razvidno iz imena, objektno orientiran (v nadaljevanju OO) ter razširja standardni jezik ANSI C. Dodatki k jeziku C temeljijo na jeziku Smalltalk, ki je bil eden izmed prvih OO programskih jezikov. Glavni elementi jezika Objective-C so razredi, s pomočjo katerih ustvarjamo primerke (objekte). Osnovni razredi so združeni v različna ogrodja (ang. frameworks), katerih skupek nosi ime Cocoa. V spodnjih podpoglavjih je na kratko predstavljena sintaksa in 2 razvijalski tehniki, ki smo ju uporabljali tekom razvoja. 16

Sintaksa Sintaksa Objective-C izhaja iz Smalltalka in temelji na njegovem sistemu pošiljanja sporočil objektom. V Objective-C ne govorimo o klicanju metod, ampak o pošiljanju sporočil, saj v kodi pošiljamo sporočila, katerih naslovniki (objekti) so določeni tekom izvajanja, za odziv pa so odgovorni sami. Posledica takšnega sistema je, da pošiljanje sporočila ne zagotavlja prejetega odgovora, saj lahko naslovljen objekt v primeru, da na sporočilo ne zna odgovoriti, sproži izjemo in konča izvajanje aplikacije. Ob pravilni implementaciji pa sistem sporočanja omogoča pošiljanje enakega sporočila večim objektom, ki niso bili definirani pred izvajanjem. Objective-C zahteva, da sta vmesnik (definicija) in implementacija v ločenih sklopih kode, katerih začetek označimo z @interface ali @implementation, konec pa z @end. Primer definicije, implementacije in uporabe preprostega razreda Objective-C razreda je prikazan v izseku kode 3.1. V kodi vidimo metodo description, ki jo vsebuje nadrazred NSObject in v privzeti implementaciji izpiše ime razreda ter naslov v pomnilniku. V razredu Razred to metodo prepišemo in določimo niz, ki ga želimo vrniti, ko bo objekt prejel sporočilo description. // Definicija #import <Foundation/Foundation.h> @interface Razred : NSObject @property (nonatomic, strong) NSString *niz; @property (nonatomic, strong) NSNumber *stevilo; @property (nonatomic) BOOL bit; @end // Implementacija #import "Razred.h" @implementation Razred @synthesize niz; @synthesize stevilo; @synthesize bit; - (NSString *)description { return [NSString stringwithformat:@"\nniz: %@\nstevilo: %@\nvrednost bita: %d", niz, stevilo, bit]; } @end Izsek kode 3.1: Definicija in implementacija razreda v Objective-C 17

Če želimo Razred uporabiti, kreiramo objekt, kot prikazuje spodnji izsek kode. Nato lahko dostopamo do njegovih lastnosti (@property) in ga tudi izpišemo v konzolo z ukazom NSLog. Vsakič, ko objekt tipa NSObject želimo izpisati oz. prikazati vrednost na zaslonu, se pošlje objektu sporočilo description, ki smo ga v našem Razredu predefinirali. Ukaz NSLog tako izpiše vrednosti lastnosti objekta tipa Razred. Razred *primerek = [[Razred alloc] init]; primerek.niz = @"Niz je lastnost objekta primerek, ki je tipa Razred."; primerek.stevilo = [NSNumber numberwithint:3]; primerek.bit = NO; NSLog(@"%@", primerek); niz: Niz je lastnost objekta primerek, ki je tipa Razred. stevilo: 3 vrednost bita: 0 Protokoli Izsek kode 3.2: Uporaba objekta tipa Razred V Objective-C imajo lahko razredi samo enojno dedovanje, imamo pa zato na voljo protokole, s katerimi lahko dosežemo funkcionalnosti večkratnega dedovanja. V protokolu so definirane samo metode, implementirajo pa jih razredi, ki imajo označeno sledenje določenim protokolom. S tem pristopom lahko močno zmanjšamo količino ponavljajoče kode in izboljšamo preglednost. S protokoli se srečuje vsak razvijalec aplikacij ios, saj se pojavljajo že pri implementaciji tabel. Sintaksa definicije protokola in uporabe v skladnem razredu je prikazana v spodnjem izseku. // Definicija @protocol RazredniProtokol <NSObject> - (void)razrednametoda; @end // Uporaba @interface Razred : NSObject <RazredniProtokol> Kategorije Izsek kode 3.3: Definicija in deklaracija protokola Med razvojem smo se poslužili tudi metode programiranja, ki se v Objective-C imenuje kategoriziranje. Kategorije razširjajo že obstoječe razrede, katerih implementacija je razvijalcem skrita, lahko pa tudi svoje razrede razdelimo v več datotek s kategorijami, ki nudijo skupek podobnih funkcionalnosti. V spodnjem izseku kode vidimo kategorijo 18

DodajFunkcionalnost, ki razširja funkcionalnost razreda Razred. Kategorija ima prav tako dve datoteki s končnicama.h in.m. Edina razlika med razredom in kategorijo je v implementaciji kategorije, ki za imenom razreda vsebuje še svoje ime v oklepajih. // Definicija #import "Razred.h" @interface Razred (RazsirjenaFunkcionalnost) - (NSString *)novafunkcionalnost; @end // Implementacija #import "Razred+RazsirjenaFunkcionalnost.h" @implementation Razred (RazsirjenaFunkcionalnost) - (NSString *)novafunkcionalnost { return [self.niz uppercasestring]; } @end Izsek kode 3.4: Definicija in implementacija kategorije 19

4. ŠIFRIRANJE PODATKOV V APLIKACIJI Aplikacija Securit mora uporabniku zagotavljati varovanje uvoženih multimedijskih datotek. To pomeni, da je varovan vstop v aplikacijo in uporabnikove datoteke na napravi. V primeru fizičnega dostopa do datotek je zato brez dešifriranja ogled njihove vsebine onemogočen. V uradni različici operacijskega sistema ios je sicer fizični dostop do datotek aplikacije onemogočen, saj je datotečni sistem skrit pred uporabnikom, je pa dostop mogoč, v kolikor ima naprava nameščeno prirejeno verzijo (ang. jailbreak). Trenutno aktualna programska oprema, ki to omogoča, se imenuje Absinthe, ki med drugim ponudi uporabniku dostop do praviloma zavarovanih in zaklenjenih funkcij operacijskega sistema. 4.1. Metoda šifriranja AES Aplikacija bo morala šifrirati in dešifrirati veliko količino podatkov, zato smo se na podlagi raziskovanja po spletu in mnenj razvijalcev odločili za metodo AES, ki se je za šifriranje poslužuje tudi ios. AES je standard za šifriranje digitalnih podatkov, ki ga je vzpostavila ameriška institucija NIST (National Institute of Standards and Technology) in razpisala natečaj za izbiro najboljšega algoritma. Zmagovalca sta bila belgijca Vincent Rijmen in Joan Deamne z algoritmom Rijndael. AES je zasnovan na osnovi omrežja zamenjavapermutacija (ang. substitution-permutation network) in so zato strojne in programske implementacije hitre in enostavne. Do maja 2009 so bili edini uspešni napadi vseh štirih algoritmov AES t.i. napadi s stranskim kanalom (ang. side-channel attack), kljub temu pa je ameriška vlada razglasila AES kot dovolj varnega tudi za varovanje zaupnih informacij. Iskanje ustrezne implementacije AES Apple nudi knjižnico CommonCrypto, ki vsebuje razred CCCryptor, s pomočjo katerega lahko z različnimi algoritmi šifriramo podatke. Na spletu je moč najti mnogo različnih ovijalcev (ang. wrapper) za uporabo knjižnice CommonCrypto, zato smo izbrali 3 najpogostejše in testirali njihovo zmogljivost pri obdelavi večje količine podatkov. Postopek, s katerim smo testirali rešitve, je bil šifriranje in dešifriranje slike tipa JPEG v velikosti 5 megabajtov. 20

Prva rešitev, ki smo jo testirali, je bila NSData+CommonCrypto razvijalca Jima Doveya 11, ki je imela težave z upravljanjem pomnilnika in nima implementiranega naključnega kreiranja inicializacijskega vektorja (ang. kratica IV). Naslednji, ki ga priporoča večina razvijalcev na spletu, je bil RNCryptor avtorja Roba Napierja 12. Rešitev ima med drugim tudi možnost šifriranja SSL, vendar nas je zelo razočarala zmogljivost, saj je algoritem za šifriranje 5 megabajtov podatkov v povprečju potreboval kar 5 sekund. Tudi pri šifriranju/dešifriranju vzorca (niz znakov) za odklep aplikacije se je pojavljal zamik, kar je nesprejemljivo in pri aplikaciji z ogromno količino podatkov ne pride v poštev. Zadnja rešitev, ki se je med testiranjem izkazala za hitro in zanesljivo, tudi kar se ravnanja s pomnilnikom tiče, je bila NSData+AES, katere avtor je Robert C. Nix 13. Prikaz uporabe je skupaj s celotnim postopkom razvoja opisan v 5. poglavju. 11 Povezava na GitHub: https://github.com/alanquatermain 12 Povezava na GitHub: https://github.com/rnapier/rncryptor 13 Povezava na spletno stran avtorja: http://nicerobot.org 21

5. RAZVOJ APLIKACIJE SECURIT Glavna funkcionalnost aplikacije Securit je šifriranje večpredstavnostnih vsebin, zato smo se osredotočili predvsem na preprost design in inovativen način interakcije po različnih sekcijah aplikacije. Razvili smo dve komponenti, ki sta objavljeni tudi na razvijalskem portalu GitHub pod uporabniškim imenom Stigec (http://github.com/stigec). Prva komponenta se imenuje JZMenu in nudi enostaven in nestandarden meni, druga pa je JZUnlockView, ki omogoča verifikacijo s pomočjo vzorcev. Obe komponenti sta opisani kasneje v poglavju. 5.1. Funkcionalnosti aplikacije Aplikacija ob prvem zagonu zahteva določitev vzorca za dostop do vsebine in izbiro varnostnega vprašanja ter odgovora. Ob uspešnem vnosu se uporabniku prikaže pogled z navodili o uporabi aplikacije, po katerem se lahko premika s pomočjo menija. Ko uporabnik konča z uvodom, se prikaže glavni pogled aplikacije. Znotraj menija na glavnem pogledu ima uporabnik na voljo opcijo za uvoz multimedijskih vsebin, kreiranje novega albuma, določitev gesla ter varnostnega vprašanja in prikaz navodil. Ob izbiri opcije za uvoz podatkov mu aplikacija prikaže vse albume, ki jih ima na mobilni napravi, znotraj albumov pa lahko uporabnik izbere posamezne elemente ali pa celotno vsebino ter jih z uporabo menija uvozi v aplikacijo. Znotraj aplikacije je na voljo tudi zajem fotografije ali video posnetka s pomočjo kamere. Uvožene vsebine lahko uporabnik briše, jih prestavi v drug album, ali pa shrani nazaj v sistemsko galerijo. Albumom lahko spremeni ime, določi naslovno sličico, ali pa jih v celoti izbriše. Uporabnik mora ob vsakem zagonu aplikacije vnesti varnostni vzorec, s katerim odklene aplikacijo in lahko dostopa do podatkov. V kolikor trikrat vnese napačen vzorec, se mu prikaže pogled, kjer mora vnesti odgovor na varnostno vprašanje. Ob pravilnem odgovoru lahko uporabnik ponovno določi varnostni vzorec. 5.2. Omejitve pri razvoju Zaradi varnosti uporablja platforma ios sistem peskovnikov (ang. sandboxing). To pomeni, da ima vsaka aplikacija svoj peskovnik oz. prostor v pomnilniku naprave, kjer lahko shranjuje svoje podatke. Na sliki 5.1 vidimo strukturo peskovnikov v ios, ki jasno prikazuje ločene peskovnike posameznih aplikacij. Znotraj peskovnika ima vsaka aplikacija pravico do branja in zapisovanja podatkov, do peskovnikov ostalih aplikacij pa 22

dostopa nima. Za primere, ko želimo upravljati s podatki v drugih aplikacijah, moramo za svojo aplikacijo v konfiguraciji registrirati tipe podatkov, ki jih je zmožna obdelati. V kolikor je aplikacija uspešno registrirana, lahko ios asociira tipe podatkov oz. datotek in omogoči zagon naše aplikacije z odprtjem podprte datoteke. Primer takšne konfiguracije je povezava URL na spletni portal YouTube, ki jo sistem prepozna in namesto spletnega brskalnika zažene YouTube aplikacijo, ki povezavo interpretira ter prikaže pripadajoč posnetek. Slika 5.1: Aplikacijski peskovniki v ios Ta omejitev za našo aplikacijo pomeni, da fotografij in video posnetkov, ki jih bo uporabnik uvozil iz galerije na napravi, z aplikacijo ne bomo mogli izbrisati, ampak jih bo moral izbrisati uporabnik sam. Fotografije ali video posnetki, ki bodo zajeti znotraj aplikacije, pa se bodo shranili neposredno v peskovnik aplikacije in jih ne bo potrebno brisati iz sistemske galerije. 5.3. Uporabljene metode in načrtovalski vzorci Tekom razvoja smo se poslužili mnogih dobrih praks razvoja OO aplikacij in načrtovalskih vzorcev. S tem smo prihranili ogromno časa in truda, saj lahko z dobro strukturirano kodo kasneje tudi veliko hitreje spreminjamo funkcionalnosti ali nastavljamo posamezne parametre, ki izboljšajo delovanje ali izgled posamezne komponente v aplikaciji. 23

Vzorec MVC Vzorec MVC (Model View Controller) je temeljni vzorec, ki ga Apple priporoča in vzpodbuja pri razvoju aplikacij ios. Namen vzorca je ločitev poslovne logike od uporabniškega vmesnika. Z uporabo vzorca dobi vsak objekt v aplikaciji svojo vlogo: model, pogled ali krmilnik. MVC definira abstraktne omejitve in način komunikacije, kar v praksi pomeni, da pogled (gradniki na zaslonu) nikoli ne komunicira neposredno z modelom (shranjeni podatki v aplikaciji). Za njuno komunikacijo skrbi krmilnik, ki igra vlogo veznega objekta in skrbi za pravilno obveščanje o spremembah na pogledu ali v podatkih. Pogled nikoli ne skrbi za shranjevanje podatkov (razen predpomnjenja za boljšo odzivnost), model pa nikoli neposredno ne spreminja lastnosti pogleda, ki ga vidi uporabnik. Shema vzorca je prikazana na sliki 5.2. Slika 5.2: Diagram načrtovalskega vzorca MVC Implementacija vzorca MVC nam omogoča ponovno uporabo pogledov ali modelov brez spreminjanja njihove kode. Tako lahko v aplikaciji uporabimo isti pogled in logiko za izbiro posameznih fotografij oz. video posnetkov iz sistemske galerije, kot tudi kasneje za izbiro zakodiranih uvoženih elementov znotraj aplikacije. Primer uporabe Znotraj alikacije imamo model (entiteto v podatkovni bazi in Objective-C razred) Asset, ki s pomočjo kasneje predstavljenega ogrodja Core Data hrani podatke o šifriranem elementu. Uporabo vzorca MVC najbolje ponazarja lastnost filepaththumbsmall, ki hrani lokacijo datoteke, ki smo jo uvozili iz sistemske galerije ali vgrajene kamere. Omenjena lastnost ne pozna pogleda (načina predstavitve) in njena edina naloga je hranjenje podatka v obliki niza (NSString). 24

Za predstavitev uporabimo razred JZLibraryAssetView, ki je podrazred razreda JZAssetView in skrbi za prikaz datotek shranjenih v sistemski galeriji. Kot parameter ob inicializaciji prejme podatke o modelu (Asset), nato pa z uporabo kode razreda JZCommon dešifrira podatke, ki se nahajajo na lokaciji filepaththumbsmall in jih prikaže v obliki male sličice. Za izmenjavo podatkov med shranjenim objektom tipa Asset in JZLibraryAssetView skrbi krmilnik JZAssetPicker. Core Data V svetu aplikacij, kljub vedno večji selitvi podatkov v oblak (icloud, Dropbox, Google Drive, Amazon ), potrebujemo lokalno shranjene podatke. Povezljivost mobilnih telefonov je še vedno preveč odvisna od zunanjih dejavnikov (slabo vreme, veter, zasedenost omrežja ), da bi se lahko zanesli zgolj na podatke, do katerih imamo dostop samo z internetno povezavo. Kot razvijalci aplikacij potrebujemo torej način shranjevanja podatkov in najpreprostejša oblika so navadne datoteke, ki so pa primerne samo za enostavno hrambo. V kolikor želimo iskati, urejati in povezovati podatke v relacije, nam klasične datoteke več ne zadostujejo. Naštete funkcionalnosti nam nudijo podatkovne baze in tudi v ios imamo možnost uporabe le-te. Sistem uporablja različico SQLite, do katere pa zelo redko neposredno dostopamo, saj je Apple za ta namen razvil posebno ogrodje Core Data. Core Data skrbi za začasno ali trajno hranjenje in urejanje podatkov. Odvisno od nastavitev lahko podatke shranjuje v pomnilnik, v obliki navadnih datotek v datotečnem sistemu ali v podatkovno bazo. Ni edini in vsekakor ne najpreprostejši način za shrambo podatkov na napravi, nudi pa ogromno stvari, ki nam olajšajo načrtovanje in razvoj aplikacije. Z uporabo Core Data smo vsaj delno prisiljeni slediti vzorcu MVC, saj nam ogrodje lahko kreira tudi Objective-C razrede naših modelov. Posebnost tega pristopa je neodvisnost od lokacije hranjenja, saj lahko samo z nastavitvijo parametra spremenimo tip hranjenja podatkov, vsa koda v naših krmilnikih (Controllerjih) in modelih pa ostane popolnoma enaka. Rezultat načrtovanja modela Core Data je shema, kjer so opisane lastnosti modela, relacije med modeli, privzete vrednosti in validacijo atributov. Orodje za načrtovanje spominja na grafični urejevalnik SUPB-ja (sistema za upravljanje s podatkovnimi bazami), kar pomaga pri lažjem razumevanju strukture modelov. Shema modelov za apliakcijo Securit je prikazana na sliki 5.3. 25

5.4. Uporabniški vmesnik Slika 5.3: Shema modelov v Core Data Razvijalci aplikacij na platformi ios v preteklosti niso imeli pretirano težke naloge, če so želeli ustvariti lepo aplikacijo, saj je ios v osnovi zelo grafično dovršen. Iz dejstva [18], da je v App Storu že skoraj 700.000 aplikacij, pa lahko sklepamo, da za privlačno in unikatno aplikacijo potrebujemo več kot pa le gradnike, ki nam jih nudi Apple v ios SDK-ju. Razvijalci in oblikovalci se tega problema oziroma izziva zavedajo in vedno znova presenečajo z edinstvenim designom. Trenutni oblikovalski trend stremi k preprostosti in čistosti uporabniškega vmesnika. Uspešni razvijalci se osredotočajo na osnovno funkcionalnost, ki mora biti dostopna nemudoma, brez nepotrebnih gumbov, menijev in ostalih gradnikov. Aplikacije, ki uporabniku nudijo preveč funkcionalnosti, lahko prehitro romajo iz naprav in jih uporabnik nikoli več ne prenese iz tržnice. Velika razlika med namiznimi in mobilnimi aplikacijami je dejstvo, da mobilne aplikacije uporabljamo na mobilnikih, ki jih nosimo s seboj in morajo biti pripravljeni na uporabo praktično takoj. To pomeni, da mora aplikacija ponuditi uporabniku rezultat v najkrajšem možnem času, kar pa ob prevelikem številu nastavitev in menijev ni možno. Aplikacije kot so Clear, Convertbot, GarageBand, Commit in mnoge druge, postavljajo mejnike za vse razvijalce in vzpodbujajo inovativnost, ki loči povprečne in nadpovprečne aplikacije. 26

Slika 5.4: Primer inovativnega uporabniškega vmesnika aplikacije Clear [17] V aplikaciji Securit smo uporabili dve komponenti, ki uporabljata drugačen sistem navigacije znotraj aplikacije in nudita po našem mnenju boljšo uporabniško izkušnjo kot tradicionalni in skoraj zastareli navigacijski sistemi. JZMenu Komponenta JZMenu nam nudi preprosto implementacijo menija v aplikaciji in deluje na principu zagrabi-povleči-spusti (ang. hold-drag-release). To pomeni, da uporabnik v aplikaciji položi prst na glavni element menija, ki je lahko besedilo ali slika, s čimer aktivira meni. Meni je prikazan v obliki seznama z velikimi pravokotniki, ki prav tako lahko vsebujejo tekstovne elemente ali pa slike. Uporabnik nato povleče glavni element menija do ustrezne pozicije na seznamu in nato umakne prst. Ta akcija vrne glavni element menija na prvotno mesto in izvrši akcijo, ki je vezana na izbrani element. Na spodnji sliki je na levi strani neaktiven meni, na desni pa aktiven. 27

Slika 5.5: Delovanje komponente JZMenu JZUnlockView V aplikaciji smo potrebovali tudi sistem verifikacije, vendar nismo želeli uporabiti klasičnih gesel ali 4-mestnih številk PIN, zato smo razvili komponento JZUnlockView, s katero uporabnik s pomočjo 9 točk na zaslonu nariše vzorec in tako tvori geslo. Uporaba je intuitivnejša in hitrejša kot vpisovanje gesel s pomočjo tipkovnice na zaslonu. Komponenti lahko sicer s spreminjanjem lastnosti JZUnlockPattern spreminjamo število točk, vendar smo se za aplikacijo Securit odločili za mrežo 9 točk. Na spodnji sliki je prikazan izgled preverjanja uspešnosti narisanega vzorca v komponenti. Slika 5.6: Uporaba komponente JZUnlockView 28

JZAssetPicker Zaradi prikladnosti mora biti v aplikaciji omogočena izbira večih večpredstavnostnih elementov hkrati. Te funkcionalnosti Applov razred UIImagePickerController ne omogoča, zato smo komponento morali izdelati sami. Za zgled smo uporabili implementacijo ELCImagePickerController 14, ki jo je na portalu GitHub objavilo podjetje ELC Technologies. Komponento smo priredili po svojih potrebah ter dodali še možnost prikaza elementov na ipadu. Komponenta je omogočala samo prikaz multimedijskih vsebin iz sistemske galerije, v aplikaciji pa je potreben tudi prikaz že uvoženih elementov, zato smo komponenti dodali krmilnik JZImportedAssetPicker, ki je podrazred razreda JZAssetPicker. Slednji skrbi za prikaz vsebine sistemske galerije, na sliki 5.7 pa vidimo uporabo omenjene komponente na ipadu in iphonu, kjer je v vrstici 8 oz. 4 sličice multimedijskih vsebin na napravi. Slika 5.7: Prikaz komponente na ipadu (levo) in iphonu (desno) NSData+AES Šifriranje podatkov s komponento NSData+AES ne zahteva posebne konfiguracije, ampak je dovolj le poslano sporočilo encryptwithstring: objektu razreda NSData. Če pogledamo v implementacijo komponente ugotovimo, da avtor za šifriranje in dešifriranje uporablja metode, ki so definirane v cipher.h in se poslužujejo Applove knjižnice CommonCrypto. 14 Povezava na GitHub: https://github.com/elc/elcimagepickercontroller 29

Zaradi boljše preglednosti smo ustvarili razred JZCommon, v katerem so na voljo razredne metode z operacijami, ki jih tekom aplikacije večkrat izvajamo. Datoteko JZCommon.h z ukazom #import JZCommon.h v datoteki Securit-Prefix.pch definiramo in s tem postane dostopna vsem razredom v projektu. S to potezo občutno zmanjšamo količino ponavljajoče se kode, saj lahko izvajamo metode razreda iz kateregakoli dela aplikacije. Spodnji izsek prikazuje implementacijo metode za šifriranje objektov z vhodnim parametrom kencryptionkey, ki je definiran v datotekah s konstantami JZConstants. + (NSData *)encrypteddata:(nsdata *)original { NSData *encrypted = [original encryptwithstring:kencryptionkey]; return encrypted; } Izsek kode 5.1: Razredna metoda za pomoč pri šifriranju podatkov Metoda v izseku 5.2 dešifrira datoteko, ki je shranjena na lokaciji filepath. To metodo uporabljamo vsakič, ko želimo iz datoteke na napravi prikazati fotografijo na zaslonu, za kar potrebujemo objekt razreda UIImage. + (UIImage*)decryptedImageAtPath:(NSString*)filePath { NSError *encrypterror; NSData *encrypted = [NSData datawithcontentsoffile:filepath options:nsdatareadinguncached error:&encrypterror]; if (encrypterror) { NSLog(@"Error getting filepath data when encrypting image. Using default image."); return [self defaultimage]; } } NSData *decrypteddata = [encrypted decryptwithstring:kencryptionkey]; return [UIImage imagewithdata:decrypteddata]; Izsek kode 5.2: Razredna metoda za dešifriranje podatkov v obliko UIImage 5.5. ARC (Automatic reference counting) Mnogo programskih okolij ponuja t.i. pobiralca smeti (ang. garbage collectorja), ki upravlja s pomnilnikom in razvijalce razbremeni, saj jim v večini primerov ni potrebno dodatno skrbeti za racionalno ravnanje aplikacij s pomnilnikom. Tudi Apple je v svojo različico Objective-C-ja Cocoa, ki se uporablja za razvoj OS X namiznih aplikacij, vključil pobiralca smeti. Zaradi boljše odzivnosti aplikacij na mobilnih napravah pa so se odločili, da bodo to delo prepustili razvijalcem. Do verzije ios 5.0 smo tako morali popolnoma sami poskrbeti, da je aplikacija tekla gladko in ni povzročala neodzivnosti. Verzija 5.0 pa je med drugim 30

prinesla tudi ARC, ki bi naj pomagal razvijalcem s tem, da sam poskrbi za ustrezno sproščanje pomnilnika z objekti, ki jih aplikacija ne potrebuje. Seveda se v praksi mnogokrat izkaže, da kljub vključeni funkciji ARC, prevajalnik vseeno potrebuje nekaj smernic in ukazov, da svoje delo pravilno in učinkovito opravi. Tekom razvoja aplikacije smo to tudi sami izkusili, saj je aplikacija nenadzorovano večala porabo pomnilnika, dokler nismo raziskali napake in našli preproste rešitve, ki je opisana v naslednjem poglavju. NSObject, ki je osnovni razred v jeziku Objective-C, ima lastnost retaincount, ki spremlja, koliko drugih objektov (lastnikov) kaže na objekt. Naslednja vrstica kode ustvari objekt z imenom mojobjekt: NSObject *primerek = [[NSObject alloc] init]; Izsek kode 5.3: Kreiranje objekta tipa NSObject Opazimo, da vršimo 2 klica, in sicer alloc, ki je razredna metoda in rezervira prostor v pomnilniku, in init, ki je neke vrste konstruktor in ustvari objekt ter vrne kazalec nanj. Ob klicu razredne metode alloc se hkrati poveča tudi vrednost lastnosti retaincount za 1. Objekta nikoli ne brišemo sami s klicem metode dealloc, ampak za ta namen uporabljamo metodo release. Tako bi v našem primeru za pravilno sproščanje pomnilnika preprosto izvršili klic: [primerek release]; Izsek kode 5.4: Sproščanje pomnilnika brez sistema ARC Takšen način nudi razvijalcem veliko nadzora nad porabo pomnilnika, vendar pomeni, da lahko z neusklajenimi klici hitro začnemo puščati pomnilnik (ang. memory leak). V nekaterih primerih nam je na pomoč priskočila metoda autorelease, katere delovanje je lahko včasih nepredvidljivo. Naloga omenjene metode je, da izbriše objekt iz pomnilnika, ko se sprazni navidezni bazen za samodejno sproščanje pomnilnika (ang. autorelease pool). To pomeni, da lahko objekt izgine iz pomnilnika takrat, ko ga še potrebujemo, ali pa ostane v pomnilniku predolgo in povzroča visoko porabo ali celo pomnilniška opozorila. Uporaba te metode je zato priporočljiva samo v primerih, ko objekt potrebujemo samo znotraj iste metode in v isti niti, ali pa ko v zanki ustvarjamo veliko objektov, ki jih potrebujemo samo začasno. 31

V sledečem poglavju je prikazano, da lahko tudi z vključeno opcijo ARC naletimo na težave s prekomerno porabo pomnilnika. V aplikaciji Securit smo težavo lahko odpravili s pomočjo orodja Instruments. 5.6. Testiranje Aplikacije, ki tečejo na ios-u, morajo znati dobro skrbeti za racionalno uporabo pomnilnika. ios je zelo odziven, kar doseže s svojim neizprosnim ravnanjem z aplikacijami. V kolikor aplikacija porablja preveč pomnilnika in povzroča neodzivnost uporabniškega vmesnika, ji ios pošlje opozorilo stopnje 1. Aplikacija lahko to opozorilo interpretira in poskrbi, da sprosti nepotrebne podatke, ki jih hrani v pomnilniku. Če tega ne stori, lahko prejme še opozorilo stopnje 2, kateremu sledi prisilna prekinitev izvajanja. ios s tem poskrbi, da je naprava odzivna v vsakem trenutku in da uporabniška izkušnja ne trpi, če avtor aplikacije ne upošteva priporočil. Vsaka aplikacija, ki ima opravka z velikimi količinami podatkov, je še bolj na udaru, zato mora razvijalec dobro načrtovati in predvsem testirati aplikacijo, preden jo ponudi na App Storu. Securit upravlja s fotografijami in video posnetki, ki spadajo med največje datoteke na napravi, zato smo morali dobro upoštevati nasvete, ki jih Apple navaja v dokumentaciji za razvijalce. Kljub temu, da smo v projektu imeli vključeno opcijo ARC, ki razvijalcu olajša nekatere vidike upravljanja s pomnilnikom, smo morali biti pazljivi. Predvsem zapleteno je bilo uvažanje večjega števila fotografij iz sistemske galerije v aplikacijo in nazaj, kjer smo zaradi nepazljivosti v zankah for povzročili prekinitev izvajanja aplikacije. Orodje Instruments ogromno pripomore pri iskanju hroščev in analizi porabe sredstev naprave, zato ga je priporočjlivo uporabljati od začetka do konca razvoja, saj nam lahko v zgodnjih fazah pomaga odkriti morebitne kasnejše hrošče oz. prekomerno uporabo pomnilnika, baterije ali drugih sredstev. Prvi poskus uvoza podatkov V prvi implementaciji kode za uvoz podatkov iz sistemske galerije nismo upoštevali nasveta za boljše upravljanje s pomnilnikom, zaradi česar je aplikacija ob večji količini fotografij prejemala sistemska opozorila. V večini primerov je bilo izvajanje aplikacije tudi prekinjeno. Na spodnji fotografiji vidimo poskus uvoza 60 fotografij iz sistemske galerije. Rezultat je prekinitev, ki je sledila približno 10 sekund po prvem opozorilu. Aplikacija je tik pred koncem izvajanja razpolagala s skoraj 100 megabajti podatkov v pomnilniku. 32

Slika 5.8: Poraba pomnilnika z neoptimiziranim načinom uvoza podatkov Drugi poskus uvoza podatkov V drugem poskusu smo v zanko for dodali sistemski klic @autoreleasepool{ }, ki sprošča pomnilnik objektov, ustvarjenih znotraj zavitih zank ukaza. To je drastično spremenilo porabo pomnilnika, kar je razvidno iz slike 5.9. S pomočjo orodja Instruments smo ugotovili, da se pomnilnik sprosti po uvozu posamezne fotografije, zato je poraba pomnilnika ob enakih pogojih (uvoz 60 fotografij) v najvišji točki dosegla komaj 16 megabajtov. - (void)saveassets:(nsdictionary*)info { NSArray *assets = [info objectforkey:kassetskey]; NSMutableSet *savedassets = [[NSMutableSet alloc] initwithcapacity:assets.count]; int counter = 0; int assetcount = assets.count; NSEntityDescription *assetentity = [NSEntityDescription entityforname:@"asset" inmanagedobjectcontext:self.managedobjectcontext]; Album *album = [info objectforkey:kalbumkey]; NSDate *date = [NSDate date]; NSFileManager *filemanager = [NSFileManager defaultmanager]; for (NSDictionary *assetdata in assets) { 33

@autoreleasepool { // Start of Autoreleasepool self.hud.labeltext = [NSString stringwithformat:nslocalizedstring(@"encrypting file %d of %d", @""), ++counter, assetcount]; // New asset Asset *asset = [[Asset alloc] initwithentity:assetentity insertintomanagedobjectcontext:self.managedobjectcontext]; asset.timestamp = [NSDate date]; } // Type Izsek kode 5.5: Optimizirana koda za uvoz podatkov Koda za uvoz je bila nespremenjena, z izjemo gnezdenja celotne kode v for zanki s klicem @autorelease. Slika 5.9: Prikaz porabe pomnilnika z optimiziranim načinom uvoza podatkov V tem poglavju smo predstavili testiranje aplikacije Securit in težavo, ki jo pogosto zasledimo na spletnih razvijalskih portalih. Z uporabo orodja Instruments smo izvor težave z lahkoto locirali in problem tudi odpravili ter s tem dosegli želeno delovanje aplikacije. Zaradi preproste implementacije in dobrega načrtovanja navigacije po aplikaciji napak pri testiranju ostalih komponent ni bilo. 34