Проблема доверия к импортной электронике
Мир электронных устройств, который нас окружает, условно можно разделить на два больших класса – это компьютеры и сервера, на которых мы работаем (на процессорах Intel, AMD и др.), и множество носимой и встроенной электроники – гаджеты, бытовая, телекоммуникационная электроника, промышленная автоматика, автомобильная и др. встраиваемая электроника - всё это, как правило, построено на базе микропроцессоров архитектуры ARM.
Что особенного в современных ARM-процессорах?
- Это "система на кристалле" (SoC – System on Chip) – т.е. в одном микроконтроллере в одном корпусе содержится и процессор, и память, и контроллеры внешних устройств для общения с внешним миром.
- Начиная с процессоров ARM Cortex A5 (мультимедийная серия, использующаяся в смартфонах, планшетах, Smart-TV, принтерах, сканерах, платёжных, навигационных терминалах и пр.) и Cortex R4 (серия для промышленных контроллеров, АСУ ТП, встраиваемых и управляющих систем) в них появилась, так называемая, технология TrustZone (доверенная зона).
Что такое TrustZone?
Это аппаратное разделение (виртуализация) ARM-процессора на два изолированных друг от друга "мира" – Secure World и Normal World, позволяющее запущенным в них ОС и приложениям работать независимо друг от друга с использованием одного ядра процессора и набора периферии.
При загрузке процессора сначала загружается специализированная компактная Secure OS, находящаяся в Secure World и контролирующая все коммуникации процессора с внешним миром (контроллеры и периферию). Она же формирует и профиль безопасности (доступные ресурсы, например, объём памяти, доступность внешней периферии и пр.) для "гостевой" (Guest / Rich OS), в которой будет работать "основная" ОС (iOS, Android, Sailfish, Tizen, Linux, Windows и др.) в "нормальном" привычном для нас "мире" Normal World.
Несмотря на то, что эти два "мира" изолированы друг от друга, между ними есть тесная связь и возможность общения:
- Secure OS с загруженными в неё трастлетами (доверенными приложениями) имеют неограниченные возможности и могут получить полный доступ ко всему – ко всей памяти, к ключам, к вводу-выводу...
- Все ОС (вкл. сертифицированные), работающие в Normal World, в своём ядре имеют команды передачи управления на Secure OS. Делается это с помощью вызовов Secure Monitor Call (команды SMC#0 в ядре любой упомянутой ОС).
В чём проблема?
- Secure OS, работающая в TrustZone, имеет полный доступ ко всем ресурсам процессора, управляет всеми коммуникациями с внешним миром, загружается раньше "гостевой" ОС и полностью контролирует её работу.
- Secure OS работает скрытно, так, что "гостевая" ОС "считает", что она работает на чистом "железе", полностью контролируя его работу. На самом деле это не так – данные об объёме памяти, работе периферии она получает от Secure OS, команды и данные, пересылаемые периферийным устройствам, также проходят через Secure OS. Кто мешает ей делать предобработку, например, менять GPS-координаты или сохранять копии документов в скрытой памяти?
- Secure OS и приложения из TrustZone могут скрытно и необнаруживаемо выполнять различные шпионские функции - включать микрофон, камеру, копировать вывод на экран, контролировать обмен данными, манипулировать информацией, красть криптографические ключи, отпечатки пальцев (с сенсора), ключи и пароли для доступа в гос. и корпоративные информационные системы и т.п.
- Удалить вызовы Secure Monitor (команды SMC#0) из ядра "гостевых" ОС нельзя – они перестанут работать на этих процессорах, поскольку управлением режимами энергосбережения, загрузкой аппаратных ядер процессора, кэшем и пр. занимается именно Secure OS (как BIOS в Intel'овских системах).
- Удалить или заменить Secure OS в TrustZone практически невозможно (она "заперта" на секретном ключе), обнаружить – крайне сложно – только по косвенным признакам, например, по наличию команд SMC#0 в ядре "гостевой" ОС.
- Написать свою Secure OS и загрузить её в импортный ARM-процессор – задача крайне не тривиальная, поскольку документация на аппаратный уровень процессоров, как правило, не доступна (особенно для российских компаний), ключи процессора для загрузки своей Secure OS нам так же никто не даст.
- ARM-процессоры с "открытой" TrustZone или без неё крайне небезопасны.