Сигурност и защита на операционни системи за мобилни...

63
ИКОНОМИЧЕСКИ УНИВЕРСИТЕТ - гр. ВАРНА ЦЕНТЪР ЗА МАГИСТЪРСКО ОБУЧЕНИЕ КАТЕДРА “ИНФОРМАТИКА” МАГИСТЪРСКА ТЕЗА Тема: Сигурност и защита на операционни системи за мобилни устройства Дипломант: Стоян Тодоров Мечев Научен ръководител: доц. д-р Стефан Дражев Варна септември 2014 г.

Upload: stoyan-mechev

Post on 20-Dec-2014

311 views

Category:

Mobile


5 download

DESCRIPTION

Дипломна работа на тема: Сигурност и защита на операционни системи за мобилни устройства.

TRANSCRIPT

Page 1: Сигурност и защита на операционни системи за мобилни устройства

ИКОНОМИЧЕСКИ УНИВЕРСИТЕТ - гр. ВАРНА

ЦЕНТЪР ЗА МАГИСТЪРСКО ОБУЧЕНИЕ

КАТЕДРА “ИНФОРМАТИКА”

МАГИСТЪРСКА ТЕЗА

Тема: Сигурност и защита на операционни

системи за мобилни устройства

Дипломант: Стоян Тодоров Мечев

Научен ръководител: доц. д-р Стефан Дражев

Варна септември 2014 г.

Page 2: Сигурност и защита на операционни системи за мобилни устройства

стр. 2 от 63

Съдържание

Използвани съкращения ........................................................................... 3

Въведение .................................................................................................. 4

Цел: ............................................................................................................. 5

Задачи: ........................................................................................................ 5

Глава 1. Съвременни операционни системи за мобилни устройства ... 6

1.1 Кратък преглед на съвременни операционни системи за мобилни

устройства ............................................................................................................ 6

1.2 Операционна система iOS ................................................................ 12

Сигурност на iOS. ..................................................................................... 17

1.3 Android OS .......................................................................................... 20

Сигурност на Andorid ОС ......................................................................... 25

Глава 2. Инструментариум ...................................................................... 30

2.1. Език за програмиране Java .............................................................. 30

2.2. Среда за разработка ........................................................................ 32

2.3 Андроид приложения ......................................................................... 46

Глава 3. Проектиране на приложение за управление на кратки

текстови съобщения за устройства работещи под Android ОС 4.4 KitKat .... 53

3.1 Дизайн ................................................................................................. 53

3.2 Сценарий ............................................................................................ 56

3.3 Полза .................................................................................................. 57

Заключение .............................................................................................. 59

Препоръки ................................................................................................ 59

Използвана литература ........................................................................... 61

Page 3: Сигурност и защита на операционни системи за мобилни устройства

стр. 3 от 63

Използвани съкращения

ОС - Операционна система

ППИ (API) - Приложен програмен интерфейс

ПИ – Потребителски интерфейс

КТС (SMS) - кратко текстово съобщение

AVD – Android Virtual Device – виртуално Android устойство

Page 4: Сигурност и защита на операционни системи за мобилни устройства

стр. 4 от 63

Въведение

Мобилните технологии промениха света. Те са навсякъде, като се

започне от забавленията (под формата на различни видове игри) и

социалните мрежи и се стигне до двуфакторния контрол на сигурността при

мобилното банкиране и браузърите с добавена реалност.

Проучване на Gartner1 (таблица 1) показва, че от 299,89 милиона

единици през 2010г. продажбите на смартофни на крайни потребители са

достигнали до 967,77 милиона единици през 2013г., което означава, че

продажбите на такива устройства са се увеличили над 3 пъти. Общите

продажби за прериода надхвърлят 2,4 милиарда единици или

приблизително по един смартфон на всеки трети жител на планетата.

Същевременно рязко са се променили пазарните дялове на

операционните системи за смарфони (фиг.1 и фиг. 2). Пазарният дял на

Android ОС от 22,41% през 2010г. е достигнал 78,40% през 2013г., докато

пазарният дял на Symbian ОС от 37,21% е спаднал на 0,25%, което показва

1 Global smartphone sales to end users from 1st quarter 2009 to 4th quarter 2013, by operating

system (in million units). // http://www.statista.com. <http://www.statista.com/statistics/266219/global-smartphone-sales-since-1st-quarter-2009-by-operating-system/> (05.08.2014)

Page 5: Сигурност и защита на операционни системи за мобилни устройства

стр. 5 от 63

динамиката на този пазар.

При тези впечатляващи числа е естествено да бъде поставен

въпросът за сигурността и защита на личните данни на потребителите на

мобилни устройства.

Цел:

Повишаване на сигурността на Android ОС.

Задачи:

● Обзор на най-разпространените операционни ситеми за

мобилни устройства.

● Описание на средствата за разработка на приложения за

Android ОС.

● Проектиране на приложение за контрол на текстови

съобщения.

Page 6: Сигурност и защита на операционни системи за мобилни устройства

стр. 6 от 63

Глава 1. Съвременни операционни системи за мобилни

устройства

1.1 Кратък преглед на съвременни операционни системи за

мобилни устройства

Андроид ОС (Android OS).

Android ОС е разгледана подробно в т.3.

Бада (Bada)

Платформата Bada (от корейското “Океан”) е разработвана от

Samsung Electronics. Първа реализация - bada 1.0 - 14 февруари 2010 г.

Bada използва фирменият

интерфейс на Samsung - TouchWiz UI.

Първият тъчфон работещ под Bada е

Samsung S8500 Wave.

Платформата bada има многослойна

архитектура (фиг. 1.1).

Слоят на операционната система се

явява най-долен, а по-горните слоеве

използват неговите функции за достъп до

хардуера.

Приложенията се изпълняват без използването на междинно

програмно обезпечение oт типа на Java-виртуална машина. За

програмистите са достъпни преки обръщения към всички слоеве на

платформата. В резултат bada-програмите, разработвани на C++ се

изпълняват значително по-бързо и могат да използват възможностите на

графичните, мултимедийните и комуникационните библиотеки много по-

гъвкаво. Все пак, в bada има Java-виртуална машина, което позволява

стартирането и поддръжката на множество програми, но самата виртуална

машина работи като отделно приложение и при нейното стартиране е

фигура 1.1 Архитектура на Bada ОС

[8]

Page 7: Сигурност и защита на операционни системи за мобилни устройства

стр. 7 от 63

възможна паралелната работа на една bada-програма. 2

Последна достъпна версия 2.0.6 от 28 февруари 2013г. На 25

февруари 2013 г. Samsung официално обявява сливането на Bada с

проекта Tizen.

Блекбери (BlackBerry) (от английски “къпина”)

BlackBerry е операционна система разработвана от Канадската

компания Research In Motion (RIM) първоначално предназначена за

предлаганите от тях устройства BlackBerry.

Research In Motion (RIM) е основана през 1984 г. и е базирана във

Ватерло, Онтарио. Първоначално е произвеждала безжични компоненти за

други компании. След като през 1997 г. става ясно, че интернет безспорно

има бъдеще и използването на електронна

поща се превръща в основна част от живота

на потребителите благодарение на пионери

като AOL и Yahoo, основателите на RIM

разработват визия за достъпност до

електронна поща за хора в движение.

Пейджърът The RIM Inter@ctive Pager

(фиг. 1.2), двупосочен пейджър с малък екран

и интегрирана QWERTY клавиатура е първото

въплъщение на тази визия. Той съдържа съществени елементи, които по-

късно стават основа за реализирането на идеи като тракуил за работа с

една ръка, QWERTY клавиатура и приемливо (макар и бавно) безжично

покритие.

Поддръжката на безжичен трансфер на данни е осигурена от

Mobitex(BellSouth), като не се предлага възможност за пренос на звук.

Първите потребители на RIM са предимно бизнесмени, включително

борсови търговци и други във финансовия сектор, чиито бизнес е зависим

от постоянната комуникация с клиенти и колеги.

2 Данилова,Василиса, Евгений Лебеденко. Обзор платформы Samsung bada. //

www.mobi.ru, 24.03.2010 <http://www.mobi.ru/Articles/4961/Obzor_platformy_Samsung_Bada.htm> (22.07.2014)

фигура 1.2 The RIM Inter@ctive Pager

[13]

Page 8: Сигурност и защита на операционни системи за мобилни устройства

стр. 8 от 63

RIM продължава първоначалния успех на RIM Pager с първото

BlackBerry през 1999г. Устройството предлага по-голям екран,

съвместимост с модерните безжични услуги като GPRS и CDMA мрежи и

интеграция с корпоративни имейли чрез BlackBerry Enterprise Server (BES).

BlackBerry ОС е базирана на Java платформата, което дава на устройството

твърда основа за сигурни комуникации, както и база за създаването на

допълнителни приложения и решения от софтуерните разработчици.3

BlackBerry10 или BBX

RIM анонсира BBX на конференцията DevCon през октомври 2011.

Новата версия обединява QNX и BlackBerry OS за мобилни устройства. BBX

интегрира всички платформи на RIM, включително социалната платформа

BlackBerry Messenger и е предназначена за следващото поколение

смартфони BlackBerry, таблетите BlackBerry PlayBook, а също така за

системи за вграждане.

В новата ОС RIM обръщат основно внимание на защитата на

комуникациите и данните, като осигуряват поддръжка на сертификатите за

безпасност EAL4+, IEE POSIX и IEC 61508 Safety (SIL3).

BBX поддържа 2D- и 3D- игри включително на базата на Flash. На

разработчиците е предоставена възможност да пишат код на C++, а след

това да пренесат приложенията в BBX с помощта на инструменти за

разработка предоставени от RIM. Осигурена е поддръжка за всички

приложения разработени за по-стари модели на BlackBerry, а също така и

на програми създадени с помощта на Native SDK, Adobe AIR/Flash и

WebWorks/HTML5.

С BBX RIM въвеждат понятието “суперпрограми”, които според

тяхната класификацията предоставят разширени възможности за по-

дълбока интеграция между приложенията с облачните услуги BlackBerry

Push, социалните мрежи и други елементи.4

На тестовия смартфон BlackBerry 10 Dev Alpha Developer Device BBX

осигурява пълна многозадачност и поддръжка на интерфейса за близка

3 Bachmann, Glenn. Hacking BlackBerry. Indianapolis, Wiley Publishing Inc., 2007, стр. 25-26

4 Ходаковский, Константин. RIM представила операционную систему BBX. //www.3dnews.ru,

19.10.2011. <http://www.3dnews.ru/news/618580> (29.07.2014)

Page 9: Сигурност и защита на операционни системи за мобилни устройства

стр. 9 от 63

безжична връзка NFC, портове micro-USB и micro-HDMI. Използва се

стандартът micro-SIM с поддръжка на четирислойна връзка HSPA.

RIM официално пуска на пазара BBX, инструментите за разработка и

тестовия смартфон BlackBerry 10 Dev Alpha Developer Device по време на

изложението BlackBerry World през април 2012г.5

iOS

iOS е разгледана подробно в т.2

Майкрософт (Microsoft)

Microsoft Windows CE

През 1992г. Microsoft обявяват създаването на мобилно Windows

устройство. Целта на проекта WinPad е да промени обхвата на Windows 16

(Win16) кода към новата x86 платформа. Проектът е закрит през есента на

1994г. поради ниското ниво на хардуерните технологии.

По същото време е разработван втори проект с кодово име Пулсар

(Pulsar). Концепцията му е била създаването на безжично устройство за

обща употреба.

През декември 1994г. екипите работещи по проектите WinPad и Pulsar

са обединени в развойна група наречена Пегас (Pegasus). Обединявайки

опита от двата закрити проекта започва разработката на нова операционна

система, която да поддържа устройства отговарящи на следните

изисквания: размер не по-голям от 18х10х2,5 см.; захранване с 2 броя

батерии AA; тегло под 500 гр.; QWERTY клавиатура, съдържаща

стандартни клавиши Ctrl, Alt и Shift; сензорен LCD екран с резолюция

480х240 пиксела; минимум 4 МB ROM; минимум 2 MB RAM; инфрачервен

порт съвместим с HPSIR; сериен порт RS-232; PCMCIA слот; вграден аудио

изход; поддържащо процесорна архитектура SuperH3, MIPS 3000 или MIPS

4000.

През ноември 1996 производителите Casio, Compaq, HP, LG

Electronics (за Hitachi), NEC и Philips подписват договори с Microsoft за

5 Ходаковский, Константин. RIM выпустила BB10, инструменты разработки и тестовый

смартфон. //www.3dnews.ru, 02.05.2012. <http://www.3dnews.ru/news/628629> (29.07.2014)

Page 10: Сигурност и защита на операционни системи за мобилни устройства

стр. 10 от 63

производството на устройства, отговарящи на изброените по-горе

характеристики и работещи под управлението на Windows CE 1.0.

През периода 1996-2009 Windows CE претърпява множество

подбрения приспособявайки се към промените в пазарните условия и

новите технологии.

Последната версия на Windows CE е Windows CE 6.0 R3 пусната на

празара през септември 2009г.

Microsoft Windows Mobile

Развититето на Microsoft Windows Mobile започва с рилийза на

платформата Pocket PC през април 2000. Операционната система Pocket

PC 2000 е базирана на Windows CE 3.0 и е предназначена за т.нар. Palm-

Size PC (компютри с размер на човешка длан). В същия период са пуснати

на пазара и мобилни телефони работещи под Pocket PC 2000.6

Името Windows Mobile е представено за първи път като Windows

Mobile 2003. Версиите Windows Mobile 2003, Windows Mobile 2003 СЕ,

Windows Mobile 5.0 се разпространяват в три различни варианта:

● Windows Mobile за джобен компютър (Pocket PC) - за

устройства без телефонни възможности;

● Windows Mobile за телефон - джобен компютър (Pocket PC

Phone) - за устройства с телефонни възможности;

● Windows Mobile for Smartphone - за телефони без

сензорен екран.

След Windows Mobile 6 терминологията се променя:

● Windows Mobile Classic - за устройства без телефонни

възможности;

● Windows Mobile Professional - за устройства с телефонни

възможности и сензорни екрани;

● Windows Mobile Standart - за устройства с телефонни

възможности, но без сензорни екрани.

След версия Windows Mobile 6.5 Microsoft брандират техните

6 Tilley, Chris. The History Of Windows CE. //www.hpcfactor.com, 18.02.2001.

<http://www.hpcfactor.com/support/windowsce/> (10.08.2014)

Page 11: Сигурност и защита на операционни системи за мобилни устройства

стр. 11 от 63

устройства като Windows Phone.

При разработването на софтуер за устройства работещи под Windows

Mobile след версия 5.0 се използва .NET Compact Framework (.NET CF),

което дава възможност на всички разработчици ползващи C# или Visual

Basic .NET с лекота да пишат приложения за Windows Mobile.7

Осигурена е поддръжка на идеинтифициране NTLM и Kerberos,

криптиране с помощта на алгоритмите RC2, RC4, 3DES, DES, RSA, DSA

като и хеширане, MD5 и SH18.

Windows Phone

Windows Phone е наследник на Windows Mobile. Актуалната версия е

Windows Phone 8.1. Windows Phone 8.1 е пусната на пазара през юли 2014.

ОС Windows Phone 8.1 по своите характеристики е съпоставима в

последните версии на iOS и Android ОС, поддържаща многозадачност, със

собствена облачна услуга, електронен магазин (App Store) и интеграция с

Twitter. Вграденият браузър е Internet Explorer 11.

Windows Phone 8.1 за корпоративни клиенти поддържа: дистанционно

заключване на устройство; криптиране на електронната поща; вграден VPN

и отдалечен контрол на инсталирането на приложенията.

Симбиан (Symbian OS)

Symbian ОС (EPOC 32) е разработена от консорциума Symbian, в

който влизат Motorola, Ericsson, Nokia и Psion. По-късно към консорциума се

присъединяват Matsushita, Kenwood, Fujitsu и Siemens.

Операционната система EPOC е разработвана от 1984 от Psion

Software - подразделение на компанията Psion и е била предназначена за

произвежданият от същата фирма джобен компютър. Операционната

система е била написана на Асемблер и е използвала 16-битова

архитектура.

7 Dawes, Adam. Windows Mobile Game Development:Building Games for the Windows Phone

and Other Mobile Devices.New York, Apress, 2010. Стр. 7-8 8 Климов, Александр. Программирование для мобильных устройств по упоравлением

Windows Mobile. Санкт Петербург, Питер, 2009. стр. 16

Page 12: Сигурност и защита на операционни системи за мобилни устройства

стр. 12 от 63

Първият рилийз на Symbian ОС е през 1997г.9

Операционната система Symbian е предназначена за използване в

малки, захранвани с батерии устройства с разнообразни комуникационни

възможности. Нейните основни характеристики включват:

● Производителност - проектирана да удължи живота на

батерията чрез специфично за конкретното устройсто управление на

потреблението на енергия;

● Многозадачност - телефония, съобщение и комуникации

са основните компоненти. Всички приложения са проектирани да

работят паралелно;

● Стандарти - използването на технологии на базата на

индустриалните стандарти е основен принцип, осигуряващ

съвместимост с разработки от други производители на платформата;

● Обектно ориентиран софтуер и силно модулна

архитектура

● Управление на паметта оптимизирано за вградена

операционна система - много малки изпълними размери и ROM-

базиран код, който се изпълнява на място;

● Минимизирани изисквания към паметта по време на

работа;

● Механизми за сигурност, които позволяват сигурни

комуникации и надеждно съхраняване на данните.10

1.2 Операционна система iOS

iOS представлява версия на Apple OS X със специфични

характреристики свързани с управлението на устройствата, за които е

предназначена. Представена е за първи път през 2007 като iPhone OS -

операционната система на Apple за мобилни устройства. По-късно е

преименувана на iOS, за да подчертае факта, че работи и на други мобилни

9 Воронин, Владислав. Symbian OS для смартфонов: что к чему. //www.hpc.ru.

<http://www.hpc.ru/lib/arts/1522/printable.shtml> 11.08.2014 10

Edwards, Leigh, Richard Baker. Developing Series 60 Applications: A Guide for Symbian OS

C++ Developers. Addison Wesley, 2004.

Page 13: Сигурност и защита на операционни системи за мобилни устройства

стр. 13 от 63

устройства на Apple, като iPod Touch, iPad и Apple TV.

OS X и iOS са базирани на NeXTSTEP OS, разработена от NeXT

Computer Inc.

Ядрата и на двете операционни системи са POSIX съвместими, а

след верисия 10.5 (Leopard) на Mac OS X са съвместими с Unix 03

сертификация. Сърцевината на OS X и iOS, която включва ядрото и Unix-

основата на операционна система е известна като ”Дарвин” (Darwin) -

операционна система с открит код публикувана от Apple. Darwin OC (и

следователно OS X и iOS) използва XNU ядро базирано на Mach ядрото,

както и на части на FreeBSD ОС.

OS X и iOS не са лицензирани за използване от трети лица и работят

само с устройства търговската марка на Apple.11

iOS 1

Първият iPhone използва iOS 1.0. Той излиза на пазара със следните

приложения: SMS, Calendar, Photos, Camera, YouTube, Stocks, Maps,

Weather, Notes, Clock, Calculator, Settings, iTunes, Phone, Mail, Safari, iPod.

Потребителският

интерфейс (фиг. 1.3) има

горна част, която показва

силата на мрежовия сигнал,

мрежата, типа на мрежата,

часовото време, блутут

икони и силата на батерията.

В централната част са

началните екрани (Home

Screen). Всеки екран може

да съдържа до 16 приложения, които първоначално са били уеб

приложения, които могат да бъдат изтеглени от Apple или отметки от Safari,

които са добавени към начален екран. Навигацията между началните

екрани става с приплъзване на ляво или на дясно. В най-долната част на

11

Halvorsen, Ole Henry, Douglas Clarke. OS X and iOS Kernel Programming:Master kernel

programming for efficiency and performance. New York, Apress, 2011. стр.16-17

фигура 1.3 Начален екран на iPhone[16]

Page 14: Сигурност и защита на операционни системи за мобилни устройства

стр. 14 от 63

ПИ се намира т.нар. “Док” (Dock). Докът съдържа четири икони, които

първночално не е било възможно да бъда променяни. По-късните версии

на iOS позволяват поставянето на различни икони на дока.

След версия 1.0 iOS претърпява множество промени и подобрения.

Основните промени следват пускането на пазара на ново устройство.

Малките промени имат за цел да отстранят проблем или да

противодействат на хакерите. Например iOS 1.1.3, която е пусната през

януари 2009 има множество промени, най-забележимите от които са:

добавяне на приложения към iPod touch; възможност за преподреждане на

иконите на началните екрани; обновяване на Google Maps; SMS съобщения,

които могат да бъдат пращани до много контакти; увеличаване на мястото

за съхраняване на SMS.

iOS 2

Първата голяма промяна в iOS е версия 2.0, която се предлага с

iPhone 3G. Една от съществените добавкие е, че iOS 2.0 има вградена

поддръжка на Apple App Store. Средата, чрез която се разпространяват

приложенията е iTunes. Когато разработчик продаде приложение в App

Store, той получава 70%, а Apple получава 30%. Тази тенденция е

доразвита с iPhone OS 3.0 с възможността разработчиците да добавят

обновления, които би могло да са платени.

Друга съществена добавка е поддръжката на глобална система за

позициониране (Global Positioning System или GPS). Това позволява

множество приложения да използват програмния интерфейс на GPS за

различни цели.

iOS 3

Apple пуска на пазара iOS 3 през юни 2009. Тази версия има много

нови функции, които липсват в предишните верии:

● “Изрежи”,” копирай” и “постави” (Cut, copy, paste);

● Възможност регистрираните потребители на YouTube да

влизат в акаунта си от телефона;

● История на разговорите, която съдържа по-детайлна

Page 15: Сигурност и защита на операционни системи за мобилни устройства

стр. 15 от 63

информация, като продължителност на разговора;

● Възможност за автофокус на камерата (само за модел

3GS);

● Хардуерно криптиране (само за модел 3GS);

● Криптирани архиви;

● Гласов контрол;

● Възможност разработчиците да добавят устройства чрез

USB порт и др.

В следващите версии на iOS 3 е добавена защита от измами в Safari

браузъра.

iOS 4

iOS 4 представлява голяма крачка напред за Apple. Една от най-

съществените функции на тази ОС е, че тя позволява избирателна

многозадачност. Единственото приложение, което може да работи във

фонов режим в предишните версии на iOS е приложението iPod. В iOS 4

има седем програмни интерфейса (Application programming interface или

API), които позволяват на програмистите да създават приложения

работещи във фонов режим. Това са: фоново аудио (Background audio);

предаване на глас по IP (Voice over IP); фоново местоположение

(Background location, GPS); разпращане на известия (Push notification);

локално известяване (Local notification); завършване на задача (Task

completion); бързо превключване между приложенията (Fast app switching).

С iOS 4 са обявени общо 1500 API, които могат да бъда използвани от

разработчиците за устройствата от семейството на Apple.

Някои от най-съществените функции на iOS 4 са:

многозадачност; папки; iBooks; криптиране на електронната поща с

ПИН код; поддръжка на SSL VPN; проверка на правописа; поддръжка на

безжична блутут клавиатура.12

12

Morrissey, Sean. iOS Forensic Analysis for iPhone, iPad and iPod touch:Learn forensic

methods and procedures for iOS data acquisition and analysis. New York, Apress, 2010, стр. 25-27

Page 16: Сигурност и защита на операционни системи за мобилни устройства

стр. 16 от 63

iOS 5

С представянето на iOS през юни 2011 Aplle въвежда над 200 нови

функции и подобрения. Най-радикалните промени са:

● Интегриране на iOS с облачната услуга на Apple - iCloud.

iCloud позволява на потребителите да съхраняват данни и iOS

приложения на отдалечени сървъри и изтеглянето на съхранените

данни на други Apple устройства ползващи същата услуга;

● Услугата PC Free. Обновяването на софтуера става

безжично. За първи път не са необходими компютър и iTunes за да се

изтеглят обновявания или да се архивират данни.

Някои от най-впечатляващите нови приложения са:

● Siri - интелигентен гласов асистент, който позволява

управление на приложенията с естествени гласови команди, а също

така анализира и съпоставя събраните данни и създава взаимовръзки

между тях;

● iMessage - дава възможност за неограничен обмен на

текстови съобщения, снимки и видео с други потребители на iOS 5;

● Нов център за уведомления, в който се събират всички

събития, които се случват на телефона. При това уведомленията се

появяват при заключен телефон;

● Интеграция с Twitter - дава възможност за публикуване в

Twitter от всички основни приложения.13

iOS 6

iOS 6 е представена на потребителите на 11.06.2012 по време на

Apple Worldwide Developers Conference (WWDC) и пусната на пазара през

септември 2012. Преобладаващата част от новостите представлява

подобрения на съществуващи вече приложения. Въведена е интеграция с

Facebook. Премахнати са приложенията YouTube и GoogleMaps, но могат

да бъдат безплатно изтеглени от AppStore. Интересно нововъведение

представлява приложението Passbook, което обединява и съхранява

13

Daniel, Steven. iOS 5 Essentials:Harness iOS 5's new powerful features to create stunning

applications. Birmingham, Packt Publishing, 2012. с.7-11

Page 17: Сигурност и защита на операционни системи за мобилни устройства

стр. 17 от 63

различни видове електронни билети, карти за отстъпка, купони и др., а

също така осъществява обновяване на различна информация свързана със

съхраняваните данни, като например автоматична проверка по баланса на

картите.

iOS 7

Apple представя iOS 7 през септември 2013. Почти всички елементи в

тази версия на iOS са с променен дизайн. Всички бутони, пикъри, етикети,

ленти за навигация - всичко изглежда и се усеща по различен начин.

Концепциите, които Apple е избрала са простота и минимализъм.

Премахнати са всички богати текстури и градиенти от предходните шест

версии.

Най-съществените от добавените нови възможности са:

● Text kit - API за разполагане на текст и фина типография;

● Динамично поведение на изгледите - дава възможност за

присвояване и управление на физически ефекти на изгледите, като

например гравитационни ефекти;

● Подобрена многозадачност - дава възможност на повече

приложения, включително игри да извличат данни във фонов режим;

● Sprite Kit framework - работна рамка за разработване на

2D игри, която поддържа хардуерно ускорение на графични обекти,

звук и физически симулации;

● Поддръжка на игрови контролери. 14

Сигурност на iOS.

Моделът за сигурност на iOS включва четири слоя - сигурност на

устройството, сигурност на данните, сигурност на мрежата и сигурност на

приложенията.

Сигурност на устройството

Целта на механизмите за сигурност на устройството е да гарантират,

14

Volevodz, Dmitry. iOS 7 Game Development:Develop powerful, engaging games with ready-

to-use utilities from Sprite Kit.Birmingham, Packt Publishing, 2014, с. 5-12

Page 18: Сигурност и защита на операционни системи за мобилни устройства

стр. 18 от 63

че устройството на потебителя не може да се използва от неупълномощено

лице. Най-разпространеният метод е заключване на устройството с ПИН

код или парола. Във своята версия за корпоративни потребители iOS дава

възможност за задаване на минимална дължина, набор от символи, които

да се използват в паролата, дълготрайност и история на паролите.

Потребителите могат допълнително да настроят устройството автоматично

да се изтрие, ако твърде много пъти се въведе грешна парола. В

допълнение стратегията за сигурност на Apple включва използването на

подписани конфигурационни профили позволяващи централизирани

найстройки на VPN, WiFi, електронна поща и други конфигурации. По същия

начин могат да бъдат ограничавани и функции считани за несигурни.

Например изключване на YouTube, изключване на камерата на

устройството и забраняване на инсталирането на приложения разработени

от трети страни.

Сигурност на данните

Apple е включила редица подходи за защита на сигурността, с цел

защита на данните, дори ако устройството е откраднато. Тези механизми

включват функция за отдалечено изтриване, криптиране и защита на

данните.

Освен криптиране на данните записани в самото устройство е

възможно да се направи криптиран архив на данните с помощта на iTunes.

За целта се използва парола, която се задава чрез iTunes и се записва в

устройството. Ефективността на криптиране в голяма степен зависи от

сложността на паролата избрана от потребителя.

Мрежова сигурност

Мрежовата сигурност при iOS включва стандартни решения като VPN,

SSL/TLS криптиране, както и WEP/WPA/WPA2 безжично криптиране и

автентификация.

Сигурност на приложенията

На ниво приложение, приложенията от App Store се стартират в

Page 19: Сигурност и защита на операционни системи за мобилни устройства

стр. 19 от 63

т.нар. “пясъчник”. Приложенията стартирани в "пясъчник" не могат да

получат достъп до други приложения или до техните данни, нито могат да

получат достъп до системните файлове и други ресурси. Ограничават се

размера на паметта и процесорното време, които може да използва

приложението. Също така се ограничава достъпа до файлове извън

папката на приложението.

В допълнение към ограничаването на ресурсите на устройството, до

които едно приложение може да получи достъп, Apple има включено

подписване на приложението за да следи двоичния код разрешен да се

стартира на дадено устройство. За да бъде разрешено на приложение бъде

стартирано под IOS, то трябва да бъде подписано от Apple или със

сертифкат, издаден от Apple. Това е направено, за да се гарантира, че

приложенията не са били променени от първоначалния им двоичен код.

Apple също извършва проверки по време на работа за да тества целостта

на приложението за да се гарантира, че в него не е бил инжектиран

неподписан код.

Като част от сигурността на приложенията се използва вграден

криптиран “ключодържател” - централизиран инструмент за съхраняване и

извличане на криптирани пароли, мрежови идентификационни данни и

друга инфомация. Данните в “ключодържателя” са логически разделени,

така че дадено приложение да няма достъп до криптираните данни на друго

приложение.

Общата крипто-архитектура на Apple включва AES, 3DES, и RC4

криптиране. Също така се поддържа хардуерно ускорено AES криптиране и

SHA1 хеширане.15

По данни на Apple от седем дневно проучване на потребителите на

App Store към април 2014 87% от потребителите ползват iOS7, 11% - iOS 6

и 2% по-ранни версии на iOS.16

15

Zdziarski, Jonathan. Hacking and Securing iOS Applications:Stealing Data, Hijacking

Software, and How to Prevent It, Sebastopol, O’Reilly Media, Inc., 2012 с. 5-7 16

Dalrymple, Jim. Apple says 87% percent of its devices are running iOS

7.//www.loopinsight.com, 07.04.2014. <http://www.loopinsight.com/2014/04/07/apple-says-87-percent-of-its-devices-are-running-ios-7>(18.08.2014)

Page 20: Сигурност и защита на операционни системи за мобилни устройства

стр. 20 от 63

1.3 Android OS

Goole придобива стартъп компанията Android Inc. през 2005 година за

да започне разработката на платформата Android.

В края на 2007г. група водещи компании, работещи в областта на

мобилните комуникации се обединяват около платформата Android, като

формират Open Handset Alliance. Някои от най-известните членове на този

алианс са: Sprint Nextel, T-Mobile, Motorola, Samsung, Sony Ericsson, Toshiba,

Vodafone, Google, Intel, Texas Instruments.

В началото на 2008 г. Google пуска на пазара мобилно устройство с

названието Android Dev Phone 1, на което могат да се изпълняват Android

приложения. По същото време е реализирана Android OS 1.1.

Основа на Android платформата е Linux ядро, което отговаря за

драйверите на устройствата, достъпа до ресурсите, управлението на

енергопотреблението и други задачи на ОС. 17

Архитектура на Android ОС

Архитектурата на Android ОС (фиг. 1.4) представлява програмен стек

за мобилни устройства, който включва операционна система, програмно

осигуряване на междинния слой (middleware) и основни потребителски

приложения (e-mail клиент, календар, карти, браузър, контакти и др.)

Прието е арихитектурата на Android да се дели на четири слоя:

● слой на ядрото (Linux Kernel);

● слой на библиотеките и средата за изпълнение (Libraries и

Android Runtime);

● работна рамка на приложенията (Application Framework);

● слой на приложенията (Applications).

На фиг. 1.4 са показани основните компоненит на ОС Android и

взаимодействието между тях.

Слой на ядрото.

Ядрото представлява абстрактен слой между хардуера и останалата

17

Хашими, Сайед, Сатия Коматинени, Дейв Маклийн. Разработка приложений для Android.

Санкт Петербург, Питер, 2011, с. 27, с. 34-35

Page 21: Сигурност и защита на операционни системи за мобилни устройства

стр. 21 от 63

част на програмния стек. На този слой се намират основните услуги

(services) като управление на процесите, разпределение на паметта и

управление на файловата система. В ядрото на Android ОС съдържа

допълнителни разширения на Linux ядрото, като механизми за

разпределение на паметта,

взаимодествие между

процесите и др.

Основни компоненти

на слоя на ядрото са:

драйвер за управление на

взаимодействието между

процесите (IPC Driver);

драйвер за управление на

захранването (Android Power

Management); набор от

драйвери за специфичния

хардуер на мобилното

устройство, например

драйвери за WiFi, вградена камера, GPS и др.

Преимуществото на използването на Linux ядро като основа на

Android е в това, че ядрото позволява по-горните слоеве на програмния

стек да не се променят независимо от различията в използвания хардуер.

Слой на библиотеките

В този слой са включени набор от библиотеки на C/C++ като OpenGL,

WebKit, FreeType, SSL, libc, SQLite и библиотека за управление на

мултимедиийни устройства (Media Framework). Системната библиотека е

базирана на Berkley Software Distribution (BSD) и е разработена за мобилни

устройства работещи под Linux. Разработчиците получават достъп до тези

библиотеки и съответно до различните компоненти на ОС чрез Application

framework.

фигура 1.4 Архитектура на Android ОС [6]

Page 22: Сигурност и защита на операционни системи за мобилни устройства

стр. 22 от 63

Среда за изпълнение (Android Runtime)

Средата за изпълнение се осигурява от Dalvik виртуална машина

(DVM) и библиотеките на приложния програмен интерфейс (API), които се

явяват основна платформа за разработка на Java приложения за Andorid. С

използването на DVM се цели преодоляването на две основни ограничения

на мобилните устройва - относително кратък живот на батерията и малък

обем на памет.

Виртуалната машина Dalvik се отнася към регистровите машини

(регистрите на процесора се използват като първични модули за

съхранение на данните), които са изключително подходящи за работа с

процесори с RISC архитектура. Към тази група се отнасят процесорите

ARM, които се използват в мобилните устройства.

Слой на работната рамка на приложенията

На този слой се намират основните услуги на Andorid за управление

на жизнения цикъл на приложенията, пакети, ресурси и др. Към тези услуги

се отнасят:

● мениджър на дейностите (Activiti Manager) - управлява

жизнения цикъл на приложенията и предоставя система за навигация

по стека на дейностите;

● мениджър на пакетите (Package Manager) - управлява

инсталирането, деинсталирането и обновяването на пакетите

приложни програмни, които се намират на устройството;

● мениджър на прозорците (Window Manager) - управлява

прозорците на приложенията при навигация в приложенията;

● мениджър на ресурсите (Resource Manager) - управлява

достъпа до текстови, графични и други ресурси;

● доставчици на съдържание (Content Providers) - услуги,

които позволяват на приложенията да получат достъп до данните на

други приложения и да предоставят на външни приложения своите

данни;

● система на изгледите (View System) - система, която

служи за създаване на външния вид на приложенията включващ

Page 23: Сигурност и защита на операционни системи за мобилни устройства

стр. 23 от 63

компоненти като списъци, таблици, бутони, полета за въвеждане на

данни и много други;

● мениджър на телефонията - осигурява слоя API,

контролиращ основната телефонна информация като тип и статус на

мрежата, а също така предоставя различни инструменти за

управление на телефонните номера;

● мениджър на местоположението - навигационни услуги,

които позволяват на приложенията да получават периодични

обновления на данните за географското местоположение на

устройството или да стартират определено приложение;

● мениджър на уведомленията - позволява на всяко

приложение да показва потребителски уведомления в лентата на

състоянието на устройството.

Слой на приложенията

Мобилните устройства работещи под Android се предоставят за

ползване с набор от основни приложения, включително e-mail клиент,

програма за работа с SMS, календар, навигационни карти, браузър,

контакти и др.

Платформата Android не прави разлика между основните приложения

на устройството и външното програмно осигуряване. По този начин става

възможна замяната на ключови приложения, влизащи в стандартния набор

на програмното осигуряване с алтернативни приложения.18

Дистрибуции на Andorid ОС

Различните версии на Android ОС са именувани, като за кодови

названия са използвани наименованията на сладкарски изделия подредени

по азбучен ред. Изключение са само версии 1.0 и 1.1.

Основна отличителна характеристка на различните версии на Android

ОС е нивото на API. Нивото на API е цяло число, което идентифицира

версията на API предлагана от Andorid платформата. Всяка работна рамка

18

Голощапов, Алексей. Google Android программирование для мобильных устройств.

Санкт Петербург, БХВ-Петербург, 2011. с.17-24

Page 24: Сигурност и защита на операционни системи за мобилни устройства

стр. 24 от 63

на API съдържа:

● комплект от софтуерни пакети и класове на ядрото;

● комплект от XML елементи и атрибути използвани за

даклариране на манифест файла;

● комплект от XML елементи и атрибути използвани за

деклариране на ресурсите и получаване на достъп до тях;

● комплект от “Намерения” (Intents) - специфични обекти

използвани за комуникация между приложенията;

● комплект от разрешения които приложенията могат да

поискат, както и ограничения на разрешения, наложени от системата.

Ако дадено приложение първоначално е разработено за определено

ниво на API, то няма да работи на по-ранни версии на Android.19

Седем-дневно проучване сред потребителите на Google Play (фиг.

1.5) показва, че към 12.08.2014 относителните дяловете на различните

версии на Android ОС са разпределени по следния начин: версия 2.2 Froyo

(API 8) - 0,7%; версия 2.3.3-2.3.7 Gingerbread (API 10) - 13,6%; версия 4.0.3-

4.0.4 Ice Cream Sandwich (API 15) - 10,6%; версия 4.1.х Jelly Bean (API 16) -

26,5%; версия 4.2.х Jelly Bean (API 17) - 19,8%; версия 4.3 Jelly Bean (API 18)

- 7,9%; версия 4.4 KitKat (API 19) - 20,9%. Общият относителен дял на

версиите на Android ОС преди версия 2.2 е 1%. 20

фигура 1.5[17]

19

Shah, Sanjay, Khirulnizam Abd Rahman. Android Development Tools for Eclipse. Birmingham,

Packt Publishing Ltd., 2013. с.7 20

Dashboard. //developer.android.com. <

http://developer.android.com/about/dashboards/index.html> (18.08.2014)

Page 25: Сигурност и защита на операционни системи за мобилни устройства

стр. 25 от 63

Сигурност на Andorid ОС

Сигурност на Linux ядрото

Linux ядрото е използвано в продължение на десетилетия като

сигурна много-потребителска операционна система изолираща

потребителите един от друг. Android използва това свойство на Linux като

основа за сигурността на ОС Android. В този смисъл Android ОС може да

бъде разглеждана като много-потребителска платформа, в която всеки

потребител е приложение и всички приложения са изолирани едно от друго.

Linux ядрото осигурява механизъм за сигурни обръщения към външни

процедури (Remote Procedure Calls или RPC).

При инсталирането си на устройството, всяко приложение получава

уникален потребителски идентификатор (UID) и групов идентификатор

(GID). UID се използва за идентфициране на приложението през целия

период, за който то е инсталирано на устройството. На ниво Linux ядро

всяко приложение работи като отделен процес в собствен “пясъчник”. Това

се отнася както за Java приложенията, така и за нативните приложения

написани на C/C++.

Сигурност на Dalvik виртуалната машина (DVM).

При стартирането на дадено устройство се извиква процес наречен

Зигота (Zygote), който стартира DVM. При стартиране на приложение Зигота

процесът създава нова DVM. Така всяко приложение работи в отделна

виртуална машина.

Сигурност на приложенията

Разрешения по време на инсталиране

В Andorid ОС по време на инсталирането на дадено приложение се

прави преглед на разрешенията на приложението (фиг.1.6). Всички

разрешения, които изисква приложението трябва да бъдат декларирани в

неговия манифест файла. Разрешенията представляват позволения, които

приложението изисква от операционната система за да може да

функционира нормално. По време на инсталацията потребителят вижда

Page 26: Сигурност и защита на операционни системи за мобилни устройства

стр. 26 от 63

списък с всички разререшения, които изисква приложението. Така

потребителят може да направи информиран

избор - да инсталира приложението или не.

Дадено приложение може да изисква разрешение

за: установяване ва вашето местоположение по

GPS, достъп до интернет, вашите контакти,

инструментите за разработка, регистъра на

телефонните обаждания и др. (фиг. 1.6)

Подписване на приложенията

Всички приложения за Android са

самоподписани. Няма изискване приложенията

да се подписват с използването на сертифициращ орган.

Подписът на приложението асоциира приложението с автора. Ако

даден потребител инсталира няколко приложения написани от един автор е

необходимо тези приложения да бъдат асоциирани със същия подпис и да

имат включен флаг SHARED_ID в манифест файла за да имат възможност

да споделят данни помежду си.

При обновяване на дадено приложение се изисква и старата и новата

версия да използват един и същи подпис и да няма разширяване на

разрешения, които са дадени първоначално на приложението.

Съхраняване на данни в устройството.

Android осигурява различни решения за сигурно съхраняване на

данни. За примитиви като цели числа, логически дани, числа с плаваща

запетая и текстови низове, които са необходими по време на

потребителската сесия е най-добре да се използват данни споделен тип.

Тези данни се съхраняват като двойки ключ-стойност. Всички данни на

приложението се съхраняват заедно с него в “пясъчник”. Когато става дума

за голям обем данни е добре да се използва SQLite базата данни, която е

вградена в Android ОС.

Всички Android устройства позволяват на потребителите да монтират

външни устройства за съхраняване на данни като SD карти. Повечето

фигура 1.6 Разрешения при инсталиране на приложение

[24]

Page 27: Сигурност и защита на операционни системи за мобилни устройства

стр. 27 от 63

външни носители имат VFAT файлова система и Linux контролът върху

достъпа до данните не работи в този случай. Ето защо се препоръчва

чувствителните данни да се криптират преди да бъдат записани върху

външен носител.

В Android 2.2 (API 8) и следващите версии е възможно съхраняването

на приложения върху външни носители. Пакетът на приложението се

съхранява в криптиран контейнер наречен asec файл. За криптирането се

използва случайно генериран ключ, който се съхранява в паметта на

Android устройството.

При наличието на връзка с интернет и съответното разрешение,

данните на потребителите могат да бъдат съхранявани на отдалечени

сървъри, собственост на разработчика. Това се препоръчва особено, когато

става дума за чувствителна информация като банкови сметки и

подробности за транзакции.

Криптографски интерфейси за приложно прогргамиране (Crypto

APIs)

Android предоставя програмни интерфейси за: симетрично и

асиметрично криптиране на данни; генериране на случайни числа;

хеширане и различни режими на шифриране. Поддържаните алгоритми

включват DH, DES, RC2 и RC5.

За осигуряване на сигурен трансфер на данните се използва

комбинация от крипто интерфейсите с комуникационните протоколи SSL и

TLS.

С Adnroid 4.0 се въвежда API наречено “Ключодържател” (KeyChain),

което осигурява на приложенията достъп до съхранените ключове за

криптиране/декриптиране. Този интерфейс също така позволява

инсталирането на ключове от X.509 сертификати. Тези сертификати се

издават от Международния Телекомуникационен Съюз (International

Telecommunication Union) и регламентират стандарт за инфраструктурата

на публичен ключ (PKI) и инфраструктурата на управлението на

привилегиите (PMI). X.509 уточнява стандартни формати за сертификати на

публични ключове, списъците за отмяна на сертификати, сертификати на

Page 28: Сигурност и защита на операционни системи за мобилни устройства

стр. 28 от 63

атрибути и алгоритъм за проверка на пътя сертифициране.

Администриране на устройството.

С Andorid 2.2 за първи път се предоставя приложен програмен

интерфейс (Device Administration API), който позволява на потребителите и

IT специалистите да управляват устройства, които имат достъп до

корпоративни данни. Чрез този интерфейс е възможно налагането на

политики за сигурност на системно ниво, като отдалечено изтриване,

защита с парола и характеристики на паролата. Със следващите версии нa

Andorid функционалността на този интерфейс се разширява, като се

добавят възможности за изключване на камерата на устройството,

изискване за криптиране на устройството, допълнителни ограничения върху

паролите.

Администрирането на Andorid устройства става чрез инсталиране

приложения ползващи Device Administration API. След инсталирането на

приложението е необходимо да бъдат активирани политиките, които то

налага. Ако има инсталирани няколко приложения за администриране, то се

прилагат най-ограничаващите политики. Ограниченията се отменят при

деинсталиране на приложението.21

Едни от най-разпространените пробиви в сигурността на ОС за

мобилни устройства представляват приложения, които изпращат кратки

текстови съобщения (sms) до високо-тарифни номера. До версия KitKat (API

19) прихващането на изходящи съобщения е възможно само на устройство,

на което са получени root права. В противен случай изпращането на ктс

може да се установи само след като съобщението вече е изпратено.

Причината е, че изпращането на ктс става на такъв слой от работната

рамка, до който няма достъп от слоя на приложенията.

С пускането на пазара на Android ОС 4.4 KitKat се въвежда нов ППИ,

който променя начина на изпращане и получаване на ктс. Въвежда се нов

доставчик на съдържание - Telephony content provider, който позволява на

приложенията за четат и записват ктс и мултимедийни съобщения на

21

Rai, Pragati. Android Application Security Essentials:Write secure Android applications using

the most up-to-date techniques and concepts. Birmingham, Packt Publishing, 2013. с.9-16

Page 29: Сигурност и защита на операционни системи за мобилни устройства

стр. 29 от 63

устройството.

Системните настройки позволяват на потребителите да избират

приложение по подразбиране, което да обработва кратките текстови

съобщения. След като бъде избрано, само това приложение има право да

изпраща ктс и да приема известия при получени ктс и мултимедийни

съобщения.22

22

Android 4.4 APIs. //developer.android.com.

<https://developer.android.com/about/versions/android-4.4.html> (20.08.2014)

Page 30: Сигурност и защита на операционни системи за мобилни устройства

стр. 30 от 63

Глава 2. Инструментариум

2.1. Език за програмиране Java

Програмната платформа Java представлява пакет с програми, които

позволяват разработването и изпълнението на софтуерни приложения

написани на езика за програмиране Java. Eзикът за програмиране Java,

който е част от Java-платформата e обектно-ориентиран език със синтаксис

близък до този на С/С++. Първата му версия е разработена и реализирана

от Sun Microsystems през 1995. Софтуерната платформа и включеният в

нея език за програмиране Java са преминали през множество подобрения.

Последната официална версия е Java 8 update 20 (Java 1.7.0_45)

реализирана през август 2014г.23

Отличителна особеност на езикът Java е, че той не е разработена за

конкретен хардуер или операционна система. Механизмът на изпълнение

на приложенията позволява след като бъде написана на Java дадена

програма да бъде стартирана на различки хардуерни платформи с

различни операционни системи, без да се налагат никакви промени в

изходния код.

Това се постига, като

изходният код на програмата се

компилира до специален

междинен език наречен байткод

(bytecode), който се записва като

файл с разширение .class. След

това байткодът се изпълнява на

Java Virtual Machine, която го

обработва като интерпретатор

на езика. (фиг. 2.1)

23

Oracle Technology Network for Java Developers

<http://www.oracle.com/technetwork/java/index.html> (22.08.2013)

фигура 2.1 Изпълнение на Java приложение

Page 31: Сигурност и защита на операционни системи за мобилни устройства

стр. 31 от 63

Друга важна особеност на Java технологията е гъвкавата система за

сигурност, тъй като изпълнението на програмите изцяло се контролира от

виртуалната машина. Всички операции, които превишават определените

права на дадена програма (например опит за достъп до данни на други

приложения или опит за връзка с друг компютър) водят до моменталното й

прекъсване.

Съществуват няколко основни варианта на Java-технологията:

● Java SE - Java Standart Edition - стандартна версия,

съдържа компилатори, API, Java Runtime Environment. Използва се

главно за създаване на потребителски приложения за настолни

системи;

● Java EE - Java Enterprise Edition - подходяща за

разработка на корпоративни приложения. Включва всичко от Java SE.

Поддържа HTTP сървър и Servlet контейнер за разработка на уеб

приложения;

● Java ME - Java Micro Edition - предвидена за използване в

устройства с ограничен обем памет, диагонал на екрана и заряд на

акумулатора, като мобилни телефони, цифрови приемници и други

преносими устройства;

● Java FX - използва се за разработване на интернет-

приложения. Дава възможност за използване на всякакви Java

библиотеки в интернет приложения работещи по един и същи начин

на различни хардуерни конфигурации.

● Java Card - най-олекотената версия на Java-платформата.

Дава възможност за стартиране на Java аплети на смарткарти и други

подобни устройства с изключително ограничени памет и

изчислителна мощ, като например SIM картите използвани в

мобилните телефони. За целта е разработена отделна виртуална

машина Java Card Virtual Machine.

За недостатък на Java-платформата се счита това, че изпълнението

на байткод на виртуална машина може да понижи производителността на

Page 32: Сигурност и защита на операционни системи за мобилни устройства

стр. 32 от 63

програми и алгоритми написани на езика Java. За справяне с този проблем

се прилагат следните решения:

● Компилиране на байткод до машинен код в ключови

участъци от програмата, които могат да доведат до забавяне на

изпълнението й - Just In Time (JIT) технология;

● хардуерна технология осигуряваща ускорена обработка

на байткода (например технологията Jazelle DBX (Direct Bytecode

eXecution), поддържана от някои ARM процесори);

● широко използване на платформено-ориентиран код в

стандартните библиотеки.

Минималният софтуерен пакет, който е необходимо да бъде

инсталиран на определено устройство за да могат да бъдат изпълнявани

Java програми включва само Java Virtual Machine и библиотеки със

стандартните Java класове. Общото наименование на пакета е Java

Runtime Environment (JRE). В JRE не са включени компилатор на Java или

други средства за разработка на приложения.

2.2. Среда за разработка

Езикът Java широко се използва за разработка на мобилни

приложения работещи под Android OS. Минимално необходимият за

разработване на приложения за мобилни телефони софтуерен пакет

включва:

● Java Development Kit (JDK) - програмен пакет включващ:

компилатор на Java, стандартни библиотеки на Java класове,

примери, документация, различни инструменти и средата за

изпълнение Java Runtime Environment. В JDK няма включена

интегрирана среда за разработка.

● Android Software Development Kit (Android SDK) - пакет

програми за разработка на приложения за Android OS. Пакетът

включва: примерни проекти заедно с изходните им кодове, емулатор,

стандартни библиотеки и множество софтуерни инструменти.24

24

Android SDK <http://developer.android.com/sdk/index.html> (29.12.2013)

Page 33: Сигурност и защита на операционни системи за мобилни устройства

стр. 33 от 63

Възможно е приложения за Android да бъдат създавани без

интегрирана среда за разработка, но не се препоръчва. Най-популярната

среда за разработка на Java приложения за Andorid OS е Eclipse IDE в

комбинация с приставката Android Development Tools (ADT).

Предимството на тази комбинация е, че ADT се поддържа официално от

Google.

Eclipse IDE

Интегрираната среда за разработка (Integrated Development

Environment, IDE) Eclipse представлява комплексна платформа за

инструменти за разработка на различни типове проекти. Основа за

разработването на Eclipse е поддържаната от IBM среда за разработка

VisualAge for Java Micro Edition. През 2001 ръководството на IBM решава да

продължи разработката на Eclipse съгласно лиценза за софтуер с отворен

код и заедно с още осем организации създава консорциумът Eclipse.

Основният прицип на работа на този консорциум е да управлява

маркетинга и връзките на платформата и да остави контрола над изходния

код на общността на разработчиците. През 2004 фондация Eclipse -

неправителствена организация със собствен професионален и независим

екип получава пълен контрол над платформата Eclipse.

Ключът към успеха на Eclipse IDE е нейната уникална разширяема

архитектура, която дава възможност за вграждане на приставки

разработени от трети страни. Благодарение на тази възможност,

платформата се използва като среда за разработка на проекти, както на

Java така и на много други езици, като C/C++, PHP и др. Eclipse IDE може да

бъде изтеглена от адрес:

https://www.eclipse.org/downloads/

Структурата на платформата Eclipse (фиг. 2.2) е подчинена на

концепцията, чрез добре дефинирани правила и механизми за управление

на софтуерни приставки да направи възможно изграждането на различни

среди за разработка.

Page 34: Сигурност и защита на операционни системи за мобилни устройства

стр. 34 от 63

фигура 2.2 Архитектура на Eclipse IDE [14]

Най-малките градивни единици на платформата са приставките. Те

представляват софтуерни пакети, които добавят различни

функционалности. Приставките могат да бъдат разработвани,

разпространявани и инсталирани индивидуално. Eclipse платформата

позволява приставките също да бъдат разширями. Всяка подсистема на

платформата е базирана на пакет от приставки. Например Java

Development Tools for Eclipse е пакет от приставки, които осигуряват на

платформата възможност за разработка на приложения на езика Java.

Пакетът Android Development Tools, от своя страна разширява Java

Development Tools for Eclipse със специфични инструменти за разработка на

приложения за Android.

Работно пространство (Workspace)

Работното пространство за Eclipse преставлява директория, където

се съхраняват проекти, изходен код и настройки на платформата.

Възможна е работа в няколко работни пространства които да бъдат с

различна организация - например работно пространство със служебни

проекти и работно пространство за проекти за свободното време.

Работен плот (Workbench)

Работният плот (фиг. 2.3) съдържа комплект от Eclipse переспективи,

Page 35: Сигурност и защита на операционни системи за мобилни устройства

стр. 35 от 63

техните изгледи, редактори, менюта и ленти с инструменти.

Конфигурацията на работния плот се настройва по различен начин в

зависимост от типа на проекта.

Переспективите дефинират пакет от изгледи и тяхното разположение

по работния плот. Всяка переспектива е създадена по начин улесняващ

изпълняването на контретна задача. Например: Java perespective

представлява комбинация от изгледи, менюта и ленти с инструменти най-

често използвани за разработка на Java приложения.

Редактори (Editors)

Редакторите се използват за редактиране на изходния код и на

ресурсните файлове. Eclipse поддържа множество редактори, в зависимост

от типа на редактирания файл. Например за редактиране на изходен код и

XML ресурсен файл се използват различни типове редактори (фиг.2.4).

Ако платформата не може да открие вграден редактор за определен

тип файл, тя разчита на операционната система да предложи външен

редактор.

фигура 2.3 Работен плот на Eclipse IDE [14]

Page 36: Сигурност и защита на операционни системи за мобилни устройства

стр. 36 от 63

фигура 2.4 Редактори в Eclipse IDE [14]

Изгледи (Views)

Изгледите осигуряват алтернативно представяне на проекта

улеснявайки навигацията и достъпа до информация на работния плот.

Изгледите имат собствени ленти с инструменти и менюта вградени в

областта на изгледа.

Различните изгледи са достъпни чрез менюто Window->Show view

(фиг. 2.5)

Някой от най-

използваните изгледи са:

● Type Hierachy

View - специфичен Java

изглед, който показва

подтиповете и супертиповете

на определен Java обект.

Улеснява установяването на

йерархията на типовете и

навигиране по нея;

● Call Hierachy View - специфичен Java изглед показващ

извикващите и извикваните методи свързани с Java обект. Позволява

установяването на йерархията на обръщенията в програмния код;

● Problems View - обединява в един журнален списък

фигура 2.5 Изгледи в Eclipse IDE [14]

Page 37: Сигурност и защита на операционни системи за мобилни устройства

стр. 37 от 63

проблеми, грешки и предупреждения. Предлага решения за

отстраняване на установените проблеми.

Помощ при въвеждане (Content Assist)

Запомнянето на имената на всички методи на всички класове, може

да бъде трудно при работа с API разработени от трети страни или при

разработването на сложни проекти. Функицията на Eclipse Content Assist

приготвя списък с предложения използвайки първата дума от лявата страна

на курсора. Активирането на тази функция става автоматично след

натискане на знака точка “.” или ръчно с клавишната комбинация

Ctrl+space.25

Приставка Android Development Tools (ADT)

Приставката ADT разширява възможностите на Eclipse като дава

възможност на разработчиците да изпълняват следните задачи:

● Бързо започване на разработката на нов Android проект;

● Визуален дизайн на потребителски интерфейс;

● Достъп до компонентите на работната рамка Android;

● Отладка, тестване и публикуване на Android приложения.

ADT може да бъде инсталирана чрез помощника на Eclipse за

добавяне на приставки от менюто Help->Install New Software. За да бъде

използваема тази приставка е небходимо да бъде инсталирана средата за

разработка Android SDK

Android SDK

Android SDK представлява пакет от инструменти за разработка на

Android приложения, включително: приложение за изготвяне на Android

пакетни файлове, отладчик, емулатор и подробна документация. Android

SDK може да бъде изтелена от адрес:

http://developer.android.com/sdk

Инструментите за разработка и отладка на приложения част от

Android SDK се намират в папката “инсталационна папка”\sdk\tools.

25

Cinar, Onur. Android Apps with Eclipse. New York, Apress, 2012. с. 43-70

Page 38: Сигурност и защита на операционни системи за мобилни устройства

стр. 38 от 63

Инструменти на Android SDK

Мениджър на Android SDK

(фиг. 2.6) - стартира се от менюто Window->Android SDK Manager или

в конзолен режим с командата android.bat. Използва се при инсталиране,

обновяване и деинсталиране на версии на Android API, разширения и

документация.

Мениджър на виртуални устройства Android (Android Virtual

Device, AVD)

Мениджърът на AVD (фиг. 2.7) се използва за създаване, настройка и

изтриване на Андроид виртуални устройства. Той може да бъде стартиран

в Eclipse, меню Window->Android Virtual Device Manager. След това се

натиска бутонът New, намиращ се в дясната част на панела List of existing

Android Virtual Devices.

фигура 2.6 Android SDK мениджър [14]

Page 39: Сигурност и защита на операционни системи за мобилни устройства

стр. 39 от 63

фигура 2.7 Менидър на AVD[14]

Отваря се диалогов прозорец, в който се задават параметрите на

новото виртуално устройство (фиг. 2.8).

Необходимите данни са:

● Name - име на виртуалното устройство. Може да съдържа

главни и малки латински букви, цифри, “.”, “-” и “_”.

● Device - падащ списък с предварително подговени имиджи

на виртуални устройства.

● Target - падащ списък за ниво на интерфес за приложни

програми (API Level)

● CPU/ABI- падащ списък за избор на процесор/архитектура

на виртуалното устройство. За някои устройства от полето Device е

възможно да бъде избрана различна архитектура.

○ ABI (Application Binary Interface) е спецификация за

конкретна хардуерна платформа комбинирана с операционната

система. Това е една стъпка отвъд интерфейс за приложни

програми (API), който определя обръщенията от приложението

към операционната система. ABI определя API плюс машинния

език за конкретна фамилия CPU.26

26

ABI - Computer Definition <http://www.yourdictionary.com/abi> (06.01.2013)

Page 40: Сигурност и защита на операционни системи за мобилни устройства

стр. 40 от 63

● Keyboard - ако полето е отметнато, при въвеждане на

данни се използва клавиатурата на комппютъра.

● Skin - определя външния вид на представянето на

виртуалното устройство на екрана на компютъра.

● Front Camera - възможност за емулиране на камера на

лицевата част на виртуалното устройство.

● Back Camera - възможност за емулиране на камера на

задната част на виртуалното устройство.

● Memory Opions

○ RAM - обем на RAM паметта на виртуалното

устройство.

○ VM Heap - обем на хийпа на виртуалното

устройство.

● SD Card - емулиране

на външна памет на

виртуалното устройство. Може

да се зададе в мегабайти или

гигабайти или да се избере

файл.

● Emulation Opitions -

допълнителни настройки на

емулатора

○ Snapshot - при

спиране на виртуалното

устройство се запазват всички

настойки и при последващо

стартиране се започва от същото

място

○ Use Host GPU - дава

възможност за използване на

хардуерна OpenGLES емулация.

Подходящо е при създаване на

фигура 2.8 Създаване на виртуално устройство

[14]

Page 41: Сигурност и защита на операционни системи за мобилни устройства

стр. 41 от 63

виртуални устройства, за които се знае, че реалните имат

собствени графични процесори.

След конфигурирането на виртуалното устройство, то може да

бъде стартирано (фиг. 2.9)

Intel HAXM

Една от съществените

характеристики при използването на

виртуални устройства Android е

тяхното бързодействие. Обикновено

стартирането на виртуално устройство

става за около 3-4 минути.

Изполването на Intel® HAXM

значително ускорява този процес.

Intel Hardware Accelerated

Execution Manager (Intel® HAXM)

представлява хардуерно поддържана виртуална машина (хипервайзор),

която използва виртуализационната технология на Intel (Intel® VT) да

ускори емулациата на Android виртуално устройство. В комбинация с

Android x86 имидж файлове за Android емулатор и официалният софтуер за

разработка на Android приложения Intel HAXM позволява ускорена

емулация при системи поддържащи Intel VT. Разработени са версии за

следните платформи:

● Microsoft Windows - Windows 8 and 8.1 (32/64-bit), Windows

7 (32/64-bit), Windows Vista (32/64-bit);

● Mac OS X - Mac OS X 10.6 (32/64-bit) or 10.7 (32/64-bit) or

10.8 (64-bit) or 10.9 (64-bit);

● Linux - Ubuntu (64-bit).27

27

Haoren J. Intel® Hardware Accelerated Execution Manager. // software.intel.com

<https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager>(22.8.2014)

фигура 2.9 Виртуално устройство Android

Page 42: Сигурност и защита на операционни системи за мобилни устройства

стр. 42 от 63

Android конзола (Android console)

Контролът на виртуалното устройство чрез мишката и клавиатурата

позволяват на потребителя да изпълнява набор от стандартни действия, но

това не му дава възможност да контролира хардуерни функции, като

например свързаност с мрежата. Android конзолата осигурява интерфейс,

позволяващ управление на емулатора и неговите хардуерни функции.

Възможна е паралелната работа на няколко емулатура на един компютър.

На всеки емулатор се присвоява уникален номер на порт в интервала 5554-

5584. Този номер се изписва в заглавната лента на прозореца на

емулатора.

Емулаторът следи този порт за да осигури достъп до Android

конзолата. Връзката към нея се осъществява с telnet клиент по TCP, като се

указва порта на конкретния емулатор. Например telnet localhost 5554. След

осъществяване на връзката потребителят получава достъп до команден

режим, в който с текстови команди може да управлява хардуерните

фунцкии на емулатора или да имитира настъпването на външни събития,

като телефонно обаждане,

входящ SMS и др (фиг. 2.10).

Dalvik Debug Monitor

Server (DDMS) (фиг.2.11)

представлява инструмент

интегриран с Dalvik Virtural

Machine. Стартира се от

менюто Window->Open

Perspective->DDMS. Позволява

управлението на процесите в

емулатора или устройството и също така помага в отладката на

приложенията. Може да бъде използван за спиране на процеси, избор на

отделен процес за отладка, генериране на данни за проследяване на даден

процес, мониторинг на използваната памет на мобилното устройство,

създаване на скрийншот на емулатор или устройство и др.

фигура 2.10 Android конзола[14]

Page 43: Сигурност и защита на операционни системи за мобилни устройства

стр. 43 от 63

фигура 2.11 Dalvik Debug Monitor Server[14]

Android Debug Bridge (adb)

Android Debug Bridge представлява инструмент, който може да бъде

използван самостоятелно в козолен режим (команда adb) или като част от

DDMS. ADB позволява управлението виртуални устройства и на физически

устройства свъзани с USB кабел. ADB се състои от три различни

компонента:

● Клинентско приложение, старирано на машината на

разработчика с помощта на командата adb;

● Сървър, работещ също на компютъра на разработчика.

Той работи във фонов режим и отговаря за свързването на

програмата ADB и всяко включено устройство или емулатор;

● услуга ADB, работеща като фонов процес на всяко

физическо или виртуално устройство. ADB сървърът използва тази

услуга за свързване с устройството.

С помощта на ADB може да бъде получен списъка на всички

включени към ADB сървъра устройства и емулатори. Това става с помощта

на командата:

Page 44: Сигурност и защита на операционни системи за мобилни устройства

стр. 44 от 63

adb devices

Резултатът е списък на всички включени към компютъра реални и

витруални устройства и съответстващите им серийни номера:

List of devices attached

43423531315031554150 device

emulator-5554 device

Серийният номер на устройството се използва за изпълнението на

последващи команди, като например инсталиране на приложение.

Командата:

adb - s emulator-5554 myapp.apk

инсталира приложението myapp.apk на устройство със сериен номер

emulator-5554.

Ако към ADB сървъра има включено само едно устройство серийният

номер може да буде пропуснат.

Hierarchy Viewer (фиг 2.12) представлява визуален инструмент, който

позволява отстраняване на грешки и оптимизиране на потребителския

интерфейс. Стартира се с командата hierarchyviewer.bat. Показва визуална

структура на йерархията на класовете View, анализира бързодействието на

обновяването на графичните изображения на екрана и може да изпълнява

още много други фукнции за анализ на графичния интерфейс на

фигура 2.12 Hierarchy Viewer[14]

Page 45: Сигурност и защита на операционни системи за мобилни устройства

стр. 45 от 63

приложенията.

Draw 9-patch (фиг 2.13) - графичен редактор, който се използва за

създаване на Nine-Patch изображения, които се използват в интерфейса на

разработваните приложения. Стартира се с командата draw9patch.bat. Nine-

Patch (или 9-patch) изображението представлява гафичен файл, аналогичен

на файловете във формат .PNG, който притежава служебна рамка с

дебелина 1 пиксел. Тази рамка не се променя при мащабиране на файла.

Посоченият формат се използва за създаване на фонови изображения за

елементите на управление - бутони, текстови полета и др. Файловете с

Nine-Patch графика имат разширение *.9.png

sqlite3 - инструмент, работещ в конзолен режим за достъп до SQLite

файлове създавани и използвани от Andorid приложения. Стартира се с

командата sqlite3.exe

mksdkard - инструмент за създаване на имидж диск, който може да

бъде използван в емулатора за симулация наличието на външна памет

(например SD карта). Стартира се с командата mksdcard.exe. Работи в

конзолен режим28.

28

Голощапов, Алексей. Google Android: Создание приложений для смартфонов и

планшетных ПК. Санкт-Петербург, БХВ-Петербург, 2013, с. 41-42

фигура 2.13 Nine-Patch[1]

Page 46: Сигурност и защита на операционни системи за мобилни устройства

стр. 46 от 63

2.3 Андроид приложения

Android приложенията се разпространяват в информационен пакет -

Application Package Format .apk файл. APK файлът по същество е ZIP файл

форматиран в JAR файлов формат. В APK файла се съхраняват

компонентите на приложението, файл с политики на приложението

(манифест) и ресурсите на приложението.

Компоненти на Android приложенията

Приложенията на Adnroid се изграждат следвайки архитектура

“Модел-Изглед-Контролер” или MVC (Model-View-Controller). Съгласно

принципите на MVC, всеки обект на приложението се причислява към една

от трите категории: обект на модела, обект на изгледа или обект на

контролера.

● Обектите на модела съдържат данните на приложението

и бизнес-логиката. Класовете на модела обикновено се проектират за

моделиране на същности, с които приложението работи - потребител,

продукт в магазина, изображение съхранявано на сървър и др.

Тяхната единствена цел е съхранение и управление на данни. Те

нямат пряка връзка с потребителския интерфейс. Взети заедно

всички обекти на модела съставят слоя на модела.

● Обектите на изгледа се изобразяват на екрана и реагират

на въздействието на потребителя - например докосване, приплъзване

и др. Обектите на изгледа в приложението образуват слоя на изгледа.

● Обектите на контролера свързват обектите на изгледа и

обектите на модела. Те съдържат логиката на приложението.

Контролерите реагират на различни събития инициирани от обектите

на изгледа и управляват потоците от данни между обектите на

модела и слоя на изгледа.

На фиг. 2.14 е показано предаването на управлението между

обектите в резултат на настъпило събитие - например потребителят е

натиснал бутон. От фигурата става ясно, че обектите на модела и на

Page 47: Сигурност и защита на операционни системи за мобилни устройства

стр. 47 от 63

изгледа не си взаимодействат директно. Във всяко тяхно взаимодействие

участват “посредници” - контролери, получаващи съобщения от едни обекти

и предаващи инструкции на други.

Разделянето на класовете на дадено приложение на слоевете модел,

изглед и контролер опростява проектирането и разбирането на

приложението. Също така се улеснява повторното използване на

класовете.29

Всяко Android приложение е създадено като

стек от компоненти. Всеки компонент сам по себе

си представлява автономен субект към който

може да се правят обръщения както от други

компоненти в приложението, така и от външни

приложения. Този вид структура насърчава

споделянето на компонентите. На фиг. 2.15 са

показани четирите вида компоненти, от които се

състои Android приложението: дейности (Activity),

услуги (Service), приемници на обща информация (Broadcast Receiver) и

доставчици на съдържание (Content Provider).

29

Харди, Брайан, Билл Филлипс. Программирование под Android. Для профессионалов.

Санкт Петербург, Питер, 2014. с. 55-57

фигура 2.14 Модел-Изглед-Контролер[5]

фигура 2.15 Android приложение

[24]

Page 48: Сигурност и защита на операционни системи за мобилни устройства

стр. 48 от 63

● Компонентът “дейност” обикновено е част от

потребителския интерфейс на приложението. Това е компонент, който

взаимодейства с потребителя, например диалогов прозорец, в който

се въвеждат потребителско име и парола. Обикновено приложенията

имат множество дейности и потребителите могат да навигират между

тях.

● Компонентът “услуга” се грижи за процесите, които

работят във фонов режим. Този компонент няма потребителски

интерфейс. Услугите са подходящи за действия, които е необходимо

да бъдат извършени, независимо от това, което се случва на екрана

на устройството. Например сканиране за вируси във фонов режим.

Когато се изпълнява услуга отнемаща повече време е желателно тя

да бъде стартирана в като отделна нишка.

● Компонентът “приемник на обща информация” е като

пощенска кутия, която получава съобщения от Android ОС или от

други приложения. Приемниците на обща информация нямат

визуално представяне, нито се изпълняват активно в паметта. Когато

настъпи отпределено събитие те изпълняват някакъв код, като

стартиране на дейност или услуга. Например, след като Android ОС

приключи зареждането създава “намерение” наречено

BOOT_COMPLETED. Компонентите на приложението могат да се

регистрират за следене на тази информация в манифест файла.

● Компонентът “доставчик на съдържание” представлява

хранилището за данни на приложението. Приложението може да

сподели тези данни с други компоненти на Android ОС. Доставчиците

на съдържание са подходящи за обмен на сравнително голям обем от

данни. Например Contacts Provider предоставя данните за всички

контакти на потребителя на множество приложения.

Описаните компоненти комуникират помежду си чрез “намерения”

(Intets). Намерението представлява механизмът на Android за асинхронна

комуникация между процесите (inter-process communication, IPC).

Компонентите създават намерение за някакво действие и получаващият

Page 49: Сигурност и защита на операционни системи за мобилни устройства

стр. 49 от 63

компонент го обработва. Съществуват отделни механизми за доставяне на

намерения към всеки отделен тип компонент. По този начин намеренията

за дейности се получават само от компоненти от тип дейност, а общо-

информационните намерения се получават от приемниците на обща

информация. Освен това намеренията могат да бъдат експлицитни или

имплицитни. Експлицитните намерения изрично указват, кой конктретно

компонент трябва да обработи намерението. При имплицитните намерения

изпращача указва само типа на получателя. В случай на конкуриращи се

приложения системата дава възможност на потребителя да избере

приложението, което да обработи събитието. Намеренията включват в себе

си пакет информация наречен обект-намерение (Intent object), който се

използва от получаващия компонент за извършване на подходящата

обработка.30

Манифест файл

Всички Android приложения се нуждаят от манифест файл. Този файл

трябва винаги използва името AndroidMafest.xml и да се намира в

основната папка на приложението. В манифест файла се декларират

компонентите на приложението, техните права за достъп, библиотеки,

функции и минималната версия на API, с която приложението може да

работи.31

На първия ред на манифест файла се обявява версията на XML и

използваната кодировка. Най-често използваните тагове в

AdroidManifest.xml са:

<manifest> </manifest> Съдържа параметрите:

● package= “наименовение на пакета” - указва пакета, в

който по подразбиране се намират модулите на приложението;

● android:versionCode - произволно число, указващо номера

на версията на Android приложението. Всяко приложение трябва да

съдържа код на версията и този код трябва да е с по-голям номер във

30

Rai, Pragati. Android Application Security Essentials:Write secure Android applications using

the most up-to-date techniques and concepts. Birmingham, Packt Publishing, 2013. с.12-14 31

Rai, Pragati. Android Application Security Essentials:Write secure Android applications using

the most up-to-date techniques and concepts. Birmingham, Packt Publishing, 2013. с. 61

Page 50: Сигурност и защита на операционни системи за мобилни устройства

стр. 50 от 63

всяка нова версия.;

● android:vesrionName - обикновено се използва за

номерация на версиите на приложението, например 1.0.3. Този

индикатор вижда потребителя, при инсталиране на приложението;

● uses-permission android:name=... използва се за описване

на такива функции на приложението, които изискват явно разрешение

от страна на потребителя за тяхното прилагане на локалното

устройство, на което работи приложението. Например разрешението

ACCESS_FINE_LOCATION дава право на приложението да получава

информация за точното местоположение на устройството от GSP

датчика;

<application></application>

● label - наименование на приложението;

● icon=”@drawable/icon” - име на графичен файл във

формат .PNG, съдържащ изображението, което се използва като

икона на прилежението на началния екран на устройството;

<activity></activity>

● android:name - наименование на класа на дейността

(Activity). В пълното название на дейността влиза името на пакета на

приложението, но тъй като този файл се използва в контекста на

приложението, указването на името на пакета не е необходимо;

● android:label - нименование, което се изписва в горната

част на екрана на устройството, по време на изпълнение на

конкретната дейност.

● intent-filter - деклариране на филтър на намерения,

съобщаващ на Android, кога трябва да бъде стартитана дадената

дейност (Activity). Когато приложението прави заявка за изпълнение

на намерение (Intent), операционната система проверява

окръжаващата среда за достъпни дейности (Activity) и услуги

(Service), които могат да обработят заявката за да им я предаде.

<provider> декларира доставчик на съдържание. Указва се името на

класа на доставчика на съдържание и източниците, които той трябва да

Page 51: Сигурност и защита на операционни системи за мобилни устройства

стр. 51 от 63

използва.

<service> позволява на приложението да обяви, че поддържа

определена услуга. Посочват се името на класа на услугата и нейното

название, което е във формат за четене от потребителя.

<receiver> декларира, че приложението поддържа приемник на

общо-информационни съобщения. Указват се името на класа на приемника

и неговото название във формат за четене от потребителя.32

Ресурсен файл на приложението

Освен изпълнимия код в инсталационния пакет на приложението се

съхраняват данни свързани с неговото поведение по време на работа. Тези

данни могат да бъдат:

● изображения, които да се изведат на екран;

● текстови низове със съобщения на различни езици, когато

приложението поддържа многоезичен интерфейс;

● цвят и наименование на шрифт, който трябва да се

използва.

Тези данни се наричат ресурси на приложението. Всички ресурси

образуват контекста на приложението. Android предоставя достъп до

контекста чрез класа Context. Всички дейности и услуги имат достъп до

данните на класа Context чрез указателя this.

В Android приложенията всички ресурси на потребителския

интерфейс се разполагат в папка res. Обикновено в тази папка се съдържат

не по-малко от четири поддиректории:

● layout - съдържа XML файлове описващи разположението

и външния вид на обектите от интерфейса на приложението.

Например цвят и подреждане на бутоните на екрана;

● drawable - съдържда графични обекти. В папката drawable

има подпапки съдържащи графични обекти за устройства за различна

разделителна способност. Например drawable-hdpi се използва от

32

Медникс, Зигард, Лайрд Дорнин, Блейк Мик и др. Программирование под Android. Санкт

Петербург, Питер, 2013. с. 110-112

Page 52: Сигурност и защита на операционни системи за мобилни устройства

стр. 52 от 63

приложението, когато работи на устройство с резолюция 240 dpi, a

drawable-mdpi се използва при устройства с резолюция на екрана 160

dpi. Обиновено папките съдържат едни и същи изображения с

различни размери;

● raw - съдържа файлове, които могат да бъдат четени в

поточен режим по време на изпълнение на приложението.

● values - включва стойности, които приложението зарежда

по време на работа. Например във файла strings.xml се съдържат:

имена на бутони, етикети, текстове по подразбиране и др.

Приложенията получават достъп до ресурсите в тези папки ползвайки

метода Context.getResources() или класа R. Класът R се генерира

автоматично и съдържа указатели, които позволяват на Java да получи да

получи достъп до ресурсите на приложението по време на работа. Класът R

се изгражда наново при всяка промяна в ресурсите на приложението.

Разделянето на ресурсите от програмния код позволява да се правят

промени в изгледа на приложението без да се променя сорс кода. 33

33

Медникс, Зигард, Лайрд Дорнин, Блейк Мик и др. Программирование под Android. Санкт

Петербург, Питер, 2013. с. 108-109

Page 53: Сигурност и защита на операционни системи за мобилни устройства

стр. 53 от 63

Глава 3. Проектиране на приложение за управление на

кратки текстови съобщения за устройства работещи под

Android ОС 4.4 KitKat

Предназначението на приложението MessengerUC е да повиши

нивото на сигурност на мобилни устройства работещи под Android ОС 4.4

KitKat или следваща версия, като контролира изходящите кратки тестови

съобщения.

Нуждата от подобно приложение се основава на следните причини:

Потребителите често не обръщат внимание на разрешенията,

които дават при инсталиране на дадено приложение, в резултат

на което инсталират приложения, които изпращат ктс без тяхно

участие;

Потребителите използват чужди устройства (служебни или

взети за временно ползване) за да участват в различни игри

изискващи изпращането на ктс, които се таксуват много скъпо;

Има мобилни оператори, чиито услуги не позволяват

блокирането на изходящи текстови съобщения.

3.1 Дизайн

Модули и функции на приложението

Приложението се състои от следните модули:

Административен модул;

Модул управляващ изходящите ктс;

Модул следящ входящите ктс;

Модул управляващ разговорите.

Функциите на тези модули са следните:

Административен модул

Стартира се от потребителя, от начален екран на устройството, на

което е инсталиран. Този модул позволява:

● Задаване на ниво на сигурност и прилагането му на

локално или отдалечено устройство;

Page 54: Сигурност и защита на операционни системи за мобилни устройства

стр. 54 от 63

● Създаване и редактиране на списък с разрешени номера.

Разрешените номера могат да се въвеждат ръчно или да се изберат

от контактите в устройството;

● Създаване и редактиране на списък със забранени

номера. Забранениете номера могат да се въвеждат ръчно или да се

изберат от контактите в устройството;

● Промяна на телефонния номер на администратора;

● Промяна за паролата на администратора;

Административният модул се използва за управление, както на

локално, така и на отдалечено устройство. Управлението на

отдалеченото устройство става чрез изпращане на ктс съдържащо

съотвените команди.

Модул следящ изходящите ктс

Модулът следящ изходящите ктс работи като услуга и се стартира от

системата при настъпване на събитие “изпращане на ктс”.

Предназначението му е да приложи нивото на сигурност зададено

чрез административния модул. Този модул следи всички изходящи ктс. Ако

номерът на получателя на ктс е в списъка със забранените номера, то

изходящото ктс автоматично се блокира и приложението съобщава на

потребителя за това събитие.

Ако съобщението се изпраща от друго приложение, модулът

временно спира процеса на изпращане и съобщава на потребителя за

събитието, като му дава избор дали да продължи изпращането или да го

прекрати.

Като допълнителна мярка за сигурност модулът проверява, дали

номерът на получателя е в списъка с контактите на потребителя. Този

режим на работа се основава на предположението, че ако на устройство

има инсталиран злонамерен софтуер, който се опитва да изпрати ктс до

високо-тарифен номер, то този номер няма да фигурира в списъка с

контакти на потребителя.

Page 55: Сигурност и защита на операционни системи за мобилни устройства

стр. 55 от 63

Модул следящ входящите ктс

Този модул се използва при отдалечено администриране на

приложението.

Модулът следящ входящите ктс работи като услуга и се стартира от

системата при настъпване на събитие “получаване на ктс”.

Предназначението му е да провери дали ктс съдържа команден низ

изпратен към приложението. При наличието на такъв низ модулът прилага

командата и издава съобщение. При отсъствие на команден низ модулът

предава управлението на модула управляващ разговорите без да извършва

някакви дествия.

Модул управляващ разговорите

Модулът управляващ разговорите изпълнява стандартните за всяко

приложение за размяна на ктс функиции, като в различни диалогови

режими дава възможност на потребителя за създава, редактира, изпраща и

получава ктс.

Комуникацията между модулите на приложението е показана на фиг

3.1.

фигура 3.1 Комуникация между модулите на приложението

Page 56: Сигурност и защита на операционни системи за мобилни устройства

стр. 56 от 63

Нива на сигурност

Приложението има четири нива на сигурност, от ниво 1 до ниво 4,

като ниво 1 е с най-висока сигурност, а ниво 4 с най-ниска сигурност:

● Ниво 1 - всички изходящи ктс са забранени. При това ниво

приложението прихваща всички изходящи ктс, блокира изпращането

им и съобщава на потребителя, че изходящите съобщения са

забранени;

● Ниво 2 - използване на списък с разрешени номера. При

това ниво приложението позволява изпращане на ктс само до номера,

съдържащи се в предварително зададен списък. Списъкът с

разрешените номера се управлява от администратора;

● Ниво 3 - използване на списък със забранени номера. При

това ниво приложението позволява изпращане на ктс до всички

номера, с изключение на тези, които са в списъка със забранените

номера. Списъкът със забранените номера се управлява от

администратора;

● Ниво 4 - проверка за наличието на номера на получателя

на ктс в контактите на потребителя. При това ниво на сигурност

приложението проверява дали номерът на получателя е в списъка на

контактите на получателя и прави

предупредително съобщение, ако

това не е така.

3.2 Сценарий

За правилното функциониране на

приложението е необходимо то да бъде

зададено като приложение по

подразбиране.

При първото стартиране на

приложението се въвеждат телефонния

фигура 3.2 Начален екран при първо стартиране на приложението

Page 57: Сигурност и защита на операционни системи за мобилни устройства

стр. 57 от 63

номер на администратора и администраторска парола, ето защо

инстралирането на приложението трябва да се направи от лицето, което ще

бъде администратор. (Фиг. 3.2)

Достъп до администраторския панел се получава от менюто на

приложението, след избиране на опцията „Администратор” и въвеждане на

зададената парола.

След получаване на достъп до администраторския панел

администраторът има възможност да задава ниво на сигурност, да

редактира списъците с разрешени и забранени номера.

Зададените политики могат да се прилагат както на локалното, така и

на отдалечено устройство.

3.3 Предимства при използване на приложение за контрол

на ктс.

Page 58: Сигурност и защита на операционни системи за мобилни устройства

стр. 58 от 63

Приложението може да бъде полезно със следното:

Предпазва от действието на вируси изпращащи ктс към номера,

за които таксуването е по-високо, като участия в различни игри,

гласувания за любим участник в телевизионни предавания като

“Гласът на България” или “Големите надежди”, плащане за

изтегляне на софтуер и др. подобни.

Родителски контрол - по този начин родителят може да

ограничава детето си от изпращане на смс-и към номерата

описани по-горе.

Контрол на служителите на дадена фирма - подобна на

функцията описана по-горе, но се прилага от работодател към

работници ползващи служебни мобилни телефони.

Предимствата на приложението спрямо същите или подобни услуги

предлагани от мобилен оператор:

Ограничаването от страна на мобилен оператор става по-бавно,

а някои от ограниченията изискват посещение на офис на

съответният мобилен оператор;

Някои мобилни оператори не осигуряват ограничаване на

изходящите ктс;

Page 59: Сигурност и защита на операционни системи за мобилни устройства

стр. 59 от 63

Заключение

Съвременните операционни системи за мобилни устройства

използват многофакторна система за сигурност. Всички съвременни ОС

позволяват:

Защита на данните на потребителя записани в мобилното

устройство чрез криптиране;

Използване на сигурни, криптирани транспорни протоколи за

пренос на данни към и от устройството;

Защита на достъпа до устройството чрез различни пароли и

други методи;

Отдалечено администриране на устройството, включително

блокирането му и изтриването на всичи данни записани в него;

В резултат на това може да се твърди, че сигурността на

съвременните операционни системи за мобилни устройства е на високо

ниво.

Най-слабото звено в сигурността на мобилните устройства е

човешкият фактор, тъй като в крайна сметка потребителят решава, какви

приложения да инсталира на устройството си и какви разрешения да им

даде.

Препоръки

За постигане на максимална сигурност на използваното мобилно

устройство е необходимо:

Потребителят винаги внимателно да се запознава с

разрешенията, които искат приложенията преди да бъдат

инсталирани;

Потребителят да прилага средствата за защита осигурени от

разработчиците на съответната операционна система;

На устройството винаги да бъде инсталирана последната

версия на операционната система предназначена за

съответното устройство;

Page 60: Сигурност и защита на операционни системи за мобилни устройства

стр. 60 от 63

Да се ползва софтуер повишаващ сигурността, разработен от

трети страни;

Page 61: Сигурност и защита на операционни системи за мобилни устройства

стр. 61 от 63

Използвана литература

1. Голощапов, Алексей. Google Android программирование для

мобильных устройств. Санкт Петербург : БХВ-Петербург, 2011.

2. Голощапов, Алексей. Google Android: Создание приложений для

смартфонов и планшетных ПК. Санкт-Петербург : БХВ-Петербург, 2013.

3. Климов, Александр. Программирование для мобильных

устройств по упоравлением Windows Mobile. Санкт Петербург : Питер,

2009.

4. Медникс, Зигард, Лайрд Дорнин, Блейк Мик и др.

Программирование под Android. Санкт Петербург : Питер, 2013.

5. Харди, Брайан, Билл Филлипс. Программирование под Android.

Для профессионалов. Санкт Петербург : Питер, 2014.

6. Хашими, Сайед, Сатия Коматинени, Дейв Маклийн. Разработка

приложений для Android. Санкт Петербург : Питер, 2011.

7. Воронин, Владислав. Symbian OS для смартфонов: что к чему.

www.hpc.ru. [Онлайн] [Цитирано на: 11 08 2014 r.]

http://www.hpc.ru/lib/arts/1522/printable.shtml.

8. Данилова, Василиса, Евгений Лебеденко. Обзор платформы

Samsung bada. www.mobi.ru. [Онлайн] 24 03 2010 r. [Цитирано на: 22 07 2014

r.] http://www.mobi.ru/Articles/4961/Obzor_platformy_Samsung_Bada.htm.

9. Ходаковский, Константин. RIM представила операционную

систему BBX. www.3dnews.ru. [Онлайн] 19 10 2011 r. [Цитирано на: 29 07

2014 r.] http://www.3dnews.ru/news/618580.

10. ABI - Computer Definition. http://www.yourdictionary.com. [Онлайн] 06

01 2013 r. [Цитирано на: 20 08 2014 r.] http://www.yourdictionary.com/abi.

11. Android 4.4 APIs. https://developer.android.com. [Online] [Cited: 08 20,

2014.] https://developer.android.com/about/versions/android-4.4.html.

12. Android SDK. http://developer.android.com. [Онлайн] [Цитирано на:

2013 12 29 r.] http://developer.android.com/sdk/index.html.

Page 62: Сигурност и защита на операционни системи за мобилни устройства

стр. 62 от 63

13. Bachmann, Glenn. Hacking BlackBerry. Indianapolis : Wiley

Publishing Inc., 2007.

14. Cinar, Onur. Android Apps with Eclipse. New York : Apress, 2012.

15. Dalrymple, Jim. Apple says 87% percent of its devices are running

iOS 7. www.loopinsight.com. [Онлайн] 07 04 2014 r. [Цитирано на: 18 08 2014

r.] http://www.loopinsight.com/2014/04/07/apple-says-87-percent-of-its-devices-

are-running-ios-7.

16. Daniel, Steven. iOS 5 Essentials:Harness iOS 5's new powerful

features to create stunning applications. Birmingham : Packt Publishing, 2012.

17. Dashboard. developer.android.com. [Online] [Cited: 08 18, 2014.]

http://developer.android.com/about/dashboards/index.html.

18. Dawes, Adam. Windows Mobile Game Development:Building Games

for the Windows Phone and Other Mobile Devices. New York : Apress, 2010.

19. Edwards, Leigh, Richard Baker. Developing Series 60 Applications:

A Guide for Symbian OS C++ Developers. s.l. : Addison Wesley, 2004.

20. Global smartphone sales to end users from 1st quarter 2009 to 4th

quarter 2013, by operating system (in million units). http://www.statista.com.

[Online] [Cited: 08 05, 2014.] http://www.statista.com/statistics/266219/global-

smartphone-sales-since-1st-quarter-2009-by-operating-system.

21. Halvorsen, Ole Henry, Douglas Clarke. OS X and iOS Kernel

Programming:Master kernel programming for efficiency and performance. New

York : Apress, 2011.

22. Haoren, J. Intel® Hardware Accelerated Execution Manager.

https://software.intel.com. [Онлайн] [Цитирано на: 22 08 2014 r.]

https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-

execution-manager.

23. Morrissey, Sean. iOS Forensic Analysis for iPhone, iPad and iPod

touch:Learn forensic methods and procedures for iOS data acquisition and

analysis. New York : Apress, 2010.

24. Rai, Pragati. Android Application Security Essentials:Write secure

Android applications using the most up-to-date techniques and concepts.

Birmingham : Packt Publishing, 2013.

Page 63: Сигурност и защита на операционни системи за мобилни устройства

стр. 63 от 63

25. Shah, Sanjay, Khirulnizam Abd Rahman. Android Development

Tools for Eclipse. Birmingham : Packt Publishing Ltd, 2013.

26. Volevodz, Dmitry. iOS 7 Game Development:Develop powerful,

engaging games with ready-to-use utilities from Sprite Kit. Birmingham : Packt

Publishing, 2014.

27. Zdziarski, Jonathan. Hacking and Securing iOS Applications:Stealing

Data, Hijacking Software, and How to Prevent It. Sebastopol : O’Reilly Media,

Inc., 2012.

28. Tilley, Chris. The History Of Windows CE. www.hpcfactor.com.

[Online] 02 18, 2001. [Cited: 08 10, 2014.]

http://www.hpcfactor.com/support/windowsce.

29. Oracle Technology Network for Java Developers. www.oracle.com.

[Online] [Cited: 08 22, 2014.] http://www.oracle.com/technetwork/java/index.html.