что такое sgx в биосе
Технология Intel Software Guard Extensions в картинках
В прошлом году мы в блоге Intel уже публиковали пост о технологии Intel Software Guard Extensions (Intel SGX), поддержку которой внедрили в процессорах Intel Core шестого поколения. Тогда речь шла в основном об идеологических моментах; думается, настало время рассказать, как это работает. В этом посте будет много иллюстраций из подробной (более 200 слайдов) презентации Intel, посвященной этой технологии. В ней, конечно, сказано гораздо больше, чем здесь, так что вы теперь знаете, где можно продолжить изучение вопроса.
Кольца защищенного режима разделяют привилегированный код ядра и код приложений, а также отделяют приложения друг от друга. Однако при этом приложения не защищены от атак со стороны привилегированного кода. Зловредное приложение может проникнуть в него с помощью эксплойта и затем внедриться в беззащитную жертву. При этом участок для атаки очень широк: нападать можно и на компоненты ОС, и на само приложение, и даже на аппаратную подсистему.
Смысл SGX состоит в том, чтобы сузить периметр защиты, разместив все критически важные данные в отдельных областях-анклавах, недоступные даже из кода ядра. При этом, однако, не должен коренным образом изменяться процесс разработки и среда, где исполняется приложение.
Приложение состоит из двух частей: доверенного и общего. При запуске оно создает анклав в защищенной части памяти, состоящий из страниц размером 4 Кб. При вызове доверенной функции она видит данные анклава, любой другой внешний доступ (в том числе и со стороны ОС) запрещен. После окончания работы функции анклав остается в защищенной области.
Среда защищенного исполнения встроена в пользовательский процесс, у нее собственные код и данные. Она обеспечивает безопасность, целостность данных, контроль входных точек, поддерживает многопоточность.
При попытке доступа к анклаву проверяется, находятся ли по данному адресу данные вызывающего процесса (EPC, Enclave Page Cache). Далее подвергаются контролю полномочия функции (EPCM, Enclave Page Cache Metadata), и только потом предоставляется требуемый доступ.
Аттестация происходит следующим образом. Анклав запрашивает аппаратно подписанный отчет, содержащий, в том числе информацию о целостности анклава. Этот отчет отсылается на аттестующий сервер, где происходит его верификация. Анклаву высылается ключ приложения (открытая часть ключа), где генерируется подписывающий (приватный) ключ, зависящий от анклава и платформы. Ключ приложения шифруется подписывающим ключом и сохраняется для дальнейшего использования.
Функционал Intel Software Guard Extensions реализуется с помощью комбинации SGX инструкций, поддерживающих локальную аттестацию и предоставляемого Intel аттестационного анклава для поддержки удаленной аттестации.
Разработчики SGX предусмотрели защиту от различного рода атак на данные и код: угрозы со стороны пользовательского и системного ПО, а также загрузчика. Заметим, что средствами SGX невозможно защититься от side-channel уязвимостей, когда злоумышленники собирают статистику использования ЦПУ для определения характеристик исполняемого на нем кода. Для решения подобного рода задач предназначены средства динамического анализа программ, такие, например, как Pin.
Для предотвращения перехвата данных при обмене между процессором и памятью используется Memory Encryption Engine (MEE), работающий как расширение контроллера памяти и поддерживающий технологию SGX. Для определенных областей памяти осуществляется шифрование данных, передающихся по шине. MEE использует специальные комбинации криптографических примитивов для эффективного шифрования при очень жестких требованиях по задержкам.
Как выглядит разработка приложений, поддерживающих SGX? Чувствительные фрагменты кода и данных размещаются в отдельном shared object (.so). Далее определяются интерфейса анклава и генерируются заглушки. Библиотеки SGX взаимодействуют с кодом через API, для разработки используются обычные, привычные для разработчика тулчейны. Для облегчения процесса обработки уже имеется Intel SGX SDK.
Что обещает нам технология Intel SGX? Прежде всего то, что требования к техническим навыкам пользователя, работающего с конфиденциальной информацией, могут быть сильно сокращены. Ей больше не страшны вирусы, трояны и странные программы, которые могут иметься на его компьютере. Далее, повысится доверие к облачным платформам – им можно будет доверять свои приложения, поскольку они будут защищены от любого кода хоста. Конечно, все это дело довольно далекого будущего, ведь процессоры Skylake еще только появились. Но использовать SGX можно уже сейчас. Мы готовы углубляться в эту тему и отвечать на любые вопросы, с ней связанные.
Trusted Execution Environment на примере Intel SGX. Основные принципы простыми словами. «Hello World!»
Данная статья направлена, прежде всего, на начинающего специалиста, который только
приступил к исследованию методов и способов обеспечения информационной безопасности исполняемого программного кода. С такой задачей рано или поздно сталкиваются все разработчики ПО и системные инженеры, что и произошло на одном из проектов компании Альтирикс системс, в рамках которого необходимо было реализовать защищенное исполнение программного кода в условно не защищенной среде. Для чего, помимо, уже известных и хорошо описанных методов и средств защиты информации, была выбрана, достаточно редко применяемая в российских проектах технология Trusted Execution Environment (TEE) или, говоря по-русски, технология доверенных сред исполнения. Конкретно в этой статье мы решили описать практический пример использования анклавов процессора Intel для доверенной среды исполнения кода (Intel Software Guard Extensions или SGX).
Доверенные среды исполнения поддерживаются далеко не только процессорами данного производителя. Также, TEE поддерживается рядом процессоров AMD (Secure Execution Environment, Secure Technology), процессорами с архитектурой ARM (TrustZone), процессорами с архитектурой RISC-V. Кроме того, TEE поддерживается современными мейнфреймами IBM Z. Мы же выбрали Intel SGX для своего примера поскольку считаем, что на момент написания статьи (лето 2020г.) процессоры Intel наиболее популярны и доступны для начинающих специалистов на постсоветском пространстве. С полным перечнем моделей процессоров Intel с поддержкой Intel SGX можно ознакомиться на сайте Intel в разделе Intel product specifications (ARK), выбрав для поиска соответствующую технологию. И да, возможно, воспользоваться эмуляциями Intel SGX для учебных или исследовательских целей. Работа с несколькими из таких эмуляций выявила ряд сложностей в их настройке. Также нужно понимать, что для реальных “боевых” проектов никакая эмуляция технологии основанной на аппаратом функционале, естественно, недопустима.
Любой ваш отзыв, особенно, с замечаниями и дополнениями от специалистов уже имеющих опыт применения TEE в своих проектах, или же с вопросами от тех, кто точно так же только начинает погружаться в эту технологию, поспособствуют более детальному раскрытию данной темы в следующих статьях. Заранее спасибо!
Введение
Основной вопрос, который мы задаем в начале пути изучения доверенных сред исполнения: можем ли мы доверять компонентам системы компьютера? А если можем, то каким? Разработчики, а в частности инженеры Intel, дают на этот вопрос однозначный ответ: никому, кроме самого Intel. Что под этим подразумевается? Предлагаю поподробнее в этом разобраться.
Кольца привилегий
В целях безопасности, компоненты системы любого компьютера разделены по уровням привилегий. Во всех современных системах, базирующихся на процессорах Intel и не только, реализована кольцевая система уровней привилегий. От внешнего к внутреннему идет расширение полномочий для кода, который обрабатывается в данный момент процессором.
Кольцо №3. На внешнем кольце располагаются все пользовательские приложения, которые мы используем на компьютере в повседневной жизни, они имеют низший уровень доступа.
Кольцо №2 и №1. На данных уровнях располагаются операционные системы и драйвера устройств.
Кольцо №0. Режим супервизора. Здесь расположено ядро операционной системы (управление периферий, распределение ресурсов между процессами), а также системные драйвера.
Кольцо №-1. Гипервизор. Отвечает за распределение ресурсов в случае, если на компьютере одновременно запущены несколько операционных систем, а также отвечает за их изоляцию.
Кольцо №-2. Режим системного управления (SMM – System Management Mode). Управляет энергообеспечением системы, управляет платами расширения.
Мы можем формировать всё новые и новые кольца для ограничения полномочий компонентов иерархии, создавая всё более сложную и нагруженную систему. Однако, таким образом работа для злоумышленника только облегчится: чем сложнее система, тем проще найти в ней уязвимость. Но каким же образом обеспечить дополнительный уровень безопасности там, где это требуется? Ответ состоит из одного слова.
Анклавы
Основной задачей злоумышленника является получение уровня привилегий, который обеспечил бы ему доступ к необходимым ресурсам системы. Если это секрет приложения-жертвы, то злонамеренному приложению необходим именно тот уровень доступа, который отвечает за хранение секретов в системе. Отсюда напрашивается вывод, что управление секретами приложений стоит доверить самому внутреннему кольцу, ведь доступ туда получить сложнее всего. Однако, данный подход был несколько переосмыслен. Теперь все секреты хранятся на одном уровне с пользовательскими приложениями, как и код, который этими секретами управляет за одним условием: никто, абсолютно никто, кроме процессора, не может получить туда доступ. Программа и данные как бы упакованы в хранилище, в данном случае это хранилище называется анклавом (Enclave – закрытый, запертый), ключ от которого есть только у процессора.
Приложения, работающие с доверенной средой
Доверенная часть представляет из себя набор функций и процедур, называемых ECALL (Enclave Call). Сигнатура таких функций должна быть прописана в специальном header-файле, а их реализация в файле с исходным кодом. В целом, подход схож с тем, что мы используем при обычном прописывании хедеров, однако, в данном контексте используется специальный C-подобный язык EDL (Enclave Definition Language). Также необходимо прописать прототипы тех функций, которые можно будет вызвать изнутри анклава, такие функции называются OCALL (Outside Call). Прототипы прописываются в том же хедере, где и ECALL-функции, а реализация, в отличие от ECALL, прописывается соответственно в недоверенной части приложения.
Доверенный и недоверенный код жестко связываются между собой сертификацией с использованием протокола Диффи-Хеллмана. За процедуру подписи отвечает процессор, где и хранится ключ обмена информации, обновляющийся каждый раз при перезагрузке системы. Содержимое анклавов хранится в общей памяти, используемой пользовательскими приложениями, однако хранение происходит в зашифрованном виде. Расшифровать содержимое может только процессор. В идеализированном мире, где код анклавов прописан без единого бага, а все железо работает точно так, как это задумал производитель и никак иначе, мы бы получили универсальную, полностью защищенную систему. Основным достоинством данной системы является исполнение секретной части на том же процессоре, где исполняются все остальные программы, в том числе и пользовательские.
Однако, в последние несколько лет перед широкой аудиторий предстало большое количество микроархитектурных уязвимостей современных процессоров, позволяющих получить доступ внутрь анклава: Foreshadow (уязвимость класса Spectre), SGAxe, Zombieload, CacheOut и многие другие. Нет никакой гарантии того, что это список не пополнится очередной серьезной аппаратной уязвимостью, программное исправление которой не иначе как программной «заплаткой» назвать будет нельзя. Возможно, мы доживем до того времени, когда миру будет представлена абсолютно новая архитектура процессоров, в которой будут исправлены все недостатки, а пока, стоит говорить о том, что у нас есть под рукой. А под рукой у нас есть универсальный, мощный инструмент, серьезно повышающий безопасность современных систем. Повышающий настолько, что он реализован в той или иной интерпретации в миллиардах устройств по всему миру: от умных часов, смартфонов до огромных вычислительных кластеров.
Hello world!
Перейдем от теории к практике. Напишем небольшую программу, которая реализует ставшую уже каноничной задачу: вывести строку «Hello world!». В данной интерпретации укажем ещё и место, откуда будет отправлено послание.
Для начала необходимо скачать и установить SDK для работы с SGX с официального сайта. Для скачивания необходимо пройти простую процедуру регистрации. На этапе установки будет предложено интегрировать пакет разработки в имеющуюся на компьютере версию VS, сделайте это. Всё готово для успешной реализации первого проекта с использованием SGX.
Запускаем VS и создаем проект Intel SGX.
Выбираем имя для проекта и для решения и ждем «далее».
Далее будет предложено выбрать конфигурацию проекта, ничего не меняйте, оставьте те значения, которые предложены изначально.
Затем добавьте к созданному решение ещё один проект: обычное консольное приложение C++.
В результате в диалоговом окне проектов должна получиться следующая картина:
Затем необходимо связать анклав с недоверенной частью. Жмем правой кнопкой на проект «Untrusted part».
Далее необходимо изменить некоторые свойства проектов.
Это необходимо проделать для корректной работы программы. Повторяем действия для обоих проектов.
Также необходимо обозначить в свойствах решения главный проект.
Всё, наша программа готова к реализации.
В данной программе будет 3 файла, с которыми мы будем работать: Enclave.edl (тот самый хедер), Enclave.cpp (прописана реализация ECALL’ов), Untrusted Part.cpp (главный файл проекта – недоверенная часть).
Поместим в файлы следующий код:
Жмем f7 – собираем решение, а затем ctrl+f5 для запуска.
Если у вас выдало ошибку следующего содержания:
убедитесь, что в BIOS активирован Intel SGX: Bios: Security/IntelSGX/Enabled.
В случае, если никаких ошибок не последовало, а перед экраном на консоли вы увидели следующие строки:
Как активировать Intel® Software Guard Extensions (Intel® SGX) с помощью приложения активации SGX в Windows® 10
Тип материала Установка и настройка
Идентификатор статьи 000058952
Последняя редакция 23.06.2021
Необходимые условия:
Процедура:
Другие продукты
Эта статья относится к 1 продукция.
Вам нужна дополнительная помощь?
Оставьте отзыв
Содержание данной страницы представляет собой сочетание выполненного человеком и компьютерного перевода оригинального содержания на английском языке. Данная информация предоставляется для вашего удобства и в ознакомительных целях и не должна расцениваться как исключительная, либо безошибочная. При обнаружении каких-либо противоречий между версией данной страницы на английском языке и переводом, версия на английском языке будет иметь приоритет и контроль. Посмотреть английскую версию этой страницы.
Для работы технологий Intel может потребоваться специальное оборудование, ПО или активация услуг. // Ни один продукт или компонент не может обеспечить абсолютную защиту. // Ваши расходы и результаты могут отличаться. // Производительность зависит от вида использования, конфигурации и других факторов. // См. наши юридические уведомления и отказ от ответственности. // Корпорация Intel выступает за соблюдение прав человека и избегает причастности к их нарушению. См. Глобальные принципы защиты прав человека в корпорации Intel. Продукция и программное обеспечение Intel предназначены только для использования в приложениях, которые не приводят или не способствуют нарушению всемирно признанных прав человека.
Технология Intel Software Guard Extensions в картинках
Кольца защищенного режима разделяют привилегированный код ядра и код приложений, а также отделяют приложения друг от друга. Однако при этом приложения не защищены от атак со стороны привилегированного кода. Зловредное приложение может проникнуть в него с помощью эксплойта и затем внедриться в беззащитную жертву. При этом участок для атаки очень широк: нападать можно и на компоненты ОС, и на само приложение, и даже на аппаратную подсистему.
Смысл SGX состоит в том, чтобы сузить периметр защиты, разместив все критически важные данные в отдельных областях-анклавах, недоступные даже из кода ядра. При этом, однако, не должен коренным образом изменяться процесс разработки и среда, где исполняется приложение.
Приложение состоит из двух частей: доверенного и общего. При запуске оно создает анклав в защищенной части памяти, состоящий из страниц размером 4 Кб. При вызове доверенной функции она видит данные анклава, любой другой внешний доступ (в том числе и со стороны ОС) запрещен. После окончания работы функции анклав остается в защищенной области.
Среда защищенного исполнения встроена в пользовательский процесс, у нее собственные код и данные. Она обеспечивает безопасность, целостность данных, контроль входных точек, поддерживает многопоточность.
При попытке доступа к анклаву проверяется, находятся ли по данному адресу данные вызывающего процесса (EPC, Enclave Page Cache). Далее подвергаются контролю полномочия функции (EPCM, Enclave Page Cache Metadata), и только потом предоставляется требуемый доступ.
Аттестация происходит следующим образом. Анклав запрашивает аппаратно подписанный отчет, содержащий, в том числе информацию о целостности анклава. Этот отчет отсылается на аттестующий сервер, где происходит его верификация. Анклаву высылается ключ приложения (открытая часть ключа), где генерируется подписывающий (приватный) ключ, зависящий от анклава и платформы. Ключ приложения шифруется подписывающим ключом и сохраняется для дальнейшего использования.
Функционал Intel Software Guard Extensions реализуется с помощью комбинации SGX инструкций, поддерживающих локальную аттестацию и предоставляемого Intel аттестационного анклава для поддержки удаленной аттестации.
Разработчики SGX предусмотрели защиту от различного рода атак на данные и код: угрозы со стороны пользовательского и системного ПО, а также загрузчика. Заметим, что средствами SGX невозможно защититься от side-channel уязвимостей, когда злоумышленники собирают статистику использования ЦПУ для определения характеристик исполняемого на нем кода. Для решения подобного рода задач предназначены средства динамического анализа программ, такие, например, как Pin.
Для предотвращения перехвата данных при обмене между процессором и памятью используется Memory Encryption Engine (MEE), работающий как расширение контроллера памяти и поддерживающий технологию SGX. Для определенных областей памяти осуществляется шифрование данных, передающихся по шине. MEE использует специальные комбинации криптографических примитивов для эффективного шифрования при очень жестких требованиях по задержкам.
Как выглядит разработка приложений, поддерживающих SGX? Чувствительные фрагменты кода и данных размещаются в отдельном shared object (.so). Далее определяются интерфейса анклава и генерируются заглушки. Библиотеки SGX взаимодействуют с кодом через API, для разработки используются обычные, привычные для разработчика тулчейны. Для облегчения процесса обработки уже имеется Intel SGX SDK.
Что обещает нам технология Intel SGX? Прежде всего то, что требования к техническим навыкам пользователя, работающего с конфиденциальной информацией, могут быть сильно сокращены. Ей больше не страшны вирусы, трояны и странные программы, которые могут иметься на его компьютере. Далее, повысится доверие к облачным платформам – им можно будет доверять свои приложения, поскольку они будут защищены от любого кода хоста. Конечно, все это дело довольно далекого будущего, ведь процессоры Skylake еще только появились. Но использовать SGX можно уже сейчас. Мы готовы углубляться в эту тему и отвечать на любые вопросы, с ней связанные.
Письмо о развитии iExec: Безопасность Intel SGX и новое приложение R
Привет всем! В то время как последнее письмо о развитии было всего несколько дней назад, мы хотели бы уже поделиться с вами новым. Мы получили много вопросов, касающихся безопасности инфраструктуры iExec, и хотя есть много уровней безопасности, которые следует учитывать, например, наше доказательство вклада (PoCo), на этой недели мы хотели бы сосредоточиться в этом письмо на технологии Intel SGX. В данной статье мы расскажем, как Intel SGX защищает конфиденциальность децентрализованных приложений (DApps) и эффективно контролирует их выполнение. Мы также закончим это письмо о развитии, объявлением о добавлении нового приложения в магазин децентрализованных приложений iExec.
Что такое Intel SGX?
Технологии процессоров Intel обеспечивают уникальные возможности, которые могут улучшить конфиденциальность, безопасность и масштабируемость распределенной сети.
Intel SGX ( Software Guard E xtensions) представляет собой набор кодов инструкций процессора от Intel, который позволяет коду пользовательского уровня выделять частные области памяти, называемые анклавами, которые защищены от процессов, работающих на более высоких уровнях привилегий. Это означает, что даже более привилегированные системы, такие как права администратора, ядро или гипервизор, не могут получить доступ к приложению, запущенному внутри анклава.
Это новейшая технология безопасности Intel, основанная на процессорах Intel со времен архитектуры Skylake (осень 2015 года). Intel® SGX используют механизмы безопасности, основанные на ключе CPU, который встроен в CPU во время производства.
Это похоже на засекреченный секрет, запечатанный в сердце аппаратного обеспечения процессора, и никто не может проверить этот ключ, включая производителя Intel. Этот ключ используется для защиты приложений, работающих внутри анклава. Поэтому безопасность, обеспечиваемая технологией Intel SGX, гарантируется на аппаратном уровне, что оставляет очень малый интерфейс атаки для злоумышленников.
Благодаря этой замечательной функции, Intel SGX позволяет впервые использовать процессоры Intel для защиты приложения, работающего на удаленной системе. SGX все больше и больше используется для обеспечения безопасности выполнения облачных приложений.
Обеспечение секретности🔒
С подробной презентацией Intel SGX можно ознакомиться здесь [1]. Позвольте мне кратко представить вам одну из самых важных особенностей Intel SGX: обеспечение секретности. Эта функция очень интересна, и защита распределенных приложений iExec в основном будет основана на этой функции.
В основном, когда приложение Intel SGX инициируется на удаленном узле, анклав генерируется, и удаленный объект (например, клиент, пользователь, который развертывает приложение Intel SGX) может проверить правильность анклава с помощью удаленной аттестации, чтобы убедиться, что анклав удаленного приложения является ожидаемым и не изменяется и не заменяется злоумышленником.
После этой проверки удаленный объект может предоставить некоторые секреты этому анклаву Intel SGX. Как правило, обеспечение секретности осуществляется через очень безопасный канал. Безопасный канал устанавливается между удаленным объектом и анклавом, а связь между ними шифруется ключом анклава Intel SGX, который генерируется случайным образом на основе ключа центрального процессора (CPU). Этот ключ анклава никогда не предоставляется за пределами области анклава, и, таким образом, никто другой не может проверить этот ключ для расшифровки секретов во время связи.
Наша реализация Intel SGX в настоящее время основана на SCONE [2] — защищенных контейнерах Linux с Intel SGX.
В следующем разделе мы расскажем о том, как технология Intel SGX может быть интегрирована в платформу iExec для защиты приложений.
Как Intel SGX защищает приложения iExec?
В распределенных облачных вычислениях iExec, децентрализованные приложения могут быть распределены в разных удаленных узлах по сетям и не управляются централизованным поставщиком облачных услуг, который может предложить необходимые средства централизованного управления безопасностью для защиты приложений, таких как межсетевые экраны или механизмы шифрования. Защита этих приложений, работающих в распределенных системах, становится сложной задачей.
На платформе iExec, нам нужен новый механизм, который способен:
Почему Intel SGX является идеальным решением для решения вышеуказанных проблем? Поскольку Intel SGX может предложить высокозащищенный анклав Intel SGX, который полностью изолирован от ненадежной системы. Когда приложение выполняется в этом анклаве, оно шифруется и защищается секретным ключом, полученным из ключа центрального процессора (CPU). Даже более высоко привилегированный администратор, ядро или гипервизор не могут вторгнуться в этот пузырь.
В этой статье мы в первую очередь покажем вам, как Intel SGX можно использовать на платформе iExec для решения первых двух проблем. Мы подробно рассмотрим решение третьей проблемы в следующей технической статье.
Защита конфиденциальности децентрализованных приложений и их данных
В распределенных облачных вычислениях важна защита приложения и его конфиденциальных данных. Например, приложению может потребоваться доступ к сторонним службам данных с помощью токена конфиденциальности для получения данных, которые используются для расчета приложения. Это не проблема, если приложение работает на локальной стороне или в централизованном облаке, где облачный менеджер может шифровать токен конфиденциальности и взять на себя ответственность за вопросы безопасности. Однако если приложение выполняется в недоверенной распределенной системе, оно и его конфиденциальные данные предоставляются всем распределенным узлам в сети.
Наше предложение, основанное на Intel SGX, позволяет зашифровать приложение и/или данные (например, токен/ключ, позволяющий приложению получить доступ к службам данных) перед их развертыванием по сетям, а ключ шифрования может быть передан в анклав Intel SGX по высокозащищенному каналу для расшифровки приложения и/или данных во время выполнения. Таким образом, никто по ту сторону сети не может проверять приложение/данные, потому что приложение/данные зашифрованы, а дешифрование выполняется внутри анклава Intel SGX, который защищен секретным ключом, полученным от центрального процессора (CPU), и никто не может проверять дешифрованные данные.
Например, у нас есть приложение, которое позволяет прогнозировать изменения запасов в ближайшие 3 месяца. Когда приложение начнет работать, оно сначала получит доступ к серверу финансовых данных со своим токеном конфиденциальности, для получения этих финансовых данных. Токен конфиденциальности хранится в ключевом файле, и этот ключевой файл не может быть создан непосредственно внутри приложения, поскольку он увеличивает зависимость и просто не является безопасным. Если мы зашифруем токен другим ключом, проблема заключается в том, как безопасно распределить этот ключ среди тысяч распределенных узлов во время выполнения?
Вот как Intel SGX может помочь нам в этом вопросе. С помощью Intel SGX мы можем зашифровать этот ключевой файл (т.е. хранить токен), а когда приложение запускается на удаленном узле (то есть даже на ненадежном узле без какой-либо защиты), приложение создает защищенный анклав Intel SGX и ключ дешифрования автоматически передается в анклав через защищенный канал, а затем токен, который используется для доступа к службе данных, может быть дешифрован в анклаве во время выполнения.
Таким образом, приложение и данные (например, токен/ключ, позволяющий приложениям получать доступ к службе данных) могут быть зашифрованы перед развертыванием по сетям (например, iExec DApp Store, Docker Hub и т.д.), и никто не сможет их проверить, кроме выбранного анклава.
Эффективно контролировать выполнение децентрализованных приложений
Выполнение приложения также можно полностью контролировать, так как это похоже на контроль лицензирования: каждый может загрузить приложение, но только авторизованные могут расшифровать приложение и выполнить его.
В приведенном выше разделе мы ввели обеспечение секретности, а именно, что приложение и/или данные могут быть изначально зашифрованы. Как только защищенный канал будет установлен во время выполнения между удаленным объектом и анклавом, удаленный объект может затем отправить ключ расшифровки в анклав, чтобы расшифровать приложение для его правильной работы.
Этот удаленный объект может быть планировщиком iExec данного рабочего пула, и создание канала анклава полностью находится под его контролем; защищенные каналы устанавливаются только с авторизованными узлами (то есть рабочими iExec) поэтому ключ дешифрования может быть отправлен только зарегистрированным работникам iExec для дешифрования и запуска приложения, и никто другой не сможет выполнить это приложение.
В настоящее время наша реализация Intel SGX основана на SCONE — безопасных контейнерах Linux с Intel SGX, и мы покажем вам более подробную информацию о нашей реализации в следующей технической статье.
Заключение
В этом письме о развитии мы кратко рассказали вам о технологии Intel SGX и о том, как ее можно использовать в экосистеме iExec для защиты распределенных облачных приложений, работающих на удаленных работниках.
“В настоящее время это решение рассматривается как вариант расширения безопасности, так как оно должно основываться на аппаратной поддержке Intel SGX для работников iExec (т. е. процессорах Intel начиная с серии Skylake — после осени 2015 г); и мы считаем, что машины с поддержкой SGX будут в большей степени развернуты в ближайшем будущем. iExec является пионером в использовании этой перспективной технологии Intel SGX в облачных вычислениях на основе блокчейна”, — объясняет Лэй Чжан, эксперт по криптографии в iExec.
Лэй также сделал видео с подробным описанием PoC, который он провел на Intel SGX для защиты приложений iExec. Вы можете посмотреть это видео ниже:
В следующей технической статье мы покажем вам нашу реализацию Intel SGX, а также то, как Intel SGX можно использовать на нашей платформе для защиты выполнения приложений и их результатов: а именно как мы можем убедиться, что работает правильное приложение на рабочем; что приложение правильно выполняется, не вмешивается или не прерывается работниками; убедится, что результат действителен, ни скопирован, ни сфабрикован работниками; и как защитить конфиденциальность результатов.
Новое приложение в iExec DApp Store: R
Независимо от того, измеряется ли более чем 10000 дополнительных пакетов, 95000 + членов группы R на LinkedIn или более 400 R встреч групп, существующих в настоящее время, не может быть никаких сомнений в том, что интерес к языку статистики R, особенно для анализа данных, растет [3].
Почему R? Он бесплатный, с открытым исходным кодом, мощный и очень расширяемый. Эти причины заставили наших разработчиков работать над реализацией R поверх iExec. Благодаря нашей недавней поддержке контейнеров Docker, R теперь является еще одним приложением, доступным в магазине децентрализованных прилоений iExec.
Вы можете попробовать и сообщить нам, что вы думаете об этом приложении. У нас есть канал #beta-testers на нашем Slack, где мы можем ответить на ваши вопросы и отзывы.
Другие интересные новости и достижения
Январь был месяцем многих сюрпризов. Вот краткий обзор наших последних достижений:
Вот и все для этого письма о развитии iExec. Благодарим нашего эксперта по криптографии Лэй Чжан за его объяснения по Intel SGX. Оставайтесь с нами до следующего раза, так как у нас все еще есть интересные новости, чтобы поделиться с вами!🚀
[1] Руководство разработчика для Intel® Software Guard Extensions (Intel® SGX): https://software.intel.com/en-us/documentation/sgx-developer-guide
[3] Руководство по R: введение, Sharon Machlis (18 авг 2017 )
Автор: Wassim Bendella
Опубликовано: 15 февраля 2018
Первоисточник на английском языке: