Upload
stoyan-mechev
View
325
Download
5
Embed Size (px)
DESCRIPTION
Дипломна работа на тема: Сигурност и защита на операционни системи за мобилни устройства.
Citation preview
ИКОНОМИЧЕСКИ УНИВЕРСИТЕТ - гр. ВАРНА
ЦЕНТЪР ЗА МАГИСТЪРСКО ОБУЧЕНИЕ
КАТЕДРА “ИНФОРМАТИКА”
МАГИСТЪРСКА ТЕЗА
Тема: Сигурност и защита на операционни
системи за мобилни устройства
Дипломант: Стоян Тодоров Мечев
Научен ръководител: доц. д-р Стефан Дражев
Варна септември 2014 г.
стр. 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
стр. 3 от 63
Използвани съкращения
ОС - Операционна система
ППИ (API) - Приложен програмен интерфейс
ПИ – Потребителски интерфейс
КТС (SMS) - кратко текстово съобщение
AVD – Android Virtual Device – виртуално Android устойство
стр. 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)
стр. 5 от 63
динамиката на този пазар.
При тези впечатляващи числа е естествено да бъде поставен
въпросът за сигурността и защита на личните данни на потребителите на
мобилни устройства.
Цел:
Повишаване на сигурността на Android ОС.
Задачи:
● Обзор на най-разпространените операционни ситеми за
мобилни устройства.
● Описание на средствата за разработка на приложения за
Android ОС.
● Проектиране на приложение за контрол на текстови
съобщения.
стр. 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]
стр. 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]
стр. 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)
стр. 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)
стр. 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)
стр. 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
стр. 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.
стр. 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]
стр. 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 да
влизат в акаунта си от телефона;
● История на разговорите, която съдържа по-детайлна
стр. 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
стр. 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
стр. 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
стр. 18 от 63
че устройството на потебителя не може да се използва от неупълномощено
лице. Най-разпространеният метод е заключване на устройството с ПИН
код или парола. Във своята версия за корпоративни потребители iOS дава
възможност за задаване на минимална дължина, набор от символи, които
да се използват в паролата, дълготрайност и история на паролите.
Потребителите могат допълнително да настроят устройството автоматично
да се изтрие, ако твърде много пъти се въведе грешна парола. В
допълнение стратегията за сигурност на Apple включва използването на
подписани конфигурационни профили позволяващи централизирани
найстройки на VPN, WiFi, електронна поща и други конфигурации. По същия
начин могат да бъдат ограничавани и функции считани за несигурни.
Например изключване на YouTube, изключване на камерата на
устройството и забраняване на инсталирането на приложения разработени
от трети страни.
Сигурност на данните
Apple е включила редица подходи за защита на сигурността, с цел
защита на данните, дори ако устройството е откраднато. Тези механизми
включват функция за отдалечено изтриване, криптиране и защита на
данните.
Освен криптиране на данните записани в самото устройство е
възможно да се направи криптиран архив на данните с помощта на iTunes.
За целта се използва парола, която се задава чрез iTunes и се записва в
устройството. Ефективността на криптиране в голяма степен зависи от
сложността на паролата избрана от потребителя.
Мрежова сигурност
Мрежовата сигурност при iOS включва стандартни решения като VPN,
SSL/TLS криптиране, както и WEP/WPA/WPA2 безжично криптиране и
автентификация.
Сигурност на приложенията
На ниво приложение, приложенията от App Store се стартират в
стр. 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)
стр. 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
стр. 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]
стр. 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) - система, която
служи за създаване на външния вид на приложенията включващ
стр. 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
стр. 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)
стр. 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). Всички
разрешения, които изисква приложението трябва да бъдат декларирани в
неговия манифест файла. Разрешенията представляват позволения, които
приложението изисква от операционната система за да може да
функционира нормално. По време на инсталацията потребителят вижда
стр. 26 от 63
списък с всички разререшения, които изисква приложението. Така
потребителят може да направи информиран
избор - да инсталира приложението или не.
Дадено приложение може да изисква разрешение
за: установяване ва вашето местоположение по
GPS, достъп до интернет, вашите контакти,
инструментите за разработка, регистъра на
телефонните обаждания и др. (фиг. 1.6)
Подписване на приложенията
Всички приложения за Android са
самоподписани. Няма изискване приложенията
да се подписват с използването на сертифициращ орган.
Подписът на приложението асоциира приложението с автора. Ако
даден потребител инсталира няколко приложения написани от един автор е
необходимо тези приложения да бъдат асоциирани със същия подпис и да
имат включен флаг SHARED_ID в манифест файла за да имат възможност
да споделят данни помежду си.
При обновяване на дадено приложение се изисква и старата и новата
версия да използват един и същи подпис и да няма разширяване на
разрешения, които са дадени първоначално на приложението.
Съхраняване на данни в устройството.
Android осигурява различни решения за сигурно съхраняване на
данни. За примитиви като цели числа, логически дани, числа с плаваща
запетая и текстови низове, които са необходими по време на
потребителската сесия е най-добре да се използват данни споделен тип.
Тези данни се съхраняват като двойки ключ-стойност. Всички данни на
приложението се съхраняват заедно с него в “пясъчник”. Когато става дума
за голям обем данни е добре да се използва SQLite базата данни, която е
вградена в Android ОС.
Всички Android устройства позволяват на потребителите да монтират
външни устройства за съхраняване на данни като SD карти. Повечето
фигура 1.6 Разрешения при инсталиране на приложение
[24]
стр. 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 уточнява стандартни формати за сертификати на
публични ключове, списъците за отмяна на сертификати, сертификати на
стр. 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
стр. 29 от 63
устройството.
Системните настройки позволяват на потребителите да избират
приложение по подразбиране, което да обработва кратките текстови
съобщения. След като бъде избрано, само това приложение има право да
изпраща ктс и да приема известия при получени ктс и мултимедийни
съобщения.22
22
Android 4.4 APIs. //developer.android.com.
<https://developer.android.com/about/versions/android-4.4.html> (20.08.2014)
стр. 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 приложение
стр. 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-платформата се счита това, че изпълнението
на байткод на виртуална машина може да понижи производителността на
стр. 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)
стр. 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) е подчинена на
концепцията, чрез добре дефинирани правила и механизми за управление
на софтуерни приставки да направи възможно изграждането на различни
среди за разработка.
стр. 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 переспективи,
стр. 35 от 63
техните изгледи, редактори, менюта и ленти с инструменти.
Конфигурацията на работния плот се настройва по различен начин в
зависимост от типа на проекта.
Переспективите дефинират пакет от изгледи и тяхното разположение
по работния плот. Всяка переспектива е създадена по начин улесняващ
изпълняването на контретна задача. Например: Java perespective
представлява комбинация от изгледи, менюта и ленти с инструменти най-
често използвани за разработка на Java приложения.
Редактори (Editors)
Редакторите се използват за редактиране на изходния код и на
ресурсните файлове. Eclipse поддържа множество редактори, в зависимост
от типа на редактирания файл. Например за редактиране на изходен код и
XML ресурсен файл се използват различни типове редактори (фиг.2.4).
Ако платформата не може да открие вграден редактор за определен
тип файл, тя разчита на операционната система да предложи външен
редактор.
фигура 2.3 Работен плот на Eclipse IDE [14]
стр. 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]
стр. 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
стр. 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]
стр. 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)
стр. 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]
стр. 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
стр. 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]
стр. 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 сървъра устройства и емулатори. Това става с помощта
на командата:
стр. 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]
стр. 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]
стр. 46 от 63
2.3 Андроид приложения
Android приложенията се разпространяват в информационен пакет -
Application Package Format .apk файл. APK файлът по същество е ZIP файл
форматиран в JAR файлов формат. В APK файла се съхраняват
компонентите на приложението, файл с политики на приложението
(манифест) и ресурсите на приложението.
Компоненти на Android приложенията
Приложенията на Adnroid се изграждат следвайки архитектура
“Модел-Изглед-Контролер” или MVC (Model-View-Controller). Съгласно
принципите на MVC, всеки обект на приложението се причислява към една
от трите категории: обект на модела, обект на изгледа или обект на
контролера.
● Обектите на модела съдържат данните на приложението
и бизнес-логиката. Класовете на модела обикновено се проектират за
моделиране на същности, с които приложението работи - потребител,
продукт в магазина, изображение съхранявано на сървър и др.
Тяхната единствена цел е съхранение и управление на данни. Те
нямат пряка връзка с потребителския интерфейс. Взети заедно
всички обекти на модела съставят слоя на модела.
● Обектите на изгледа се изобразяват на екрана и реагират
на въздействието на потребителя - например докосване, приплъзване
и др. Обектите на изгледа в приложението образуват слоя на изгледа.
● Обектите на контролера свързват обектите на изгледа и
обектите на модела. Те съдържат логиката на приложението.
Контролерите реагират на различни събития инициирани от обектите
на изгледа и управляват потоците от данни между обектите на
модела и слоя на изгледа.
На фиг. 2.14 е показано предаването на управлението между
обектите в резултат на настъпило събитие - например потребителят е
натиснал бутон. От фигурата става ясно, че обектите на модела и на
стр. 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]
стр. 48 от 63
● Компонентът “дейност” обикновено е част от
потребителския интерфейс на приложението. Това е компонент, който
взаимодейства с потребителя, например диалогов прозорец, в който
се въвеждат потребителско име и парола. Обикновено приложенията
имат множество дейности и потребителите могат да навигират между
тях.
● Компонентът “услуга” се грижи за процесите, които
работят във фонов режим. Този компонент няма потребителски
интерфейс. Услугите са подходящи за действия, които е необходимо
да бъдат извършени, независимо от това, което се случва на екрана
на устройството. Например сканиране за вируси във фонов режим.
Когато се изпълнява услуга отнемаща повече време е желателно тя
да бъде стартирана в като отделна нишка.
● Компонентът “приемник на обща информация” е като
пощенска кутия, която получава съобщения от Android ОС или от
други приложения. Приемниците на обща информация нямат
визуално представяне, нито се изпълняват активно в паметта. Когато
настъпи отпределено събитие те изпълняват някакъв код, като
стартиране на дейност или услуга. Например, след като Android ОС
приключи зареждането създава “намерение” наречено
BOOT_COMPLETED. Компонентите на приложението могат да се
регистрират за следене на тази информация в манифест файла.
● Компонентът “доставчик на съдържание” представлява
хранилището за данни на приложението. Приложението може да
сподели тези данни с други компоненти на Android ОС. Доставчиците
на съдържание са подходящи за обмен на сравнително голям обем от
данни. Например Contacts Provider предоставя данните за всички
контакти на потребителя на множество приложения.
Описаните компоненти комуникират помежду си чрез “намерения”
(Intets). Намерението представлява механизмът на Android за асинхронна
комуникация между процесите (inter-process communication, IPC).
Компонентите създават намерение за някакво действие и получаващият
стр. 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
стр. 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> декларира доставчик на съдържание. Указва се името на
класа на доставчика на съдържание и източниците, които той трябва да
стр. 51 от 63
използва.
<service> позволява на приложението да обяви, че поддържа
определена услуга. Посочват се името на класа на услугата и нейното
название, което е във формат за четене от потребителя.
<receiver> декларира, че приложението поддържа приемник на
общо-информационни съобщения. Указват се името на класа на приемника
и неговото название във формат за четене от потребителя.32
Ресурсен файл на приложението
Освен изпълнимия код в инсталационния пакет на приложението се
съхраняват данни свързани с неговото поведение по време на работа. Тези
данни могат да бъдат:
● изображения, които да се изведат на екран;
● текстови низове със съобщения на различни езици, когато
приложението поддържа многоезичен интерфейс;
● цвят и наименование на шрифт, който трябва да се
използва.
Тези данни се наричат ресурси на приложението. Всички ресурси
образуват контекста на приложението. Android предоставя достъп до
контекста чрез класа Context. Всички дейности и услуги имат достъп до
данните на класа Context чрез указателя this.
В Android приложенията всички ресурси на потребителския
интерфейс се разполагат в папка res. Обикновено в тази папка се съдържат
не по-малко от четири поддиректории:
● layout - съдържа XML файлове описващи разположението
и външния вид на обектите от интерфейса на приложението.
Например цвят и подреждане на бутоните на екрана;
● drawable - съдържда графични обекти. В папката drawable
има подпапки съдържащи графични обекти за устройства за различна
разделителна способност. Например drawable-hdpi се използва от
32
Медникс, Зигард, Лайрд Дорнин, Блейк Мик и др. Программирование под Android. Санкт
Петербург, Питер, 2013. с. 110-112
стр. 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
стр. 53 от 63
Глава 3. Проектиране на приложение за управление на
кратки текстови съобщения за устройства работещи под
Android ОС 4.4 KitKat
Предназначението на приложението MessengerUC е да повиши
нивото на сигурност на мобилни устройства работещи под Android ОС 4.4
KitKat или следваща версия, като контролира изходящите кратки тестови
съобщения.
Нуждата от подобно приложение се основава на следните причини:
Потребителите често не обръщат внимание на разрешенията,
които дават при инсталиране на дадено приложение, в резултат
на което инсталират приложения, които изпращат ктс без тяхно
участие;
Потребителите използват чужди устройства (служебни или
взети за временно ползване) за да участват в различни игри
изискващи изпращането на ктс, които се таксуват много скъпо;
Има мобилни оператори, чиито услуги не позволяват
блокирането на изходящи текстови съобщения.
3.1 Дизайн
Модули и функции на приложението
Приложението се състои от следните модули:
Административен модул;
Модул управляващ изходящите ктс;
Модул следящ входящите ктс;
Модул управляващ разговорите.
Функциите на тези модули са следните:
Административен модул
Стартира се от потребителя, от начален екран на устройството, на
което е инсталиран. Този модул позволява:
● Задаване на ниво на сигурност и прилагането му на
локално или отдалечено устройство;
стр. 54 от 63
● Създаване и редактиране на списък с разрешени номера.
Разрешените номера могат да се въвеждат ръчно или да се изберат
от контактите в устройството;
● Създаване и редактиране на списък със забранени
номера. Забранениете номера могат да се въвеждат ръчно или да се
изберат от контактите в устройството;
● Промяна на телефонния номер на администратора;
● Промяна за паролата на администратора;
Административният модул се използва за управление, както на
локално, така и на отдалечено устройство. Управлението на
отдалеченото устройство става чрез изпращане на ктс съдържащо
съотвените команди.
Модул следящ изходящите ктс
Модулът следящ изходящите ктс работи като услуга и се стартира от
системата при настъпване на събитие “изпращане на ктс”.
Предназначението му е да приложи нивото на сигурност зададено
чрез административния модул. Този модул следи всички изходящи ктс. Ако
номерът на получателя на ктс е в списъка със забранените номера, то
изходящото ктс автоматично се блокира и приложението съобщава на
потребителя за това събитие.
Ако съобщението се изпраща от друго приложение, модулът
временно спира процеса на изпращане и съобщава на потребителя за
събитието, като му дава избор дали да продължи изпращането или да го
прекрати.
Като допълнителна мярка за сигурност модулът проверява, дали
номерът на получателя е в списъка с контактите на потребителя. Този
режим на работа се основава на предположението, че ако на устройство
има инсталиран злонамерен софтуер, който се опитва да изпрати ктс до
високо-тарифен номер, то този номер няма да фигурира в списъка с
контакти на потребителя.
стр. 55 от 63
Модул следящ входящите ктс
Този модул се използва при отдалечено администриране на
приложението.
Модулът следящ входящите ктс работи като услуга и се стартира от
системата при настъпване на събитие “получаване на ктс”.
Предназначението му е да провери дали ктс съдържа команден низ
изпратен към приложението. При наличието на такъв низ модулът прилага
командата и издава съобщение. При отсъствие на команден низ модулът
предава управлението на модула управляващ разговорите без да извършва
някакви дествия.
Модул управляващ разговорите
Модулът управляващ разговорите изпълнява стандартните за всяко
приложение за размяна на ктс функиции, като в различни диалогови
режими дава възможност на потребителя за създава, редактира, изпраща и
получава ктс.
Комуникацията между модулите на приложението е показана на фиг
3.1.
фигура 3.1 Комуникация между модулите на приложението
стр. 56 от 63
Нива на сигурност
Приложението има четири нива на сигурност, от ниво 1 до ниво 4,
като ниво 1 е с най-висока сигурност, а ниво 4 с най-ниска сигурност:
● Ниво 1 - всички изходящи ктс са забранени. При това ниво
приложението прихваща всички изходящи ктс, блокира изпращането
им и съобщава на потребителя, че изходящите съобщения са
забранени;
● Ниво 2 - използване на списък с разрешени номера. При
това ниво приложението позволява изпращане на ктс само до номера,
съдържащи се в предварително зададен списък. Списъкът с
разрешените номера се управлява от администратора;
● Ниво 3 - използване на списък със забранени номера. При
това ниво приложението позволява изпращане на ктс до всички
номера, с изключение на тези, които са в списъка със забранените
номера. Списъкът със забранените номера се управлява от
администратора;
● Ниво 4 - проверка за наличието на номера на получателя
на ктс в контактите на потребителя. При това ниво на сигурност
приложението проверява дали номерът на получателя е в списъка на
контактите на получателя и прави
предупредително съобщение, ако
това не е така.
3.2 Сценарий
За правилното функциониране на
приложението е необходимо то да бъде
зададено като приложение по
подразбиране.
При първото стартиране на
приложението се въвеждат телефонния
фигура 3.2 Начален екран при първо стартиране на приложението
стр. 57 от 63
номер на администратора и администраторска парола, ето защо
инстралирането на приложението трябва да се направи от лицето, което ще
бъде администратор. (Фиг. 3.2)
Достъп до администраторския панел се получава от менюто на
приложението, след избиране на опцията „Администратор” и въвеждане на
зададената парола.
След получаване на достъп до администраторския панел
администраторът има възможност да задава ниво на сигурност, да
редактира списъците с разрешени и забранени номера.
Зададените политики могат да се прилагат както на локалното, така и
на отдалечено устройство.
3.3 Предимства при използване на приложение за контрол
на ктс.
стр. 58 от 63
Приложението може да бъде полезно със следното:
Предпазва от действието на вируси изпращащи ктс към номера,
за които таксуването е по-високо, като участия в различни игри,
гласувания за любим участник в телевизионни предавания като
“Гласът на България” или “Големите надежди”, плащане за
изтегляне на софтуер и др. подобни.
Родителски контрол - по този начин родителят може да
ограничава детето си от изпращане на смс-и към номерата
описани по-горе.
Контрол на служителите на дадена фирма - подобна на
функцията описана по-горе, но се прилага от работодател към
работници ползващи служебни мобилни телефони.
Предимствата на приложението спрямо същите или подобни услуги
предлагани от мобилен оператор:
Ограничаването от страна на мобилен оператор става по-бавно,
а някои от ограниченията изискват посещение на офис на
съответният мобилен оператор;
Някои мобилни оператори не осигуряват ограничаване на
изходящите ктс;
стр. 59 от 63
Заключение
Съвременните операционни системи за мобилни устройства
използват многофакторна система за сигурност. Всички съвременни ОС
позволяват:
Защита на данните на потребителя записани в мобилното
устройство чрез криптиране;
Използване на сигурни, криптирани транспорни протоколи за
пренос на данни към и от устройството;
Защита на достъпа до устройството чрез различни пароли и
други методи;
Отдалечено администриране на устройството, включително
блокирането му и изтриването на всичи данни записани в него;
В резултат на това може да се твърди, че сигурността на
съвременните операционни системи за мобилни устройства е на високо
ниво.
Най-слабото звено в сигурността на мобилните устройства е
човешкият фактор, тъй като в крайна сметка потребителят решава, какви
приложения да инсталира на устройството си и какви разрешения да им
даде.
Препоръки
За постигане на максимална сигурност на използваното мобилно
устройство е необходимо:
Потребителят винаги внимателно да се запознава с
разрешенията, които искат приложенията преди да бъдат
инсталирани;
Потребителят да прилага средствата за защита осигурени от
разработчиците на съответната операционна система;
На устройството винаги да бъде инсталирана последната
версия на операционната система предназначена за
съответното устройство;
стр. 60 от 63
Да се ползва софтуер повишаващ сигурността, разработен от
трети страни;
стр. 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.
стр. 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.
стр. 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.