Заметки по доверенной среде выполнения (TEESH). Trusted Execution Environment SmartHoldem


Trusted Execution Environment SmartHoldem (TEESH) набор программных компонентов, поддерживающих на устройстве безопасную среду выполнения операций экосистемы SmartHoldem.

Состоит из:

  • Операционной системы (SH Trusty ОС), работающей на процессоре, поддерживающем TEE
  • Драйверов для ядра Linux, обеспечивающих взаимодействие с приложениями, работающими под SH Trusty OS
  • Набора библиотек для взаимодействия с доверенными приложениями, выполняемыми внутри SH Trusty OS, использующего драйверы ядра
  • API для взаимодействия с распределенными узлами SmartHoldem из внешнего небезопасного мира

Обычно TEESH процессор — это отдельный микропроцессор в системе или виртуальный экземпляр основного процессора. TEESH процессор изолирован от остальной системы механизмами защиты памяти и операций ввода-вывода, реализованными на аппаратном уровне.

Основной процессор устройства считается «не доверенным» и не может получать доступ к определённым областям ОЗУ, аппаратным регистрам и безопасным зонам, в которых хранятся секретные данные (например — криптоключи)
Для любых операций, требующих эти секретные данные, ПО обращается к TEESH (защищенному) процессору.

Самый популярный пример всего этого в экосистеме Android — это DRM framework, используемый для защиты контента. ПО, работающее в Trusted Execution Environment процессоре, может получать доступ к специфичным для этого устройства ключам, которые нужны для расшифровки защищённого контента. При хорошо организованной защите от программных атак, основной процессор видит только зашифрованный контент.

Другие примеры использования Trusted Execution Environment: полнодисковое шифрование, многофакторная аутентификация, защита от сброса устройства, защита карт памяти, беспроводная трансляция защищённого контента, безопасная обработка PIN кодов и отпечатков пальцев.

Trusty предоставляет API для разработчиков двух классов приложений:

  • Доверенные приложения или сервисы, работающие на TEE процессоре
  • Обычные/не доверенные приложения, которые работают на основном процессоре и используют сервисы, предоставляемые доверенными приложениями

ПО, работающее на основном процессоре, может использовать Trusty API для подключения к доверенным приложениям и обмениваться с ними различными сообщениями, подобно тому, как работают сетевые сервисы через IP. Используя определённый протокол, приложения определяют формат данных и семантики этих сообщений. Надёжность доставки этих сообщений гарантируется инфраструктурой, лежащей в основе Trusty (в виде драйверов, работающих на основном процессоре). Все сообщения асинхронны.

Доверенные сервисы

Доверенные приложения работают как изолированные процессы под ядром ОС Trusty. Каждый процесс работает в песочнице с собственной виртуальной памятью, которая управляется средствами MMU. Ядро распланировывает эти процессы на основе приоритетов; цикличность планирования задаётся защищённым синхронизатором тактов, все Trusty приложения имеют одинаковый приоритет.

Приложения для ОС Trusty могут быть написаны на C/C++.

Структура приложений

Приложения Trusty инициализируются один раз в процессе загрузки и размещаются в памяти до тех пока, пока защищенный процессор не будет сброшен. На данный момент не поддерживает динамическую загрузку и выгрузку приложений.

Доверенные приложения написаны как сервисы, управляемые событиями и ожидающие команды от других приложений или от приложений, работающих в основном процессоре. Доверенные приложения могут быть клиентами других доверенных приложений-сервисов.

Одним из видов подтверждения доверия является цифровая подпись, производителю которой пользователь доверяет или хэш сверки подписи в блокчейн.

Интересно использование чипов SoC (систем на кристалле). Подробная статья тут. это и есть ASIC с спец функциями. К примеру в устройствах Android используется этот чип для обеспечения безопасной среды и хранения ключей.

Пример системы на процессоре A9

Внешние доверенные устройства

Идея вынести выполнение критических операций на отдельное специализированное устройство не нова. К критическим операциям в данном случае стоит отнести работу с ключами и контроль обрабатываемой информации, в нашем варианте это RNG. То есть в этих устройствах необходимо обеспечить генерацию ключей, выполнение криптографических операций и контроль поступаемых на обработку данных. Так же необходимо обеспечить механизм разграничения прав доступа к устройству и обеспечить неизменность исполняемого кода.
Задачу по безопасной работе с ключами достаточно давно и весьма эффективно решают смарткарты и токены с криптографией на борту. Ключи генерируются аппаратно в устройствах, криптографические операции выполняются в устройствах, ключи никогда не покидают устройств. Разграничение прав доступа наиболее часто осуществляется с помощью PIN кода. Защита исполняемой программы от модификации обеспечивается производителем чипов на аппаратном уровне. Для борьбы с атаками направленными на несанкционированное использование криптографических возможностей, развитие данных устройств идет по пути добавления функциональности контроля достоверности/целостности данных.
Реализация контроля достоверности данных, поступаемых на обработку, в доверенных устройствах может быть различной. Существует три основных механизма контроля:

Доверенный механизм ввода данных. Реализуется с помощью клавиатур ввода данных физически располагаемых на устройстве. Характерным примером являются так называемые «криптокалькуляторы», к примеру Ledger Nano S, на клавиатуре которых производится набор платежных реквизитов и затем на основе секрета устройства (или секрета платежной карты) формируется код подтверждения платежа. Основным недостатком решения является необходимость ввода данных вручную. В банковской сфере, для устранения этого неудобства, в устройство может быть добавлена функциональность хранения списка контрагентов.
Визуальный контроль данных, осуществляемый с помощью дисплея доверенного устройства. В отличии от первого способа, данные формируются в недоверенной среде, а затем отображаются на экране доверенного устройства. Корректность данных проверяет пользователь устройства. В случае подтверждения пользователем корректности данных, формируется код подтверждения.

Устройства могут иметь различный форм фактор и иметь различные интерфейсы обмена данными. В настоящее время являются самыми удобными для пользователя решениями по созданию доверенной среды.
Получение данных из доверенного источника с криптографической проверкой авторства. Получение данных от доверенного сервера приложений и расшифровка (проверка подписи) в доверенном устройстве. Может сочетается с визуальным контролем данных.

По своей сути все внешние доверенные устройства являются миникомпьютерами с ограниченными функциональными и вычислительными возможностями. Аутентичность данных обеспечивается наличием собственных интерфейсов ввода-вывода.

Перспективы

  • Использование в генерации RNG SmartHoldem на стороне пользователя
  • Эффективно решить поставленную задачу без некого, отдельного от основного компьютера, устройства не удается.
  • При использовании загрузки с доверенного носителя для обеспечения безопасности ограничивается функциональность загружаемой ОС.
  • Внешние подключаемые устройства наращивают свою функциональность.

Механизм TEE в мобильных устройствах:

Новости платформы SmartHoldem после запуска шлюза XBTS.io

_Так же можете подписаться на телеграмм канал Сommunity SmartHoldem , чтобы быть в курсе всех актуальных новостей проекта SmartHoldem._


Comments 1