Trusty — это безопасная операционная система (ОС), которая обеспечивает доверенную среду выполнения (TEE) для Android. Trusty OS работает на том же процессоре, что и Android OS, но Trusty изолирована от остальной системы как аппаратным, так и программным обеспечением. Trusty и Android работают параллельно друг другу. Trusty имеет доступ ко всей мощности основного процессора и памяти устройства, но полностью изолирована. Изоляция Trusty защищает его от вредоносных приложений, установленных пользователем, и потенциальных уязвимостей, которые могут быть обнаружены в Android.
Trusty совместим с процессорами ARM и Intel. В системах ARM Trusty использует TrustZone от ARM для виртуализации основного процессора и создания безопасного TEE. Подобная поддержка также доступна на платформах Intel x86 с использованием технологии виртуализации Intel.

Рисунок 1. Общая схема Trusty.
Trusty состоит из:
- Небольшое ядро ОС, полученное из Little Kernel
- Драйвер ядра Linux для передачи данных между защищенной средой и Android
- Библиотека пользовательского пространства Android для взаимодействия с доверенными приложениями (то есть защищенными задачами/службами) через драйвер ядра.
Примечание: Trusty и Trusty API могут быть изменены. Информацию о Trusty API см. в API Reference .
Почему «Трасти»?
Другие операционные системы TEE традиционно поставляются в виде двоичных двоичных объектов сторонними поставщиками или разрабатываются внутри компании. Разработка внутренних систем TEE или лицензирование TEE у стороннего поставщика может быть дорогостоящим для поставщиков систем на кристалле (SoC) и OEM-производителей. Денежные затраты в сочетании с ненадежными сторонними системами создают нестабильную экосистему для Android. Trusty предоставляется своим партнерам как надежная и бесплатная альтернатива с открытым исходным кодом для их TEE. Trusty предлагает уровень прозрачности, который невозможен с системами с закрытым исходным кодом.
Android поддерживает различные реализации TEE, поэтому вы не ограничены использованием Trusty. Каждая ОС TEE имеет свой собственный уникальный способ развертывания доверенных приложений. Эта фрагментация может быть проблемой для разработчиков доверенных приложений, пытающихся обеспечить работу своих приложений на каждом устройстве Android. Использование Trusty в качестве стандарта помогает разработчикам приложений легко создавать и развертывать приложения, не принимая во внимание фрагментацию нескольких систем TEE. Trusty TEE предоставляет разработчикам и партнерам прозрачность, совместную работу, возможность проверки кода и простоту отладки. Разработчики доверенных приложений могут объединиться вокруг общих инструментов и API, чтобы снизить риск появления уязвимостей безопасности. Эти разработчики будут уверены, что они могут разработать приложение и повторно использовать его на нескольких устройствах без дальнейшей разработки.
Приложения и услуги
Приложение Trusty определяется как набор двоичных файлов (исполняемых и ресурсных файлов), двоичный манифест и криптографическая подпись. Во время выполнения приложения Trusty работают как изолированные процессы в непривилегированном режиме под ядром Trusty. Каждый процесс работает в своей собственной виртуальной песочнице памяти, используя возможности блока управления памятью процессора TEE. Сборка оборудования изменяет точный процесс, которому следует Trusty, но, например, ядро планирует эти процессы с помощью приоритетного циклического планировщика, управляемого безопасным тиком таймера. Все приложения Trusty имеют одинаковый приоритет.

Рисунок 2. Обзор приложения Trusty.
Надежные сторонние приложения
В настоящее время все приложения Trusty разрабатываются одной стороной и упаковываются с образом ядра Trusty. Весь образ подписывается и проверяется загрузчиком во время загрузки. Разработка сторонних приложений в Trusty в настоящее время не поддерживается. Хотя Trusty позволяет разрабатывать новые приложения, делать это следует с особой осторожностью; каждое новое приложение увеличивает область доверенной вычислительной базы (TCB) системы. Доверенные приложения могут получать доступ к секретам устройств и могут выполнять вычисления или преобразования данных с их помощью. Возможность разрабатывать новые приложения, работающие в TEE, открывает множество возможностей для инноваций. Однако из-за самого определения TEE эти приложения не могут распространяться без какой-либо формы прикрепленного доверия. Обычно это происходит в форме цифровой подписи субъекта, которому доверяет пользователь продукта, на котором работает приложение.
Использование и примеры
TEE быстро становятся стандартом в мобильных устройствах. Пользователи все больше полагаются на свои мобильные устройства в повседневной жизни, и потребность в безопасности постоянно растет. Мобильные устройства с TEE более безопасны, чем устройства без TEE.
На устройствах с реализацией TEE основной процессор часто называют «недоверенным», то есть он не может получить доступ к определенным областям ОЗУ, аппаратным регистрам и предохранителям однократной записи, где производитель хранит секретные данные (например, криптографические ключи, специфичные для устройства). Программное обеспечение, работающее на основном процессоре, делегирует любые операции, требующие использования секретных данных, процессору TEE.
Наиболее известным примером этого в экосистеме Android является фреймворк DRM для защищенного контента. Программное обеспечение, работающее на процессоре TEE, может получить доступ к ключам, специфичным для устройства, необходимым для расшифровки защищенного контента. Основной процессор видит только зашифрованный контент, обеспечивая высокий уровень безопасности и защиты от программных атак.
Существует множество других вариантов использования TEE, например, мобильные платежи, безопасный банкинг, многофакторная аутентификация, защита от сброса настроек устройства, защищенное от повторного воспроизведения постоянное хранилище, безопасная обработка PIN-кодов и отпечатков пальцев и даже обнаружение вредоносных программ.