Разработать программы для Arm Trust Zone

Как я могу разрабатывать приложения, использующие зону доверия Arm? В частности, я хочу разработать программу, которая может сохранять конфиденциальные данные в безопасном мире.

Должна ли эта программа работать в обычном мире или в безопасном мире? Я знаю, что в безопасном мире есть трастлеты, нужно ли мне разрабатывать трастлеты? Есть ли SDK или API, которые я могу использовать для прямого взаимодействия с существующей ОС Secure World, или мне нужно скомпилировать и установить свою собственную ОС Secure?

Любой совет будет принят с благодарностью.

Спасибо!


person jiawen    schedule 16.03.2013    source источник
comment
infocenter.arm.com/help /index.jsp?topic=/com.arm.doc.den0013c/   -  person auselen    schedule 17.03.2013


Ответы (4)


Есть две крайности. Они описаны в Обзор программного обеспечения главы ARMs Технологии безопасности: создание безопасной системы с использованием технологии TrustZone.

API

На одном конце спектра есть только набор API, которые можно вызывать из обычного мира. Это подробно описано в вызовах SMC для Linux. Например, если устройство содержит общедоступный-закрытый ключ, вызов API может подписывать данные. В нормальном мире никогда не будет доступа к закрытому ключу, но любой может убедиться, что устройство является оригинальным, проверив подпись. Таким образом, обычный мир может пересылать этот запрос через любой коммуникационный интерфейс. Это может быть частью аутентификации устройства.

Кооперативные ОС

В этом режиме есть полнофункциональная ОС как в безопасном, так и в обычном мире (называемом TEE и REE). в другом месте). ОС должны взаимодействовать с прерываниями и планированием. Они также могут использовать вызовы SMC, алгоритмы lock free и семафоры вместе с общей памятью.

ARM рекомендует использовать FIQ для безопасного мира и оставить IRQ для обычного мир. В частности, есть настройки, которые не позволяют обычному миру маскировать FIQ. Все эти проблемы зависят от типа IPC, планирования, ответа на прерывание и т. д., которые требуются системе.

Самый простой планировщик Secure всегда опережает обычный мир. Только задача idle уступала ЦП обычному миру. Более гибкое решение предполагает совместную работу планировщиков, чтобы оба мира могли иметь задачи с более высоким и более низким приоритетом.

person artless noise    schedule 16.10.2013
comment
Для безопасного мира API требуется таблица мониторинга (MVBAR) с заполненным только слотом SMC (смещение 0x8). Для ОС вам нужны слоты FIQ и IRQ для обработки прерываний. Если обе ОС поддерживают пейджинг, вам нужны обработчики ошибок инструкций и обработчики ошибок данных. Основные регистры ЦП должны быть сохранены, включая NEON/VFP, ЕСЛИ оба мира используют их. - person artless noise; 26.02.2014
comment
Часть Если обе ОС поддерживают пейджинг, не соответствует действительности. Только внешние прерывания переносятся через данные MVBAR и адреса ошибок страниц. Таким образом, монитору не нужно обрабатывать ошибки страниц, даже если ОС использует MMU. Обычно внешнее прерывание срабатывает из-за проверки разделов вопросы. - person artless noise; 03.09.2014

Лучше всего установить ОС REE и ОС TEE на одном устройстве. Когда программа хочет сделать что-то конфиденциальное, устройство переключится на ОС TEE, чтобы вы могли безопасно обрабатывать конфиденциальные данные. Когда вы закончите с сенситивной датой, устройство переключится на REE OS. Но реализация двух переключателей ОС на устройстве — тяжелая работа.

person Cobain    schedule 04.10.2013

Операционные системы, такие как MobiCore уже существуют и были развернуты на устройствах массового рынка, таких как Samsung Galaxy S3.

MobiCore — это ОС, работающая вместе с Android, поэтому трастлеты (= приложения MobiCore) могут взаимодействовать с приложениями Android с помощью набора системных вызовов к Драйвер MobiCore, который является частью ОС Android, отвечающей за взаимодействие с доверенной средой выполнения.

Если вы хотите разработать трастлеты для MobiCore, как описано выше, вы должны стать разработчиком MobiCore, что теоретически вы можете сделать, зарегистрировавшись в качестве разработчик проекта Trustonic компании MobiCore.

Если вы хотите использовать технологию ARM TrustZone на своем собственном устройстве / плате разработки с защищенной ОС с открытым исходным кодом, возможно, вы можете использовать OpenVirtualization SierraTEE, который, кажется, скомпилирован для Xilinx Zynq-7000 AP SOC, а также совместим с Android в качестве многофункциональной ОС.

person Nimo    schedule 12.11.2013