<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Заметки по доверенной среде выполнения (TEESH)]]></title><description><![CDATA[<p dir="auto"><strong>Trusted Execution Environment SmartHoldem</strong> (TEESH)  набор программных компонентов, поддерживающих на устройстве безопасную среду выполнения операций экосистемы SmartHoldem.</p>
<p dir="auto"><strong>Состоит из:</strong></p>
<ul>
<li>Операционной системы (SH Trusty ОС), работающей на процессоре, поддерживающем TEE</li>
<li>Драйверов для ядра Linux, обеспечивающих взаимодействие с приложениями, работающими под SH Trusty OS</li>
<li>Набора библиотек для взаимодействия с доверенными приложениями, выполняемыми внутри SH Trusty OS, использующего драйверы ядра</li>
<li>API для взаимодействия с распределенными узлами SmartHoldem из внешнего небезопасного мира</li>
</ul>
<p dir="auto">Обычно <strong>TEESH процессор</strong> — это отдельный микропроцессор в системе или виртуальный экземпляр основного процессора. TEESH процессор изолирован от остальной системы механизмами защиты памяти и операций ввода-вывода, реализованными на аппаратном уровне.</p>
<p dir="auto">Основной процессор устройства считается «не доверенным» и не может получать доступ к определённым областям ОЗУ, аппаратным регистрам и безопасным зонам, в которых хранятся секретные данные (например — <strong>криптоключи</strong>)<br />
Для любых операций, требующих эти секретные данные, ПО обращается к TEESH (защищенному) процессору.</p>
<p dir="auto">Самый популярный пример всего этого в экосистеме Android — это <a href="https://source.android.com/devices/drm" target="_blank" rel="noopener noreferrer nofollow ugc">DRM framework</a>, используемый для защиты контента. ПО, работающее в Trusted Execution Environment процессоре, может получать доступ к специфичным для этого устройства ключам, которые нужны для расшифровки защищённого контента. При хорошо организованной защите от программных атак, <strong>основной процессор видит только зашифрованный контент</strong>.</p>
<p dir="auto">Другие примеры использования Trusted Execution Environment: полнодисковое шифрование, многофакторная аутентификация, защита от сброса устройства, защита карт памяти, беспроводная трансляция защищённого контента, безопасная обработка PIN кодов и отпечатков пальцев.</p>
<p dir="auto">Trusty предоставляет API для разработчиков двух классов приложений:</p>
<ul>
<li>Доверенные приложения или сервисы, работающие на TEE процессоре</li>
<li>Обычные/не доверенные приложения, которые работают на основном процессоре и используют сервисы, предоставляемые доверенными приложениями</li>
</ul>
<p dir="auto">ПО, работающее на основном процессоре, может использовать Trusty API для подключения к доверенным приложениям и обмениваться с ними различными сообщениями, подобно тому, как работают сетевые сервисы через IP. Используя определённый протокол, приложения определяют формат данных и семантики этих сообщений. Надёжность доставки этих сообщений гарантируется инфраструктурой, лежащей в основе Trusty (в виде драйверов, работающих на основном процессоре). Все сообщения асинхронны.</p>
<h3>Доверенные сервисы</h3>
<p dir="auto"><strong>Доверенные приложения работают как изолированные процессы</strong> под ядром ОС Trusty. Каждый процесс работает в песочнице с собственной виртуальной памятью, которая управляется средствами <a href="https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%BA_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C%D1%8E" target="_blank" rel="noopener noreferrer nofollow ugc">MMU</a>. Ядро распланировывает эти процессы на основе приоритетов; цикличность планирования задаётся защищённым синхронизатором тактов, все Trusty приложения имеют одинаковый приоритет.</p>
<p dir="auto">Приложения для ОС Trusty могут быть написаны на C/C++.</p>
<p dir="auto"><strong>Структура приложений</strong></p>
<p dir="auto">Приложения Trusty инициализируются один раз в процессе загрузки и размещаются в памяти до тех пока, пока защищенный процессор не будет сброшен. На данный момент не поддерживает динамическую загрузку и выгрузку приложений.</p>
<p dir="auto"><strong>Доверенные приложения написаны как сервисы</strong>, управляемые событиями и ожидающие команды от других приложений или от приложений, работающих в основном процессоре. Доверенные приложения могут быть клиентами других доверенных приложений-сервисов.</p>
<p dir="auto">Одним из видов подтверждения доверия является цифровая подпись, производителю которой пользователь доверяет или хэш сверки подписи в блокчейн.</p>
<hr />
<p dir="auto"><em>Интересно использование чипов</em> <a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BD%D0%B0_%D0%BA%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D0%B5" target="_blank" rel="noopener noreferrer nofollow ugc">SoC</a> (систем на кристалле). <a href="http://www.russianelectronics.ru/leader-r/review/2189/doc/40316/" target="_blank" rel="noopener noreferrer nofollow ugc">Подробная статья тут.</a> это и есть ASIC с спец функциями. К примеру в устройствах Android используется этот чип для обеспечения безопасной среды и хранения ключей.</p>
<p dir="auto"><a href="https://www.digikey.com/product-detail/en/xilinx-inc/XC7Z007S-1CLG400C/122-2008-ND/6593131" target="_blank" rel="noopener noreferrer nofollow ugc">Пример системы</a> на процессоре A9</p>
<h3>Внешние доверенные устройства</h3>
<p dir="auto">Идея вынести выполнение критических операций на отдельное специализированное устройство не нова. К критическим операциям в данном случае стоит отнести работу с ключами и контроль обрабатываемой информации, в нашем варианте это RNG. То есть в этих устройствах необходимо обеспечить генерацию ключей, выполнение криптографических операций и контроль поступаемых на обработку данных. Так же необходимо обеспечить механизм разграничения прав доступа к устройству и обеспечить неизменность исполняемого кода.<br />
Задачу по безопасной работе с ключами достаточно давно и весьма эффективно решают <strong>смарткарты и токены с криптографией</strong> на борту. Ключи генерируются аппаратно в устройствах, криптографические операции выполняются в устройствах, ключи никогда не покидают устройств. Разграничение прав доступа наиболее часто осуществляется с помощью PIN кода. Защита исполняемой программы от модификации обеспечивается производителем чипов на аппаратном уровне. Для борьбы с атаками направленными на несанкционированное использование криптографических возможностей, развитие данных устройств идет по пути добавления функциональности контроля достоверности/целостности данных.<br />
Реализация контроля достоверности данных, поступаемых на обработку, в доверенных устройствах может быть различной. Существует три основных механизма контроля:</p>
<p dir="auto">Доверенный механизм ввода данных. Реализуется с помощью клавиатур ввода данных физически располагаемых на устройстве. Характерным примером являются так называемые «<strong>криптокалькуляторы</strong>», к примеру Ledger Nano S, на клавиатуре которых производится набор платежных реквизитов и затем на основе секрета устройства (или секрета платежной карты) формируется код подтверждения платежа. Основным недостатком решения является необходимость ввода данных вручную. В банковской сфере, для устранения этого неудобства, в устройство может быть добавлена функциональность хранения списка контрагентов.<br />
Визуальный контроль данных, осуществляемый с помощью дисплея доверенного устройства. В отличии от первого способа, данные формируются в недоверенной среде, а затем отображаются на экране доверенного устройства. Корректность данных проверяет пользователь устройства. В случае подтверждения пользователем корректности данных, формируется код подтверждения.</p>
<p dir="auto">Устройства могут иметь различный форм фактор и иметь различные интерфейсы обмена данными. В настоящее время являются самыми удобными для пользователя решениями по созданию доверенной среды.<br />
Получение данных из доверенного источника с криптографической проверкой авторства. Получение данных от доверенного сервера приложений и расшифровка (проверка подписи) в доверенном устройстве. Может сочетается с визуальным контролем данных.</p>
<p dir="auto">По своей сути все внешние доверенные устройства являются <strong>миникомпьютерами с ограниченными функциональными и вычислительными возможностями</strong>. Аутентичность данных обеспечивается наличием собственных интерфейсов ввода-вывода.</p>
<p dir="auto"><strong>Перспективы</strong></p>
<ul>
<li>Использование в генерации <strong>RNG SmartHoldem</strong> на стороне пользователя</li>
<li>Эффективно решить поставленную задачу без некого, отдельного от основного компьютера, устройства не удается.</li>
<li>При использовании загрузки с доверенного носителя для обеспечения безопасности ограничивается функциональность загружаемой ОС.</li>
<li>Внешние подключаемые устройства наращивают свою функциональность.</li>
</ul>
<p dir="auto">Механизм TEE в мобильных устройствах:</p>
<p dir="auto"><img src="/assets/uploads/files/1532266228698-otkrytye_sistemy._subd_1_-8049-_500.png" alt="0_1532266225014_Otkrytye_sistemy.SUBD_1(8049)_500.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Источник: <a href="https://source.android.com/security/trusty/" target="_blank" rel="noopener noreferrer nofollow ugc">https://source.android.com/security/trusty/</a></p>
]]></description><link>https://community.smartholdem.io/topic/357/заметки-по-доверенной-среде-выполнения-teesh</link><generator>RSS for Node</generator><lastBuildDate>Sun, 07 Jun 2026 02:31:21 GMT</lastBuildDate><atom:link href="https://community.smartholdem.io/topic/357.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 May 2018 00:47:02 GMT</pubDate><ttl>60</ttl></channel></rss>