Что помешает хакеру, получившему доступ к пространству ядра, деактивировать MMU и напрямую получить доступ к области физической памяти безопасного мира?
MMU вообще не связан с TrustZone. Таким образом, отключение MMU ничего не дает. Возможны атаки на код монитора, безопасный API ОС (в обычном мире), защиту шины, загрузочный код или аппаратное обеспечение. MMU с расширениями безопасности позволяет коду безопасного мира обращаться к памяти, как в обычном мире, и соответственно сбоить.
Подобно мошенническому ядру нормального мира, отключающему MMU, атака DMA также может использоваться на традиционном гипервизор. Цель TrustZone — избежать этих атак.
TZASC — это один из способов безопасного загрузочного кода для блокировки оборудования. Вы можете думать об этом как о разделении оборудования между безопасным и обычным с возможностями доступа для чтения/записи.
| read | write
-------------+------------------
normal super | Y/N | Y/N
normal user | Y/N | Y/N
-------------+------------------
secure super | Y/N | Y/N
secure user | Y/N | Y/N
Первые две строки есть во всех системах ARM. Последние два относятся к TrustZone. Физически это сигналы на шине. Биты: чтение/запись, безопасный/нормальный (бит тега NS) и супер/пользователь. Каждый мастер BUS будет статически назначен миру или, если мастер поддерживает TrustZone, он может быть динамическим. Одним из примеров динамического мастера является ЦП. Для ведомых устройств это либо память (большой массив аналогичных вводов-выводов), либо небольшие банки регистров контроллера. Для памяти TZASC позволяет разбивать память на разделы. Для подчиненных устройств с меньшим регистром обычно реализуется более простой доступ к шине «все или ничего» (например, TZPC). TrustZone очень расплывчата для системного программиста, потому что она гибкая и позволяет использовать различные конструкции SOC.
Может быть, это даже не мыслимо и не осуществимо? Но если это так, я предполагаю, что TZPC обязателен для предотвращения этого, я прав? Или достаточно «просто» использовать два мира TrustZone?
TZPC – это пример простого безопасного/нормального секционирования подчиненного устройства. Для ввода-вывода на основе регистров на AMBA APB (расширенная периферийная шина).
[Этот раздел задуман как конкретный пример гибкости архитектуры TrustZone, позволяющей разработчикам SOC создавать новые устройства, которые могут быть полезны для некоторых конкретных приложений.]
Рассмотрим систему, в которой у нас есть один чип NAND (NFC), но мы хотим разрешить как безопасный, так и обычный доступ, а обычный мир не может получить доступ к защищенным данным. Если мы создадим контроллер NFC с поддержкой TrustZone, у нас может быть два банка регистров ввода-вывода и данных DMA для указанных пользователем буферов. Один банк регистров безопасный, другой обычный. Контроллер NFC будет безопасным мастером, а чип NFC будет безопасным подчиненным. Когда кто-то получает доступ к обычному банку регистров контроллера NFC, гипотетический чип должен проверить, разрешен ли доступ (это будет аппаратное обеспечение в приведенных выше атаках) и еще один пример динамического мастера. Когда он читается от имени обычного мира, он будет использовать DMA с NS, установленным так, чтобы применялись разрешения на доступ к обычному миру.
person
artless noise
schedule
08.09.2015