Современный рынок мобильных операционных систем поделен на два сегмента. К одному относятся аппараты на базе Android, к другому — iPhone. Однако в 2019-м году после некоторых событий компания Huawei представила свою операционную систему Harmony OS.
Что такое Harmony OS
Разработанная Huawei операционная система взаимодействует с несколькими умными устройствами для создания своей экосистемы. На данный момент она поддерживает следующие устройства:
Мобильные телефоны/планшеты
Носимые устройства
IoT
Телевизоры
Машины
Доля Harmony OS на мировом рынке:
Доля Harmony OS на китайском рынке:
Как можно заметить, ОС неплохо развивается на своем родном рынке и понемногу отбирает долю Android-смартфонов.
С технической точки зрения, Harmony OS в текущей многоядерной структуре использует подходящие ядра для устройств с различными компонентами. Известно, что для IoT-устройств система основана на ядре LiteOS, в то время как для смартфонов и планшетов — на ядре Linux с AOSP для поддержки приложений в формате APK (в дополнение к нативным приложениям HAP с помощью компилятора Ark).
ОС включает в себя коммуникационную систему DSoftBus для интеграции физически отдельных устройств в виртуальное суперустройство, позволяющее одному гаджету управлять другими и обмениваться данными между девайсами с разными возможностями.
Архитектура ОС
Именно так выглядит архитектура HarmonyOS. Далее более подробно рассмотрим каждый уровень ОС.
-
Уровень ядра:
-
Подсистема ядра:
Harmony использует многоядерную структуру, поэтому можно использовать подходящие ядра ОС для устройств с различными ресурсами. Уровень абстракции ядра (KAL) скрывает различия в реализациях ядра и предоставляет верхнеуровневые базовые возможности, включая управление процессами и потоками, управление памятью, файловой системой, сетевым управлением и периферийным управлением.
-
Подсистема драйверов:
Hardware Driver Foundation (HDF) закладывает основу для открытой аппаратной экосистемы HarmonyOS. Это обеспечивает единый доступ с периферийных устройств и обеспечивает базу для разработки драйверов и управления ими.
-
-
Уровень системы:
-
Набор базовых подсистем возможностей системы:
Реализует работу приложений между разными HarmonyOS-девайсами. Также, Ark (компилятор) использует среды выполнения С, С++, JS и предоставляет набор базовых системных библиотек. Он также предоставляет среду выполнения для Java-программ, статически скомпилированных Ark.
-
Набор базовых подсистем сервисов программного обеспечения:
Обеспечивает HarmonyOS общими и универсальными программными сервисами, включая уведомления, телефонию, мультимедиа и тд.
-
Набор расширенных подсистем сервисов программного обеспечения:
Обеспечивает HarmonyOS расширенными программными сервисами, включая "умные" телевизоры, носимые устройства, IoT-устройства и тд.
-
Набор аппаратных подсистем сервисов:
Обеспечивает HarmonyOS аппаратными сервисами, включая определение местоположения, биометрическое распознавание, а также сервисы, предназначенные для носимых и IoT-устройств.
-
-
Уровень Фреймворка:
Предоставляет API для взаимодействия приложений с программными и аппаратными сервисами, фреймворки приложений для соответствующих ЯП и UI. Доступно для разных девайсов Harmony OS.
-
Уровень приложений
Состоит из системных и сторонних приложений. Каждое приложение состоит из 1 и более Feature ability(FA) и Particle ability(PA). FA предоставляет UI для взаимодействия с пользователем, а PA уже реализует функциональность FA.
Уровень системы (Набор базовых подсистем возможностей системы):
Совместная работа разных девайсов. Применяемые технологии: DSoftBus, распределенная виртуализация девайсов, данные и планировщик.
Более подробно можно посмотреть тут
Безопасность
Распределенная модель безопасности:
Аутентификация пользователя
Аутентификация устройства
Проверка запрашиваемых данных
Пользователь
Модель "нулевого" доверия
Мультифакторная аутентификация
Совместная аутентификация
Девайс
Secure Boot
TEE
-
Device certificate authentication
HarmonyOS предварительно конфигурирует public key infrastructure(PKI) в TEE устройства для дальнейшей аутентификации данного устройства с другими устройствами. Приватный ключ хранится и может быть использован только в ТЕЕ.
При передачи чувствительных данных безопасный канал связи между устройствами создается только после подтверждения PKI устройств.
Данные
Генерация данных
Хранение данных
Использование данных
Передаче данных
Уничтожение данных
Разработка приложений
В HarmonyOS, помимо стандартной для Android разработки на Java(Kotlin), есть возможность разработки на ArkTS. Он является предпочтительным (нативным) для этой ОС.
Основы приложений
Приложения, работающие на HarmonyOS, делятся на следующие виды:
Приложения, устанавливаемые обычным способом
Приложения, не требующие установки Atomic Services, обеспечивающие определенную функциональность
Структура приложений
Приложение выпускается как App Pack(.app)
, состоит из одного и более файлов HarmonyOS Ability Package (HAP) и файла pack.info
, который описывает атрибуты каждого HAP-файла.
Один HAP-файл — это пакет модулей, состоящий из кода, ресурсов, сторонних библиотек и файла конфигурации приложения. HAP-файлы можно разделить на модули Entry и Feature.
Entry — основной модуль приложения. В приложении может быть более одного
Entry HAP
для поддержки разного типа устройств, для это требуется настроить правила распространения(distroFilter
— distribution rules).Feature — динамический модули; только эти модули, содержащие функциональность, могут работать независимо.
Ability
Ability — это абстракция функциональности, которую может предоставить приложение. Одно приложение может содержать одну или несколько Abilities. Способности классифицируются на Feature ability (FA) и Particle ability (PA). FA и PA являются базовыми единицами приложений для реализации конкретных функциональных возможностей приложения. Их различие заключается в том, что у FA есть пользовательский интерфейс, а у PA — нет.
Libs
Файлы сторонних библиотек — это файлы кода сторонних разработчиков, от которых зависят приложения. Это двоичные файлы, такие как .so, .jar, .bin и .har, хранящиеся в каталоге libs.
Resources
Файлы ресурсов приложения, такие как строки, изображения и аудио файлы. Хранятся в каталоге ресурсов, что позволяет вам легко получить к ним доступ, использовать и поддерживать их.
Config.json
config.json
— это конфигурационный файл приложения. Он используется для объявления возможностей приложения и разрешений, необходимых приложению.
global — информация о приложении (bundle name, version, vendor)
device-specific — информация о приложении (backup, restoration network security capabilities)
HAP information — информация об атрибутах (basic, permissions — взаимодействие с системой и другими приложениями)
Приложения на Java и ArkTS имеют разные набор атрибутов.
pack.info
pack.info
описывает атрибуты каждого HAP в составе приложения.
Атрибуты:
delivery-with-install — указывает, может ли HAP-файл быть установлен во время установки приложения. Значение true указывает, что HAP-файл может быть установлен во время установки приложения, а false — наоборот.
name — указывает имя HAP-файла,
module-type — указывает тип модуля. Значение может быть entry или feature,
device-type — указывает тип устройства, поддерживающего HAP-файл..
Безопасная разработка приложений
Сама Huawei разработала гайд о том, как безопасно разрабатывать приложения для своей ОС. Практически все пункты из данного списка можно использовать для аудита мобильных приложений.
Huawei Mobile Services
Платформа HMS Core, созданная на базе устройств Huawei и платформы Android, — это среда, которая открывает множество возможностей для разработчиков приложений. HMS Core предоставляет пользователям устройств Huawei базовые службы.
Как и GMS Core (сервисы Google для мобильных устройств), сервисы HMS Core могут работать на базе Android Open Source Project (система Android) и поддерживать приложения Android. Однако некоторые приложения Android требуют поддержки GMS Core и могут не работать на HMS Core.
Основные категории HMS Core:
App Services
Graphics
Media
AI
Smart Device
Security
System
Cross-platform
Common
Более подробно разбирать приложения из каждой категории необходимости нет, поскольку это не предмет данной статьи.
Но вот подходы компаний по применению данных сервисов:
Безопасность HarmonyOS
Вообще, у Huawei есть подробная документация насчет технологий, применяемых в ОС для ее безопасности.
Поэтому об этом всем вкратце :)
Система построена на 3 RoT (Root of Trust): Boot RoT, Storage RoT, Computing RoT.
В самой ОС есть 5 уровней безопасности устройства SL1-SL5
SL1
Secure Boot
На каждом этапе загрузки устройства проверяются электронные подписи boot objects.
-
Запуск устройства:
ROM SoC Bootloader (на чипе ROM) (Root of Trust) -> Загрузка Flash Device Bootloader с flash storage chip (использует хеш публичного ключа из eFuse пространства главного чипа, чтобы проверить PK и потом использует этот PK, чтобы проверить signature of Flash Device Bootloader image) -> Далее FDB загружается и также проверяет PK и подпись следующего image.
-
Обновление:
Девайсы проверяют подписи пакетов обновлений. Дополнительно осуществлен контроль обновления: перед обновлением HarmonyOS отправляет информацию об идентификаторе устройства, номер версии и хеш обновления, и device upgrade token на сервер обновлений; сервер обновлений подписывает эту информацию и отправляет обратно и аутентифицирует процесс обновления.
SL2
Hardware Unique Key (HUK)
Встроен в hardware, используется как root key для распределения ключей. HUK можно использовать только через hardware cryptographic engine (нельзя через software).
Key Management (HUKS)
HarmonyOS Universal Keystore Service (HUKS) позволяет разработчикам управлять ключами, сертификатами, а также вызывать encryption/decryption алгоритмы.
!! Только приложения, которые генерируют ключи, могут обращаться к HUKS. Когда приложение генерирует ключ, HUKS записывает эти данные (UID, signature, package name of the application). Эта информация в дальнейшем используется для идентификации и аутентификации, когда приложение запрашивает ключ.
HarmonyOS может использовать другие функции auth’а (биометрия, пин-код), чтобы усилить контроль доступа к ключам.
HarmonyOS также реализует функцию проверку подлинности ключа на основе сертификата устройства.
Stack Protection
Стековые канарейки
Lightweight TEE
TrustZone
SL3
ASLR
Реализация "полной" и "стековой" рандомизации размещения адресного пространства. Также рандомизация базовых защищенных объектов.
На SL4 и SL5 ASLR для сегментов кода и кучи.
Data Execute Never (NX)
Реализация предотвращения выполнения данных как произвольного кода.
Privileged Acces Never (PAN) и Privileged eXecute Never (PXN)
Реализация предотвращения выполнения произвольного кода из user-space в kernel-space.
Hardware Encryption/Decryption Engine
Реализация криптографических алгоритмов
SL4
Control over Privileged Software Versions
Проверка подписей, используя ключи из eFuse, поэтому только коммерческие версии могут запускаться.
TEE
iTrustee — TrustedOS используется на устройствах с чипами Kirin.
Security services:
Trusted storage service. Связь и изоляция Trusted Applications (TA). Состоит из secure file system (SFS) и replay protected memory block (RPMB). RPMB имеет anti-deletion, anti-rollback защиту.
Encryption/decryption services. Использует много алгоритмов, а также независимые чипы для Key generation и вычислений; совместим с GlobalPlatform TEE standard.
Trusted time service.
Trusted User Interface.
Hierarchical Encryption of the File System
Шифрование файлов (осуществляется by kernel encryption file system module и hardware encryption/decryption engine) с помощью XTS-AES-256.
Два вида шифрования:
Credential Encryption (CE), Sub Enhanced Credential Encryption (SECE) и Enhanced Credential Encryption (ECE). Используется с паролем разблокировки экрана
Device Encryption (DE); не связано с паролем разблокировки экрана.
Стандартно используется первый вариант.
CE Эти данные доступны, если после включения был введен пароль. Данные доступны даже если экран заблокирован. Например, SMS, контакты, информация о звонках и тд.
SECE Усиление CE. Когда устройство заблокировано, файлы не могут быть открыты, но операции создания файлов и записи могут быть выполнены. Например, вложения электронной почты могут быть загружены.
ECE Усиление SECE. Когда устройство заблокировано, файлы не доступны вовсе.
DE Доступ к защищенным данным DE возможен при включении питания независимо от того, заблокировано ли устройство. Такие данные включают обои, будильники и мелодии звонка. Ключ DE защищен HUK и не имеет никакого отношения к паролю экрана блокировки.
В зависимости от уровня риска используются разные уровни. S4 — ECE, S3 — SECE, S2/S1 — CE/DE.
Control Flow Integrity (CFI)
Защита от ROP/JOP-атак.
Mandatory Acces Control (MAC)
Политики доступа к защищенным файлам. Также используется seccomp.
Kernel Integrity Protection*
только определенные чипы HiSilicon поддерживают это
Технология защиты целостности ядра поддерживает следующие механизмы защиты:
Фрагменты кода ядра и модуля драйвера не могут быть изменены.
Данные ядра и модуля драйвера, доступные только для чтения, не могут быть изменены.
Фрагменты кода, не относящиеся к ядру, не могут быть выполнены.
Критические динамические данные ядра не могут быть изменены.
SL5
Secure Element (SE)
SE — это подсистема, которая обеспечивает высокозащищенную среду выполнения и хранения. Harmony поддерживает развертывание SE, которое используется для обеспечения безопасности основных сервисов и данных, таких как мобильные платежи и идентификационные данные. В отличие от TEE, решение SE обеспечивает как программную, так и аппаратную защиту благодаря высокому уровню безопасности конструкции и программных алгоритмов.
Independent Security Chip
Специальный чип безопасности, который реализует различные функции (защита паролем экрана блокировки, шифрование файлов, биометрия, управление ключами, RoT и т.д.).
Formal Verification + Microkernel
Формальная верификация проверяет корректность системы из исходников с помощью математических теорем.
TEE использует архитектуру микроядра чтобы уменьшить поверхность атаки, а также чтобы можно было легко масштабировать систему и повысить безопасность.
Physical Attack Defense
Специальные аппаратные методы, чтобы защититься от атак по сторонним каналам (side-channel) и атак, с внедрением ошибки (fault injection), в частности, для криптографических алгоритмов.
Например, умножение точек на эллиптической кривой, а также умножение по модулю в RSA защищены от атак SPA (simple power analysis), DPA (differential power analysis).
Симметрия тоже защищена: специальные механизмы для S-box.
Безопасность HMS Core
FIDO
Keyring
Safety Detect
DataSecurity Engine
LocalAuthentication Engine
FIDO (Fast Identity Online)
Система для аутентификации с возможностями проекта FIDO2, основанными на стандарте WebAuthn и BioAuthn для авторизации по отпечатку пальца и лицу.
FIDO2:
поддерживает платформонезависимые ключи, USB, NFC, Bluetooth;
поддерживает платформозависимые ключи, отпечаток пальца, 3d слепок лица;
использует проверку системы перед использованием FIDO2.
Keyring
Механизмы для управления учетными данными, позволяющее передавать их как локально между приложениями, так и между устройствами.
Safety Detect
Набор механизмов безопасности системы, включает в себя:
SysIntegrity API — позволяет проверить безопасность устройства, на котором запущенно приложение (проверка наличия root прав).
AppsCheck API — получает список вредоносных приложений.
URLCheck API — определяет тип угрозы для конкретного URL адреса.
UserDetect API — определяет, взаимодействует ли ваше приложение с истинным пользователем.
WifiDetect API — определяет, является ли подключаемый Wi-Fi безопасным.
DataSecurity Engine
Secure Asset Storage
Позволяет безопасно хранить, обновлять, удалять, запрашивать персональные данные.
Использует TEE для хранения ключей, шифрования и расшифровки данных.
Classified File Protection
Позволяет классифицировать и маркировать данные, а также настроить права относительно политики рисков от S0 до S4.
Основываясь на стандартах классификации данных, вы можете установить политики управления безопасностью жизненного цикла и требования к защите данных, которые будут соблюдаться службами в конкретных сценариях использо—вания.
Политики рисков:
S4 — Severe — должен включать наиболее чувствительные персональные данные или данные которые в случае утечки могут оказать очень негативное влияние — информация о здоровье, кредитной карте.
S3 — High — данные которые в случае утечки могут оказать негативное влияние для конкретного человека или организации — персональная информация о точном местоположении в режиме реального времени и маршруты тренировок.
S2 — Medium — данные которые в случае утечки могут оказать существенное влияние для конкретного человека или организации — подробные личные адреса, имена.
S1 — Low, данные которые в случае утечки могут оказать ограниченное влияние для конкретного человека или организации — национальность, место рождения и информация об образовании.
S0 — Public — данные которые можно найти публично.
LocalAuthentication Engine
Facial Recognition
Предоставляет метод локальной идентификации и верификации личности человека с использованием его профиля лица.
DevEco Studio
Аналог Android Studio от Huawei
Эмуляторы
Эмулятор можно использовать только с версии 3.1. Для обновления требуется поменять регион на CN следующим образом:
win
:
C:\Users\username\AppData\Roaming\Huawei\DevEcoStudio3.0\options directory, open the country.region.xml
.
MacOS
:~/Library/Application Support/Huawei/DevEcoStudio3.0/options/country.region.xml
Для Linux нет версии DevEco :(
В версии 3.1 можно создать 3 вида виртуальных устройств:
телефон, APIv6, HarmonyOS
носимые устройства, APIv6, HarmonyOS
телевизор, APIv6, HarmonyOS
Эти же категории устройств доступны как удаленные устройства (эмуляторы) для тестирования своих приложений.
Также можно запустить удаленный эмулятор — тогда добавляются планшеты и машины.
Версия qemu, которая используется эмулятором, сильно ограничена по функциональности, по сравнению с версией для Android Studio.
Аудит приложений для HarmonyOS
Root-права
После 2020-го года Huawei полностью запретила разблокировку загрузчика. Соответственно, простого получения root-прав на текущий момент нет, кроме публичных эксплоитов, позволяющих разблокировать загрузчик. Да и то доступно это только под очень ограниченный ряд устройств с определенными чипами.
На эмуляторе в DevEco Studio, предоставляемой Huawei, нет возможности получить root-права.
Таким образом, использовать полноценно устройство на HarmonyOS для аудита мобильных приложений на текущий момент практически невозможно.
Сейчас самый удобный способ — использовать устройство с уже полученными root-правами и установка на них HMS.
Нативные приложения для HarmonyOS
Такие приложения не встречаются под мобильную версию HarmonyOS на нашем рынке. Большинство разработчиков предпочитают разрабатывать сразу приложение под Android и HarmonyOS в варианте apk, использующие разный набор базовых сервисов (это было описано ранее).
Tools
Специально созданных инструментов для анализа приложений под HarmonyOS не было найдено. Стандартные тулзы для Android-приложений могут быть использованы для анализа HarmonyOS-приложений.
Порядок анализа мобильных приложений для HarmonyOS
В связи с невозможностью получить root-права на устройстве и эмуляторе для удобного анализа приложений предлагается использовать следующую схему:
Берем любой Android-телефон с разблокированным загрузчиком
Устанавливаем форк от AOSP без GMS
Устанавливаем HMS core
Устанавливаем исследуемое приложение
Исследуем как обычно :)
В данной статье мы познакомились с третьим игроком на рынке мобильных ОС. Рассмотрели архитектуру HarmonyOS, замену GMS в виде HMS. Исследовали как аппаратные, так и программные средства защиты ОС. Сейчас нативные приложения не распространены на нашем рынке, доля Harmony слишком мала.
На данный момент мало возможностей исследовать саму HarmonyOS и приложения для нее из-за ее закрытости. Поэтому пора искать новые дыры безопасности хД