Android Q: усі нові функції безпеки та конфіденційності з’являться в Android 10

На Google I/O ми дізналися про вдосконалення Android Q. Нові функції безпеки та конфіденційності, а також удосконалення в новій ОС Android.

Кожна нова версія ОС Android покращує майже всі аспекти: дизайн, функції, API тощо. На Google I/O на початку цього місяця ми дізналися про все покращення Android Q збирається принести, і, звичайно, нові оголошення щодо конфіденційності та безпеки не залишилися поза увагою конференції. Безпека платформи є одним із найважливіших аспектів ОС, особливо для ОС, яку ми всюди носимо з собою в кишені. Якби Android не був безпечним, ми б не довіряли йому половини функцій, ніж ми. Про платежі NFC не могло б бути й мови, обмін файлами був би в кращому випадку сумнівним, а підключення до інших пристроїв було б справжнім божевіллям. Незважаючи на давню проблему фрагментації версій, Google зробив надзвичайно добре, щоб звести кількість проблем безпеки до мінімуму.

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


Шифрування

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

Адіантум

У лютому Google анонсувала Adiantum як альтернативу алгоритм шифрування для телефонів нижчого класу які не підтримують стандартні набори інструкцій AES. Adiantum спеціально розроблений для роботи без спеціального обладнання. Він служить легшою альтернативою звичайному шифруванню AES Android. Еталонні показники Google скажіть нам, що насправді він у 5 разів швидший за AES, а недоліком є ​​те, що він трохи погіршує безпеку. Це робить його ідеальним кандидатом для телефонів нижчого класу, наприклад, на базі Android Go Edition. Adiantum також призначений для таких продуктів, як розумні годинники та різноманітні пристрої Інтернету речей.

Досі адіантум був необов’язковим; виробники могли ввімкнути його на пристроях, які запускаються з Android Pie, але це не був алгоритм шифрування за замовчуванням. Тепер Adiantum входить до складу Android Q. Це означає, що всі пристрої, які запускаються з Q, повинні будуть шифрувати дані користувача без винятку. Як наслідок, пристрої, які запускаються з Android Q, гарантовано матимуть шифрування пам’яті, незалежно від того, через Adiantum чи ні.

Бібліотека безпеки Jetpack

Jetpack — це набір бібліотек підтримки Android і одне з найновіших доповнень знаходиться в альфа-версії: бібліотека безпеки Jetpack. Бібліотека спрощує процес захисту вашої програми, обробляючи такі речі, як керування апаратними сховищами ключів, а також генерування та перевірку ключів.

TLS 1.3

Проте сховище — це не єдина область, у якій покращено шифрування. Спілкування з іншими пристроями було значно покращено з появою Підтримка TLS 1.3 за замовчуванням. TLS 1.3 — це найновіший мережевий криптографічний стандарт, завершений IETF у серпні 2018 року. TLS 1.3 забезпечує більшу конфіденційність для обміну даними, шифруючи більше рукостискань узгодження. Крім того, він швидший, ніж TLS 1.2, оскільки ціла поїздка в обидві сторони відривається від рукостискання встановлення з’єднання. У поєднанні з більш ефективними сучасними алгоритмами це забезпечує збільшення швидкості до 40%.

TLS 1.3 у Google Chrome. Джерело: Google.

Тепер TLS можна оновлювати безпосередньо з Google Play, оскільки він є частиною компонента Conscrypt. Ви можете прочитати більше про це та Project Mainline тут.

З огляду на те, що ми щодня довіряємо стільки конфіденційних транзакцій на наших пристроях, оновлений TLS є важливішим, ніж будь-коли. Зберігання лайків посадкових талонів - і навіть цифрові водійські права в якийсь момент у майбутньому - на Android означає, що всі пристрої повинні шифрувати дані користувача якомога найкраще. Adiantum і примусове шифрування прокладуть шлях для зберігання навіть найбільш конфіденційних даних на найдешевших пристроях. Але шифрування — не єдиний спосіб, яким Google підвищує безпеку Android у випуску Q.


Зміни дозволів і конфіденційності в Android Q

Область зберігання

Scoped Storage — це новий запобіжний засіб, який використовується для обмеження додатків від читання/запису файлів у зовнішньому сховищі, які не містяться в їхньому власному каталозі ізольованого програмного середовища. Google має три мети: краще визначити, які програми контролюють файли, захист даних програми та захист даних користувачів.

Google подвоює API MediaStore для спільного аудіо-, відео- та графічного вмісту. За замовчуванням усі програми можуть вставляти, змінювати або видаляти власні файли в MediaStore. Зображення, MediaStore. Відео та MediaStore. Аудіо колекції без жодних дозволів. Android Q також додає нове MediaStore. Завантаження колекцію для зберігання завантаженого користувачами вмісту, який можуть робити всі програми, що використовують MediaStore API. У той час як файли, що зберігаються в каталогах ізольованого програмного середовища, видаляються після видалення, усі файли, внесені до колекцій MediaStore, зберігаються після видалення.

Щоб отримати доступ до будь-яких файлів, створених іншою програмою, незалежно від того, чи файл знаходиться в одній із колекцій MediaStore чи поза ними, програма має використовувати Storage Access Framework. Крім того, метадані EXIF ​​зображень редагуються, якщо вашій програмі не надано новий дозвіл ACCESS_MEDIA_LOCATION. В Android Q програми також можуть контролювати, на який пристрій зберігання даних розміщувати медіафайли, запитуючи назву його тому за допомогою getExternalVolume().

Google спочатку наклав обмеження Scoped Storage на всі програми в Android Q, незалежно від їхніх цільових рівнів API, але після відгуків компанія надаючи розробникам більше часу внести корективи. Повну інформацію про зміни Scoped Storage можна знайти на цій сторінці, а також ви можете дізнатися більше про рекомендації Google щодо найкращих методів спільного зберігання дивляться цей Google I/O говорити.

Попередження для програм, націлених на рівень API < 23

Однак на цьому обмеження дозволів не закінчуються. Встановлення програми, націленої на рівень API, нижчий за 23 (Android Lollipop або старішої версії), призведе до того, що ОС відобразить користувачеві попередження, якщо ця програма запитує конфіденційні дозволи під час встановлення. Перед установкою користувачі матимуть можливість вручну вказати, які дозволи вони хочуть надати програмі, перш ніж продовжити. Таким чином, Android Q більше не дозволяє програмам обходити дозволи під час виконання.

Як і CopperheadOS, базова версія Android Q тепер дозволяє користувачеві вимкнути всі запитувані небезпечні дозволи перед першим запуском програми. Це стосується лише додатків, націлених на рівень API 22 або нижче, до того, як дозволи на час виконання були введені (в Android Marshmallow).

Можливе SYSTEM_ALERT_DEPRECATION на користь Bubbles API

Bubbles API в дії. Джерело: Google.

Дозвіл на накладання (SYSTEM_ALERT_WINDOW) більше не можна надавати для програм, які працюють на Android Q (Go Edition). Для пристроїв, які не належать до версії Go, Google пропонує розробникам використовувати новий Bubbles API. Bubbles API – це функція, представлена ​​в Android Q Beta 2 що забезпечує функціональність, подібну до головок чату Facebook Messenger. Сповіщення від програм відображаються у вигляді маленьких бульбашок по краях екрана, які розширюються, коли користувач торкається. У підказці програма може відображати дію.

Ця зміна була необхідною, оскільки дозволити програмам вільно малювати накладення поверх інших програм створює очевидні ризики для безпеки. Сумно відомий "Плащ і кинджал"експлойт широко використовував цю слабкість. Функціональність API накладання була обмежена ще в Android Oreo, але тепер у версії Go Android Q повністю скасовано доступ до API за допомогою майбутній випуск, щоб повністю припинити його використання.

Обмеження запуску фонової активності

Програми у фоновому режимі більше не можуть автоматично запускати Activity, коли телефон розблоковано, незалежно від цільового рівня API. Існує цілий список умов, за яких програми тепер можуть запускати дії, з яким ви можете ознайомитися тут. Фонові програми, які не відповідають цим умовам і бажають терміново запустити дію, тепер повинні повідомляти користувача за допомогою сповіщення. Якщо сповіщення створюється з наміром очікування на весь екран, тоді намір запускається негайно, якщо екран вимкнено — корисно для будильників або вхідних дзвінків.

Обмеження доступу до фонового буфера обміну

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

Ця зміна, звичайно, має сенс. Ми часто копіюємо в буфер обміну конфіденційну інформацію, як-от паролі та дані кредитної картки, але все одно прикро бачити, як менеджери буфера обміну зникають.

Доступ до місцезнаходження лише під час використання програми

Нові параметри дозволу на місцезнаходження

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

Ролі

Ролі

Додано новий API «Ролі». Ролі по суті групи з попередньо встановленими правами доступу. Наприклад, програми з роллю галереї можуть мати доступ до ваших медіа-папок, тоді як програми з роллю номеронабирача можуть обробляти дзвінки. Програми, яким користувач надає певну роль, також повинні мати необхідні компоненти. Програми з роллю галереї, наприклад, повинні мати фільтр намірів дії android.намір.дію.ГОЛОВНА і фільтр призначення категорії android.intent.category. APP_GALLERY щоб відображатися як програма галереї в налаштуваннях.

Плитка швидких налаштувань датчиків вимкнено

Плитка швидких налаштувань датчиків

Існує нова плитка швидких налаштувань «Датчики вимкнено», яка вимикає показання з все датчики (акселерометр, гіроскоп тощо) на вашому пристрої для справжньої конфіденційності. Ця плитка швидких налаштувань прихована за умовчанням, але її можна ввімкнути, перейшовши до «плитки розробника швидких налаштувань» у параметрах розробника.

Обмеження для /proc/net

Програми більше не можуть access proc/net, що робить такі служби, як netstat, нежиттєздатними. Це захищає користувачів від шкідливих програм, які контролюють, до яких веб-сайтів і служб вони підключаються. Програми, яким потрібен безперервний доступ, наприклад VPN, повинні використовувати NetworkStatsManager і ConnectivityManager класи.

Рандомізовані MAC-адреси

Ваша MAC-адреса — це унікальний ідентифікатор, який використовують мережі, щоб запам’ятати, який пристрій є яким. В Android Q щоразу, коли ви підключаєтеся до нової мережі, ваш пристрій використовуватиме нову випадкову MAC-адресу. В результаті, мережі не можуть відстежувати ваше місцезнаходження зіставляючи мережі WiFi, до яких ви підключаєтеся, з MAC-адресою вашого телефону. Справжню, заводську MAC-адресу пристрою все ще можна отримати за допомогою програм через getWifiMacAddress() команда.


Зміцнення платформи в Android Q

Одна помилка в Android не означає, що зловмисники тепер мають повний доступ до ОС або що вони можуть обійти будь-які системи безпеки. Частково це пов’язано з рядом заходів безпеки, таких як ізоляція процесів, зменшення поверхні атаки, архітектурна декомпозиція та пом’якшення експлойтів. Ці запобіжні заходи ускладнюють або навіть унеможливлюють використання вразливостей. Як наслідок, зловмисникам зазвичай потрібна велика кількість вразливостей, перш ніж вони зможуть досягти своїх цілей. У минулому ми бачили напади наприклад DRAMMER які працюють шляхом об’єднання кількох експлойтів.

Android Q використовує такі засоби захисту та застосовує їх до більш чутливих областей, таких як медіа та компоненти Bluetooth, а також ядро. Це приносить деякі помітні покращення.

  • Обмежена пісочниця для програмних кодеків.
  • Збільшене виробниче використання дезінфікуючих засобів для пом’якшення цілих класів вразливостей у компонентах, які обробляють ненадійний вміст.
  • Shadow Call Stack, який забезпечує цілісність потоку керування на зворотному краї (CFI) і доповнює захист переднього краю, який забезпечує CFI LLVM.
  • Захист рандомізації компонування адресного простору (ASLR) від витоків за допомогою пам’яті лише eXecute (XOM).
  • Впровадження посиленого розподільника Scudo, який ускладнює використання ряду вразливостей, пов’язаних із купою.

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

Обмежена пісочниця для програмних кодеків. Джерело: Google.

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

По-третє, Shadow Call Stack захищає зворотні адреси, зберігаючи їх в окремому тіньовому стеку, роблячи їх недоступними для звичайних програм. Зворотні адреси зазвичай є вказівниками на функції, тому захист цих адрес важливий, щоб переконатися, що зловмисники не зможуть отримати доступ до функцій, які вони не повинні мати.

По-четверте, ASLR — це метод захисту, який рандомізує місце зберігання програм у пам’яті, роблячи його важче визначити, де програми зберігаються в пам’яті на основі розташування інших програми. Пам'ять лише для eXecute посилює це, роблячи код нечитабельним.

Нарешті, Scudo — це динамічний розподільник купи, який проактивно керує пам’яттю таким чином, що значно ускладнює використання вразливостей на основі купи. Ви можете прочитати про це докладніше тут.


Аутентифікація

Оновлення BiometricPrompt в Android Q

Google представив новий API BiometricPrompt понад рік тому в Android P Developer Preview 2. Це було загальне підказка Android для методів біометричного розблокування. Ідея полягає в тому, що пристрої, які підтримують не тільки сканування відбитків пальців, напр. сканування райдужної оболонки ока на лінійці Samsung Galaxy S, зможе використовувати ці методи, коли програми вимагатимуть підтвердження.

Android Q додає надійну підтримку перевірки обличчя та відбитків пальців, а також розширює API для підтримки неявної автентифікації. Явна автентифікація вимагає, щоб користувач певним чином автентифікувався, перш ніж продовжити, тоді як неявна не вимагає додаткової взаємодії з користувачем.

Неявний і явний потік API BiometricPrompt. Джерело: Google.

Крім того, програми тепер можуть перевіряти, чи підтримує пристрій біометричну автентифікацію за допомогою простого виклик функції, що дозволяє їм не витрачати час на виклик BiometricPrompt на пристроях, які цього не роблять підтримувати це. Ідеально використовувати для цього було б, якщо програми хочуть надати параметр «Увімкнути біометричний вхід» на основі того, чи підтримує пристрій біометричну автентифікацію.

Будівельні блоки для підтримки електронних ідентифікаторів

На початку цього року ми виявили докази того, що Google є робота над підтримкою електронних ідентифікаторів в Android. На I/O Google поінформував нас про прогрес цієї функції. Google каже, що вони співпрацюють з ISO, щоб стандартизувати впровадження мобільних водійських прав, а також електронні паспорти в роботі. Для розробників Google надасть бібліотеку Jetpack, щоб можна було почати створювати програми ідентифікації.


Проект Mainline в Android Q

Project Mainline — це масштабна ініціатива Google, спрямована на зменшення фрагментації певних системних модулів і програм. Google контролюватиме оновлення приблизно 12 системних компонентів через Play Store. Ми детально говорили про Project Mainline у попередній статті якщо вам цікаво прочитати більше.


Висновок

Безпека завжди була ключовою частиною розробки Android. Google виконала вражаючу роботу, щоб підтримувати Android в актуальному стані з найновішими функціями безпеки, а також впровадити деякі власні інновації. Вони продовжують цей процес розробки з Android Q, наповнюючи його функціями безпеки, які гарантують безпеку ваших даних, ніж будь-коли раніше.


Джерело 1: Що нового в Android Q Security [Google]

Джерело 2: Безпека на Android: що далі [Google]

Джерело 3: Поставте в чергу покращення зміцнення [Google]

За участі Мішала Рахмана та Адама Конвея.