Доверенная вычислительная среда
Доверенная вычислительная среда (англ. trusted execution environment, TEE) — это защищённая область основного процессора (ЦПУ), обеспечивающая безопасность кода и данных, загруженных в неё, с точки зрения конфиденциальности и целостности. Конфиденциальность данных предотвращает несанкционированный доступ к данным из-за пределов TEE, тогда как целостность кода препятствует его подмене или изменению неавторизованными лицами, которыми в некоторых случаях могут быть даже владельцы устройства, как это реализовано в схемах DRM, например, в Intel SGX.
Это достигается за счёт аппаратной поддержки, уникальных, неизменяемых и секретных архитектурных механизмов безопасности, которая включает шифрование памяти на уровне «железа» и изоляцию участков кода и данных приложений. Пользовательское приложение может выделять в памяти приватные регионы, называемые анклавами, защищённые даже от процессов с более высокими привилегиями[1][2][3]. Как изолированная среда исполнения, TEE предоставляет такие возможности безопасности, как изолированное выполнение, контроль целостности доверенных приложений и обеспечение конфиденциальности их ресурсов. В целом TEE формирует пространство исполнения с более высокой степенью защиты для доверенных приложений, чем развитая операционная система (OS), и обеспечивает большую функциональность, чем специализированные микросхемы — SE.
История
Впервые термин TEE был введён консорциумом Open Mobile Terminal Platform (OMTP) в стандарте «Advanced Trusted Environment: OMTP TR1», где TEE определялась как «совокупность аппаратных и программных компонентов, предоставляющая необходимые функции для работы приложений», причём оговаривался уровень безопасности — только от программных атак (Профиль 1) либо как от программных, так и от физических атак (Профиль 2)[4].
Позднее на базе технологии TrustZone от ARM появились коммерческие решения TEE, соответствующие TR1, такие как Trusted Foundations от Trusted Logic[5].
Работа над стандартами OMTP завершилась в 2010 году, когда организация интегрировалась в Wholesale Applications Community (WAC)[6].
Документация OMTP, включая определения TEE, в дальнейшем была размещена у GSMA[7].
Технические особенности
TEE, как правило, представляет собой аппаратный механизм изоляции и специальную защищённую операционную систему, хотя иногда понятие трактуется шире — «как любое защищённое решение» (в том числе и программное)[8][9][10][11]. В то время как спецификация GlobalPlatform требует аппаратной изоляции, другие организации, такие как EMVCo, допускают как аппаратные, так и программные решения[12]. FIDO использует концепцию TEE в ограниченных средах функционирования доверенных устройств на базе аппаратной изоляции[13]. Только доверенные приложения в TEE имеют доступ ко всем возможностям процессора, периферии и памяти устройства, при этом аппаратная изоляция защищает эти ресурсы от пользовательских приложений на основной ОС. Защита между доверенными приложениями внутри TEE обеспечивается программными и криптографическими средствами[14].
К стандартам TEE причастны поставщики услуг, мобильные операторы (MNO), разработчики ОС и приложений, производители устройств и платформ, а также чипмейкеры.
Для предотвращения имитации аппаратных функций пользовательским ПО используются механизмы «аппаратного корня доверия» — набор приватных ключей, внедряемых в чип на этапе производства, обычно с использованием одноразовой памяти (eFuse), что делает невозможным их замену даже после сброса устройства. Открытая часть ключей хранится у производителя вместе с хэшем публичного ключа доверенного лица (обычно производителя чипов), который применяется для подписи доверенной прошивки и контроля операций с криптографией.
Доступ к привилегированным функциям осуществляется только для программ, подписанных ключом поставщика. При запуске открытый ключ сверяется с эталонным хэшем в чипе, и, если хэши совпадают, его используют для проверки цифровой подписи контролируемой производителем прошивки (например, цепочки загрузчиков в Android или «архитектурных анклавов» в SGX). Такая прошивка нужна для реализации механизма удалённого засвидетельствования («remote attestation»)[15].
При засвидетельствовании приложение загружает доверенный компонент в память, защищённый аппаратно от модифицируемых недоверенных частей. Сервер-верификатор выдаёт не-дубликатируемое случайное число (nonce), используемое в протоколе аутентификации, подтверждающем целостность и подлинность приложения. Создать такое подтверждение невозможно на имитируемом оборудовании (QEMU), так как ключи доступны только доверенной прошивке[16].
Реальное извлечение ключей требует сложного и дорогостоящего оборудования и навыков, например, сканирующего электронного микроскопа, микрозондирования, декапсуляции чипа, focused ion beam и проч.[17][18][19][20] В хорошо спроектированных устройствах вскрытие приводит к уничтожению ключа, поэтому извлечённые значения недоступны повторно; чаще всего ключи уникальны для каждого чипа (например, физически неклонируемые функции)[21].
Хотя в архитектуре TEE возможно обеспечение контроля устройства только его владельцем (например, путём записи собственного ключа в e-fuse), на практике крупные производители электроники реализуют схемы, при которых реальный контроль и допуск к алгоритмам засвидетельствования принадлежит вендору. Это позволяет коммерциализировать рынок доступа к TEE, реализовать такие модели, как монетизация через антифункции (реклама, сбор статистики, искусственное ограничение функций), tivoization и DRM.
Применения
TEE используется в различных целях, хотя большинство из них связано именно с ограничением управления устройством его владельцем.
Многие публикации по TEE рассматривают вопросы защиты премиального контента, что является предпочтительным обозначением для правообладателей. Эта задача представляет частный случай DRM и вызывает споры в некоторых сообществах, таких как Фонд свободного программного обеспечения (FSF)[22]. Такой подход даёт возможность ограничить способы использования контента (например, 4К-видео) конечным пользователем на смартфонах, планшетах и телевизорах благодаря невозможности доступа владельца устройства к защищённым данным и прямым аппаратным каналам между TEE и экранами или подсистемами вывода.
TEE применяется для защиты расшифрованных данных на устройстве: если при передаче видео и аудио используется внешнее шифрование, то именно TEE гарантирует, что после расшифровки контент не попадёт во внешнюю среду или к программам, не одобренным поставщиком.
Мобильные приложения, такие как кошельки, P2P-платежи, бесконтактная оплата и торговые терминалы, предъявляют особые требования к безопасности. Для защиты финансовых операций используется TEE, в том числе совместно с NFC, безопасными элементами (SE) и защищёнными серверными системами.
В ряде сценариев необходимо взаимодействие с пользователем и ввод чувствительных данных (PIN-код, пароль, биометрия), для чего TEE может предоставлять доверенный пользовательский интерфейс.
С ростом числа криптовалют TEE применяют также для реализации крипто-кошельков, обеспечивая аппаратную защиту токенов и необходимых вычислений[23].
TEE подходит для поддержки биометрических систем аутентификации — распознавания лиц, отпечатков пальцев, голосового подтверждения, позволяя хранить шаблонные данные для сравнения с текущим «снимком» (отпечаток, образец голоса), а также запускать сопоставляющий механизм непосредственно внутри доверенного окружения.
Такой подход надёжно изолирует биометрические данные от пользовательских приложений и может соответствовать высоким стандартам безопасности операторов связи при низкой себестоимости устройств.
Государственные структуры, корпорации и облачные сервисы используют TEE для обработки конфиденциальных данных на мобильных устройствах и серверах. TEE защищает от атак на программном уровне, изолируя доверенные приложения от основной ОС и вредоносных программ. Это особенно важно при модели BYOD (bring your own device) и в корпоративных облачных инфраструктурах.
Рост использования повторяемых программных модулей стимулирует переход к модульной архитектуре: независимые модули взаимодействуют друг с другом, а TEE обеспечивает изоляцию, надёжность и защищённую коммуникацию между ними (например, через сериализацию объектов и прокси-сервисы).
Операционные системы TEE
| Компания | Продукт | Используемое оборудование | API-стандарт | Тип сертификации | Примечания |
|---|---|---|---|---|---|
| Alibaba | Cloud Link TEE | GlobalPlatform | Полная | [24] | |
| Apple | Secure Enclave | Отдельный процессор | Проприетарный | [25] | |
| BeanPod | ARM TrustZone | GlobalPlatform | [26] | ||
| Huawei | iTrustee | ARM TrustZone | GlobalPlatform | Полная | [27] |
| Trusty | ARM / Intel | Проприетарный | [28] | ||
| Linaro | OPTEE | ARM TrustZone | GlobalPlatform | [29] | |
| ProvenRun | ProvenCore | ARM TrustZone | [30] | ||
| Qualcomm | QTEE | ARM TrustZone | GlobalPlatform + проприетарный | [31] | |
| Samsung | TEEgris и Knox | ARM TrustZone | GlobalPlatform | Полная | [32] |
| TrustKernel | T6 | ARM / Intel | GlobalPlatform | [33] | |
| Trustonic | Kinibi | ARM TrustZone | GlobalPlatform | Полная | [34] |
| Trustonic | SW TEE | Программная TEE | GlobalPlatform | [34] | |
| uberSpark | uberXMHF | ARM TrustZone / Intel | Формальная машинная верификация | [35] | |
| Watchdata | WatchTrust | ARM TrustZone | GlobalPlatform | Полная | [36] |