Обработка ARM TrustZones

У ARM есть что-то под названием TrustZone. Согласно документации ARM, это означает, что процесс может работать в безопасном/небезопасном мире.

  1. Что означает безопасный/небезопасный мир. Связано ли это с режимами выполнения процессора или связано с настройкой разрешений областей памяти или с чем-то еще.
  2. Есть ли какая-то связь между 7 режимами работы ARM и безопасным/незащищенным миром.
  3. Как включить TrustZone в ARM.
  4. С какой версии ARM это введено.
  5. Обязательно ли использовать этот TrustZone. Использует ли ядро ​​Linux это расширение TrustZone.

Пожалуйста, помогите мне понять это.


person Prabagaran    schedule 08.09.2012    source источник


Ответы (2)


http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/index.html — довольно хороший вводный документ, который дает обзор чего-то слишком сложного, чтобы его можно было удовлетворительно объяснить, набрав текст. коробка. Но я постараюсь ответить на ваши прямые вопросы ниже.

  1. Это относится к дополнительной опции привилегий, ортогональной режимам выполнения. Безопасный мир может помечать доступ к памяти как безопасный, но также может выполнять небезопасный доступ. В обычном мире возможен только незащищенный доступ. Кроме того, некоторые параметры конфигурации процессора доступны только для Безопасного мира. Цель состоит в том, чтобы изолировать безопасное программное обеспечение в простой среде, где оно не может быть (непосредственно) уязвимым для программных эксплойтов в основной операционной системе устройства или прикладном программном обеспечении.
  2. Нет, кроме добавления дополнительного режима «монитор». Этот режим монитора используется для «переключения контекста» между обычным и безопасным миром.
  3. TrustZone не включен, он реализован (или нет).
  4. TrustZone был представлен в расширениях безопасности для архитектуры ARM версии 6. Первым процессором, поддерживающим его, был ARM1176. Все процессоры Cortex-A поддерживают его.
  5. «Нет», хотя, поскольку процессоры с поддержкой TrustZone начинают выполняться в безопасном состоянии при включении питания, если загрузчик ничего не делает для изменения состояния безопасности, все программное обеспечение будет работать как безопасное (удаляя любые преимущества безопасности). Нет, среда TrustZone явно предназначена для работы вместе с вашей ОС, а не для прямой интеграции в нее. Для некоторых платформ ядро ​​Linux выполняет вызовы Secure Monitor, чтобы запросить у Secure world изменение определенных параметров конфигурации системы.
person unixsmurf    schedule 09.09.2012
comment
1. Двухъядерный процессор OMAP 4430 работает на Cortex A9, который является ARMv7. А ARMv7 поддерживает TrustZone. Включены ли функции зоны доверия в OMAP4430. Как проверить включен он или нет. 2. Какие изменения кода на уровне ядра необходимы для поддержки зоны доверия? - person Prabagaran; 11.09.2012
comment
Как я сказал в своем ответе, TrustZone не является чем-то, что вы включаете, поэтому, если вы не объясните мне более подробно, что вы хотите знать, я не смогу вам помочь. Что ты пытаешься сделать? - person unixsmurf; 11.09.2012
comment
@unixsmurf ‹‹Все программное обеспечение будет работать как безопасное (удаляя любые преимущества безопасности). Я ДУМАЮ, что здесь вы хотите сказать НЕБЕЗОПАСНОСТЬ. Поправьте меня, если я ошибаюсь. иначе вы можете отредактировать, чтобы отразить NON-SECURE. СПАСИБО за подробный ответ :) - person kumar; 04.07.2013
comment
@kumar Его ответ правильный. Причина в том, что secure является привилегированным, поэтому код, не знающий о TrustZone, все равно будет работать без каких-либо изменений (например, ядро ​​Linux, VxWorks и т. д.). . Чтобы разместить обычный мир, вам нужно что-то в безопасном мире для его размещения. Так что по умолчанию все работает в безопасном мире; На некоторых устройствах загрузочный код SOC автоматически переключается в обычный мир, но этот загрузочный код должен настроить обычный мир для запуска ОС. - person artless noise; 04.07.2013
comment
Спасибо @artlessnoise, это полезное уточнение. - person unixsmurf; 05.07.2013

Чтобы дополнить ответ UnixSmurfs,

Что означает безопасный/небезопасный мир. Связано ли это с режимами выполнения процессора или связано с настройкой разрешений областей памяти или с чем-то еще.

В основном это связано с областями памяти. Все устройства, совместимые с TrustZone, будут помечать доступ к шине AXI битом NS. Этот бит указывает, осуществляется ли доступ из безопасного или из обычного мира. Таким образом, даже периферийные устройства DMA, находящиеся под контролем нормального мира, могут быть изолированы.

Есть ли какая-то связь между 7 режимами работы ARM и безопасным/незащищенным миром.

Не совсем. Однако существует между мирами, который называется Режим монитора, и, по-видимому, он самый мощный из множества. Режим мониторинга — это посредник между безопасным и нормальным миром. Он может получить доступ к регистрам обычного мира CP15, сохраняя при этом представление системной памяти защищенного мира (установит бит NS на 0).

Как включить TrustZone в ARM.

Включить — это немного перегруженное слово. Он встроен в ЦП, как указывает unixsmurf. По умолчанию процессоры с поддержкой TrustZone будут загружаться в защищенном мире. Если вы ничего не делаете, вы можете не заметить, что ЦП поддерживает TrustZone. Только при настройке обычного мира и передаче ему управления можно будет использовать TrustZone; возможно, это то, что вы подразумеваете под включить.

С какой версии ARM это введено.

Есть два вкуса:

  1. Совместимость с TrustZone.
  2. TrustZone включен.

Ответ на этот вопрос содержится в разделе 4.2 Технического описания безопасности TrustZone. ARM1176JZ(F)-S, Cortex-A8, Cortex-A9, Cortex-A9-MPCore и Cortex-A5 поддерживает TrustZone. ARM1156T2(F)-S и Cortex-R4 совместимы; они могут быть вторымnd ядром в системе. По мере разработки новых ядер они могут добавляться в список; этот вопрос является движущейся мишенью.

Обязательно ли использовать этот TrustZone. Использует ли ядро ​​Linux это расширение TrustZone.

Это не обязательно. Ядро Linux может играть две роли; безопасный и нормальный мир. Дополнительную информацию об использовании < em>TrustZone с Linux.

На некоторые вопросы нет ответа, на что ссылается UnixSmurf; вы должны убедиться, что все ведущие устройства и ведомые устройства правильно осведомлены о бите NS. Эта информация находится за пределами информации о ЦП и включает в себя арбитры BUS; другая тема, похожая на книгу.

См.: PRD29-GENC-009492C
ARM TrustZone как метод виртуализации во встроенных системах
Построение надежных вычислений блокирует с помощью ARM TrustZone
Доверенная прошивка ARM

person artless noise    schedule 29.05.2013
comment
Есть ли обновление для RPI3 по безопасной загрузке с SD-карты? - person 0x90; 01.09.2017