Письмо о развитии iExec: Безопасность Intel SGX и новое приложение R

Alexey
iExec Russian
Published in
8 min readNov 16, 2018

Привет всем! В то время как последнее письмо о развитии было всего несколько дней назад, мы хотели бы уже поделиться с вами новым. Мы получили много вопросов, касающихся безопасности инфраструктуры iExec, и хотя есть много уровней безопасности, которые следует учитывать, например, наше доказательство вклада (PoCo), на этой недели мы хотели бы сосредоточиться в этом письмо на технологии Intel SGX. В данной статье мы расскажем, как Intel SGX защищает конфиденциальность децентрализованных приложений (DApps) и эффективно контролирует их выполнение. Мы также закончим это письмо о развитии, объявлением о добавлении нового приложения в магазин децентрализованных приложений iExec.

Что такое Intel SGX?

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

Intel SGX (Software Guard Extensions) представляет собой набор кодов инструкций процессора от 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, нам нужен новый механизм, который способен:

  • Защитить конфиденциальность децентрализованных приложений (DApps) и их данных
  • Эффективно контролировать выполнение децентрализованных приложений (DApps)
  • Защитить выполнение децентрализованных приложений (DApps) и их результат

Почему Intel SGX является идеальным решением для решения вышеуказанных проблем? Поскольку Intel SGX может предложить высокозащищенный анклав Intel SGX, который полностью изолирован от ненадежной системы. Когда приложение выполняется в этом анклаве, оно шифруется и защищается секретным ключом, полученным из ключа центрального процессора (CPU). Даже более высоко привилегированный администратор, ядро или гипервизор не могут вторгнуться в этот пузырь.

В этой статье мы в первую очередь покажем вам, как Intel SGX можно использовать на платформе iExec для решения первых двух проблем. Мы подробно рассмотрим решение третьей проблемы в следующей технической статье.

Защита конфиденциальности децентрализованных приложений и их данных

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

Наше предложение, основанное на Intel SGX, позволяет зашифровать приложение и/или данные (например, токен/ключ, позволяющий приложению получить доступ к службам данных) перед их развертыванием по сетям, а ключ шифрования может быть передан в анклав Intel SGX по высокозащищенному каналу для расшифровки приложения и/или данных во время выполнения. Таким образом, никто по ту сторону сети не может проверять приложение/данные, потому что приложение/данные зашифрованы, а дешифрование выполняется внутри анклава Intel SGX, который защищен секретным ключом, полученным от центрального процессора (CPU), и никто не может проверять дешифрованные данные.

Например, у нас есть приложение, которое позволяет прогнозировать изменения запасов в ближайшие 3 месяца. Когда приложение начнет работать, оно сначала получит доступ к серверу финансовых данных со своим токеном конфиденциальности, для получения этих финансовых данных. Токен конфиденциальности хранится в ключевом файле, и этот ключевой файл не может быть создан непосредственно внутри приложения, поскольку он увеличивает зависимость и просто не является безопасным. Если мы зашифруем токен другим ключом, проблема заключается в том, как безопасно распределить этот ключ среди тысяч распределенных узлов во время выполнения?

Вот как Intel SGX может помочь нам в этом вопросе. С помощью Intel SGX мы можем зашифровать этот ключевой файл (т.е. хранить токен), а когда приложение запускается на удаленном узле (то есть даже на ненадежном узле без какой-либо защиты), приложение создает защищенный анклав Intel SGX и ключ дешифрования автоматически передается в анклав через защищенный канал, а затем токен, который используется для доступа к службе данных, может быть дешифрован в анклаве во время выполнения.

Приложение StockPredictor, работающее на рабочем столе iExec с поддержкой 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 теперь поддерживает Docker и Blender для 3D-рендеринга.
  • iExec сотрудничает со Stimergy и Cloud&Heat, чтобы обеспечить более экологичные вычислительные решения.
  • iExec присоеденился к консорциуму OpenFog, который был основан ARM, Cisco, Dell, Intel, Microsoft и Принстонским университетом. Целью консорциума — является ускорение развертывания технологий туманных вычислений, с уделением особого внимания разработке открытых архитектур, которые будут поддерживать интеллект на краю Интернет вещей (IoT).
  • Купить и продать токены RLC можно на криптовалютной бирже Binance, Bitfinex и Bittrex
  • Токены RLC теперь также могут храниться на кошельке Exodus.
  • Мы начали серию коротких регулярных обновлений о прогрессе, достигнутом командой iExec. Вот последнее, подписывайтесь на r/iexec, чтобы не пропустить предстоящие.

Вот и все для этого письма о развитии iExec. Благодарим нашего эксперта по криптографии Лэй Чжан за его объяснения по Intel SGX. Оставайтесь с нами до следующего раза, так как у нас все еще есть интересные новости, чтобы поделиться с вами!🚀

[1] Руководство разработчика для Intel® Software Guard Extensions (Intel® SGX): https://software.intel.com/en-us/documentation/sgx-developer-guide

[2] SCONE: https://sconecontainers.github.io/

[3] Руководство по R: введение, Sharon Machlis (18 авг 2017 )

Присоединяйтесь к нам:

iExec 🇷🇺

Веб-СайтTelegramVKontakteInstagramTwitter • Facebook • YoutubeMediumGolos

iExec 🇺🇸

WebsiteMediumSlackTelegramRedditTwitterFacebookLinkedInYoutubeGithubKakaoInstagramSteemitKatacodaDocs

___________________________________________________________________

--

--