Русский Рус English Eng
ДонНТУ   Портал магістрів

Реферат за темою випускної роботи

Зміст

Вступ

Смартфони зараз поширені повсюдно. Технічна грамотність користувачів поступово зростає, а разом з ній розуміння необхідності забезпечення конфіденційності і безпеки особистих даних. Особливо гостро дана тема актуальна при розробці додатків, що задіюють особисті дані користувачів, банківську інформацію, державну таємницю.

Таким чином, виникає необхідність підвищення ефективності засобів і методів захисту даних в мобільних додатках.

1. Актуальність теми

З огляду на зростаючу популярність мобільних банківських додатків, існують серйозні побоювання щодо їх безпеки, адже проломи в системах захисту можуть спричинити за собою фінансові втрати сотень десятків користувачів [1] .

Дослідження існуючих мобільних додатків командою Digital Security виявили ряд вразливостей і векторів атак на клієнтські банківські програми.

Крім того, кожна мобільна ОС має свою специфіку, в кожній з них можна виявити велику кількість як нових, так і добре відомих вразливостей [1] .

Таким чином тема ефективності безпеки мобільних додатків актуальна і вимагає як вивчення особливостей цільової ОС, так і поліпшення існуючих засобів для захисту призначених для користувача даних.

2. Мета і задачі дослідження та заплановані результати

Мета дослідження - підвищення ефективності методів і засобів захисту даних в мобільних додатках для операційної системи Android.

Об'єкт дослідження - методи і засоби захисту даних.


Основні завдання дослідження:

  1. Вивчення архітектури цільової операційної системи (Android) і вбудованих засобів захисту.
  2. Вивчення і аналіз вразливостей і векторів атаки.
  3. Підвищення ефективності існуючих засобів і методів засобів захисту.
  4. Оцінка ефективності розроблених засобів забезпечення безпеки даних користувача.
  5. Розробка альтернативних варіантів основних етапів уніфікованого процесу синтезу автоматів Мура та оцінка їх ефективності.

В рамках магістерської роботи заплановано:

  1. Дослідження існуючих засобів і методів захисту в операційній системі Android.
  2. Дослідження існуючих вразливостей в мобільних додатках в ОС Android.
  3. Розробка власного модуля для забезпечення безпеки.
  4. Розробка прототипу з використанням власного модуля.
  5. Оцінка ефективності засобів захисту, використаних при розробці прототипу.

3. Огляд досліджень та розробок

Тема розробки додатків під мобільні операційні системи досить популярна і затребувана. Однак, дослідження засобів забезпечення безпеки даних користувача вимагає вивчення архітектури операційної системи Android.ее вбудованих засобів захисту.

3.1 Огляд міжнародних джерел


Існує декілька поширених засобів захисту мобільних додатків:

  1. Опис вбудованих засобів захисту на офіційному сайті Google [2] .
  2. Рекомендації по використанню вбудованих засобів захисту [3]
  3. Бібліотека, яка реалізує простий доступ до шифрування в ОС Android [4]

В книзі Android Security Internals (Внутрішні пристрої безпеки Android) [5] детально описані внутрішня структура безпеки ОС Android, розглядаючи реалізацію основних компонентів і підсистем, пов'язаних з безпекою, таких як Binder IPC, дозволу, криптографічні постачальники і адміністрування пристроїв.

3.2 Огляд національних джерел


Російськомовні джерела, пов'язані з безпекою представлені в малому обсязі і в більшій частині є перекладом англомовних джерел.

В книзі Android для розробників [6] представлені передові технології розробки мобільних додатків для професійних програмістів. У кожна з глав описано що розробляється. Потім наводиться огляд технологій, що застосовуються в процесі його розробки.

3.3 Огляд локальних джерел

В Донецькому національному технічному університеті не знайдено дипломних робіт, що описують безпеку в ОС Android.

4. Архітектура операційної системи Android

Android - вільний і відкритий проект. Більшість вихідного коду поширюється під вільною ліцензією Apache 2.0. Проект почав розвиватися з 2003 році, а вже в 2005 компанія-розробник була куплена компанією Google. Перша стабільна версія з'явилася в 2008 році [7] .

Поширена думка «Android is Linux» (Android це Linux). Це пов'язано з тим, що Android заснований на ядрі Linux, однак значно відрізняється від більшості інших Linux-систем.

Як і в інших Linux-системах, ядро Linux забезпечує такі низькорівневі речі, як управління пам'яттю, захист даних, підтримку мультіпроцессності і багатопоточності. Але - за кількома винятками - ви не знайдете в Android інших звичних компонентів GNU / Linux-систем: тут немає нічого від проекту GNU, не використовується X.Org, ні навіть systemd. Всі ці компоненти замінені аналогами, більш пристосованими для використання в умовах обмеженої пам'яті, низькій швидкості процесора і мінімального споживання енергії - таким чином, Android більше схожий на вбудовану (embedded) Linux-систему, ніж на GNU / Linux.

Крім того, саме ядро Linux в Android теж трохи модифіковано: було додано кілька невеликих компонентів, в тому числі ashmem (anonymous shared memory), Binder driver (частина фреймворка Binder), wakelocks (Управління сплячим режимом) і low memory killer.

Як libc (стандартної бібліотеки мови C) в Android використовується не GNU C library (glibc), а власна мінімалістичний реалізація під назвою bionic, оптимізована для вбудованих (embedded) систем - вона значно швидше, менше і менш вимоглива до пам'яті, ніж glibc, яка обросла безліччю шарів сумісності.

Структура операційної системи Android представлена на рисунку 1.1.


Рисунок 1.1 - Структура операційної системи Android


4.1 Додатки в системі Android


Багато операційних систем діляться на власне операційну систему і програми, встановлені поверх, нічого один про одного не знають і не вміють взаємодіяти. Система компонентів і intent'ов Android дозволяє додатків, як і раніше абсолютно нічого один про одного не знаючи, складати для користувача один інтегрований системний user experience - встановлені додатки реалізують частини однієї великої системи, вони складають з себе систему. І це, з одного боку, відбувається прозоро для користувача, з іншого - представляє необмежені можливості для кастомізації [8] .

Одна з унікальних особливостей Android - в тому, що програми не контролюють безпосередньо процес, в якому вони запущені.

Основна одиниця в Unix-подібних системах - процес. І низькорівневі системні сервіси, і окремі команди в shell'е, і графічні додатки - це процеси. У більшості випадків процес являє собою чорний ящик для всі інші компоненти - інші компоненти системи не знають і не піклуються про його стан. процес починає виконуватися з виклику функції main () (насправді _start), і далі реалізує якусь свою логіку, взаємодіючи з рештою системи через системні виклики і найпростіше межпроцессное спілкування (IPC).

Оскільки Android теж Unix-подібний, все це вірно і для нього, але в той час як низькорівневі частини - на рівні Unix - оперують поняттям процесу, на більш високому рівні - рівні Android Framework - основною одиницею є додаток. Додаток - НЕ чорний ящик: воно складається з окремих компонентів, добре відомих решті системі.

У додатків Android немає функції main (), немає однієї точки входу. Взагалі, Android максимально абстрагує поняття додаток запущено як від користувача, так і від розробника. Звичайно, процес додатки потрібно запускати і зупиняти, але Android робить це автоматично. Розробнику пропонується реалізувати кілька окремих компонентів, кожен з яких має свій власний життєвим циклом.

Для реалізації взаємозв'язку між компонентами необхідно, щоб програми мали можливість спілкуватися один з другом і з системними сервісами - іншими словами, потрібен дуже просунутий і швидкий механізм IPC. Для цього використовується механізм Binder.

Binder - це платформа для швидкого, зручного і об'єктно-орієнтованого взаємодії між процесами. Binder використовує свій невеликий модуль ядра, взаємодія з яким з userspace відбувається через системні виклики (в основному ioctl) на «віртуальному пристрої» / dev / binder.

Низькорівневі частини Binder оперують в термінах об'єктів, які можуть пересилатися між процесами. При цьому використовується підрахунок посилань (reference-counting) для автоматичного звільнення невикористовуваних загальних ресурсів і повідомлення про завершення віддаленого процесу (link-to-death) для звільнення ресурсів всередині процесу.

Високорівневі частини Binder працюють в термінах інтерфейсів, сервісів і проксі-об'єктів. Опис інтерфейсу, наданого програмою іншим програмам, записується на спеціальній мові AIDL (Android Interface Definition Language), зовні дуже схожому на оголошення інтерфейсів в Java. З цього опису автоматично генерується справжній Java-інтерфейс, який потім може використовуватися і клієнтами, і самим сервісом. Крім того, за .aidl-файлу автоматично генеруються два спеціальних класу: Proxy (для використання з боку клієнта) і Stub (з боку сервісу), що реалізують цей інтерфейс.

Для того, щоб різні процеси могли «знайти» сервіси один одного, в Android є спеціальний сервіс ServiceManager, який зберігає, реєструє і видає токени всіх інших сервісів.

Binder широко використовується в Android для реалізації системних сервісів (наприклад, пакетного менеджера і буфера обміну), але деталі цього приховані від розробника додатків високорівневими класами в Android Framework, такими як Activity, Intent і Context. Додатки можуть також використовувати Binder для надання один одному власних сервісів - наприклад, додаток Google Play Services взагалі не має власного графічного інтерфейсу для користувача, але надає розробникам інших програм можливість користуватися сервісами Google Play.

Основний вид компонентів додатків під Android - це activity. Activity - це один «екран» додатка. Наприклад, в додатку для електронної пошти (email client) можуть бути такі activity, як Inbox Activity (список вхідних листів), Email Activity (читання одного листа), Compose Activity (написання листа) і Settings Activity (Настройки).

Передача даних між частинами програми здійснюється за рахунок Intent'ов. Intent - це повідомлення, яке вказує системі, що потрібно «зробити» (наприклад, відкрити даний URL, написати лист на цю адресу, зателефонувати на даний номер телефону або зробити фотографію).

Додатків може знадобитися виконувати дії, не пов'язані безпосередньо з жодною activity, в тому числі, продовжувати робити їх у фоновому режимі, коли всі activity цього додатка завершені. Наприклад, додаток може завантажувати з мережі великий файл, обробляти фотографії, відтворювати музику, синхронізувати дані або просто підтримувати TCP-з'єднання з сервером для отримання повідомлень.

Таку функціональність можна реалізовувати, просто запускаючи окремий потік - це було б для системи чорним ящиком; в тому числі, процес був би завершений при завершенні всіх activity, незалежно від стану таких фонових операцій. Замість цього Android пропонує використовувати ще один вид компонентів - сервіс.

Сервіс потрібен, щоб повідомити системі, що в процесі додатки виконуються дії, які не є частиною activity цього додатка. Сам по собі сервіс не означає створення окремого потоку або процесу - його точки входу (entry points) запускаються в основному потоці додатки. Зазвичай реалізація сервісу запускає додаткові потоки і управляє ними самостійно.

Крім activity і сервісів, у додатків під Android є два інших виду компонента - це broadcast receiver'и і content provider'и.

Broadcast receiver - компонент, що дозволяє з додатком приймати broadcast'и, спеціальний вид повідомлень від системи або інших додатків. Початково broadcast'и, як випливає з назви, в основному використовувалися для розсилки широкомовних повідомлень всім підписалися додатків - наприклад, система посилає повідомлення AIRPLANE_MODE_CHANGED при включенні або відключенні літакового режиму.

Content provider - компонент, що дозволяє з додатком надавати іншим програмам доступ до даних, якими воно управляє. Приклад даних, доступ до яких можна отримати таким чином - список контактів користувача.

При цьому додаток може зберігати самі дані яким завгодно чином, в тому числі на пристрої у вигляді файлів, в справжньою базі даних (SQLite) або запитувати їх з сервера по мережі. У цьому сенсі content provider - це уніфікований інтерфейс для доступу до даних, незалежно від форми їх зберігання. Схема взаємодії з використанням Content Provider представлена на рисунку 1.2.


Рисунок 1.2 – Схема взаємодії з використанням Content Provider (анiмацiя: 4 кадра, затримка 500 мс, 100 циклiв повторення, 133 КБ)


4.2 Компоненти захисту ОС Android


Операційна система Android має низку вбудованих функцій, які дозволяють зменшити частоту і вплив помилок, пов'язаних з безпекою. Система спроектована таким чином, щоб при використанні стандартних засобів уникнути складних рішень, пов'язаних з безпекою [3] .

Можна виділити наступні базові засоби захисту:

  • ізольована Виконавча додатків (Android Application Sandbox), що забезпечує виконання коду і роботу з даними окремо від інших додатків;
  • фреймворк додатків з надійною реалізацією основного функціоналу захисту такого, як криптографія, права доступу, захищене межпроцессное взаємодія (IPC);
  • такі технології як ASLR, NX, ProPolice, safe_iop, OpenBSD dlmalloc, OpenBSD calloc і Linux mmap_min_addr, прийшли з операційної системи Linux;
  • шифрування файлової системи;
  • дозволів надаються користувачем (User-granted permissions), що обмежує доступ до системних функцій телефону;
  • дозволу, зазначені в додатку, для управління даними на основі кожної програми.

Використовуючи перераховані засоби захисту і їх поєднання при написанні програми можна значно зменшити ймовірність злому програми.

Висновки

Операційна система Android має низку спеціальних засобів для забезпечення безпеки даних користувачів. Однак, існує і Раяд проблем при реалізації програми, які лягають на плечі розробнику додатки. Розробник повинен знати і розуміти механізми захисту і грамотно їх застосовувати.

Таким чином, для підвищення ефективності методів і засобів захисту користувальницьких мобільних додатків необхідно розробити рекомендації щодо використання існуючих засобів, а також реалізувати власні засоби захисту.

Перелік посилань

  1. Безопасность мобильных банковских приложений [Электронный ресурс] // Inforation Security. – Режим доступа: http://itsec.ru/articles... – Загл. с экрана.
  2. Security [Электронный ресурс] // Android Source. – Режим доступа: https://source.android.com/security – Загл. с экрана.
  3. Security tips [Электронный ресурс] // Android Developers. – Режим доступа: https://developer.android.com/training... – Загл. с экрана.
  4. AeroGear Android Security [Электронный ресурс] // Github. – Режим доступа: https://github.com/aerogear... – Загл. с экрана.
  5. Elenkov, N. Android Security Internals / N. Elenkov, 2014, - 432 с.
  6. Дейтел, П. Android для разработчиков / П. Дейтел, Х. Дейтел, А. Уолд, 2016, - 512 с.
  7. Как работает Android, часть 1 [Электронный ресурс] // Habrahabr. – Режим доступа: https://habrahabr.ru/company... – Загл. с экрана.
  8. Как работает Android, часть 3 [Электронный ресурс] // Habrahabr. – Режим доступа: https://habrahabr.ru/company... – Загл. с экрана.