Sgx control что это
8 предназначений Intel Software Guard Extensions
Одной из функциональных новинок, появившихся в процессорах Intel Core шестого поколения (Skylake), стала технология Intel Software Guard Extensions (Intel SGX). Легко убедиться гуглением, что информации о ней в интернете не так много. Мы решили восполнить этот пробел, тем более что под рукой у нас оказалась статья одного из разработчиков этой технологии, Мэтью Хойкстра (Matthew Hoekstra); в ней он описывает цели, которые преследует Intel SGX. Приводим ее перевод.
Если говорить о сути, то Intel SGX – это набор новых инструкций процессора, которые могут использоваться приложениями для выделения приватных областей кода и данных. Создавая эту технологию, мы преследовали следующие цели.
Цель 1. Позволить разработчикам приложений защитить чувствительные данные от несанкционированного доступа или изменения со стороны зловредного ПО, запущенного с более высокими привилегиями.
Хотел бы выделить в этом пункте несколько принципиальных моментов. Первое, защита чувствительных данных подразумевает обеспечение и их конфиденциальности (предотвращение утечек), и целостности (защита от подделок). Второе, защищать необходимо не только данные, но и код (например, атакующий может легко получить доступ к данным, изменив или отключив авторизацию). Третье, данные должны быть защищены не только когда они хранятся в зашифрованном виде, но и во время рантайма, когда они не зашифрованы и активно используются для вычислений. Наконец, критически важно обеспечить защиту рантайма против вредоносного ПО, обошедшего систему контроля привилегий с целью получить более высокий уровень прав.
Цель 2. Позволить приложениям обеспечивать конфиденциальность и целостность чувствительных данных и кода, не вмешиваясь в работу системы контроля привилегий, не мешая ей планировать и контролировать ресурсы платформы.
Чувствительные данные и код должны быть защищены от вредоносного ПО запущенного с высоким уровнем прав, однако в то же время система контроля привилегий должна постоянно делать свою работу, мешать ей нельзя. Недопустимо, чтобы защищаемые приложения брали на себя или нарушали базовую функциональность системы, такую как планирование задач, управление устройствами и т.д. Операционные системы развивались много лет, чтобы хорошо выполнять эти задачи, и создавать параллельную им сущность было бы непрактично.
Цель 3. Позволить пользователям компьютерных устройств держать над ними контроль, в то же время предоставляя свободу устанавливать и удалять приложения и сервисы.
Работа доверенного приложения не должна требовать каких-то специфических конфигураций и не должна ограничивать контроль пользователя над его компьютером. Обычной практикой обеспечения защиты сегодня является жесткое ограничение набора приложений, которое может быть загружено на платформу. В игровые приставки, смартфоны и т.д. сейчас обычно встроена специализированная операционная система, которая накладывает различного рода ограничения на доступность и поведение приложений, дабы не допустить проблем с безопасностью.
Корпоративное использование устройств может налагать еще более строгие дополнительные ограничения (например, на подключения USB-накопителей). В принципе, в этих мерах нет ничего плохого, но они не должны быть обязательными для обеспечения конфиденциальности и целостности данных. Это условие становится еще более очевидным, если мы будем говорить о персональном ПК, где необходимость в доверенном окружении так же велика, как и потребность в персонализации.
Цель 4. Позволить платформе измерять доверенный код приложения и производить с помощью процессора подписанный аттестат, который включает в себя это измерение и прочие сертификаты, удостоверяющие, что код был корректно инициализирован в доверенной среде.
Разрешая пользователю контролировать ПО на платформе, мы порождаем проблему доверенной доставки приложений. Как кто-либо может быть уверен, что платформа обладает всеми необходимыми примитивами для поддержки доверенных вычислений, которые требуются приложению, или что установленное приложение не было подделано? Или, говоря другими словами, как приложение может доказать, что оно доверенное?
Чтобы определить, было ли приложение корректно загружено и инициализировано, можно сравнить подпись приложения (криптографический хэш его отпечатка памяти в заранее заданной точке исполнения) с ожидаемым значением, полученным из считающейся доверенной системы – это называется измерением приложения. Чтобы подтвердить свое происхождение, измерение подписано приватным ключом, известным только доверенной системе, которая производит измерение.
Отметим, что разработчики не могут полагаться на вычисления, делаемые программно системой; как говорилось ранее, ПО всегда можно виртуализировать или обмануть с помощью вредоносной программы, имеющей достаточный уровень привилегий. Таким образом, вычисление должно быть аппаратным и исполняться тем же компонентом, которое создает доверенную среду, загружает/инициализирует доверенное приложение и осуществляет вычисление чувствительных данных.
Цель 5. Позволить разработчикам создавать доверенные приложения с использованием известных им средств и процессов.
Первые 4 цели обеспечивают преимущества более закрытой среды путем уменьшения набора сущностей, которые должны быть доверенными, при этом платформы остаются открытыми а выбор пользователя – свободным. Однако из этого не следует, что процесс разработки ПО останется неизменным. Например, если выяснится, что разработчикам придется кардинально менять свои процессы или они будут вынуждены писать софт под проприетарный контроллер безопасности, продуктивность процесса значительно уменьшится.
Цель 6. Позволить производительности доверенных приложений увеличиваться с ростом производительности процессоров.
Эта цель вырастает из идеи минимализации влияния на существующий процесс разработки ПО. Одной из движущих сил этого процесса состоит в том, что разработчики пытаются получить максимум преимуществ от увеличивающейся производительности процессора. Было бы здорово, если бы доверенные приложения не имели проблем с производительностью по сравнению с прочими.
Цель 7. Позволить производителям ПО распространять и обновлять приложения, используя наиболее удобные для них способы.
Если предлагаемое решение требует, чтобы независимые создатели ПО тесно работали с производителями платформ с целью предустановить их приложения в момент производства платформы или же обновления ПО могут быть установлены только вместе с обновлением системы, это также будет помехой созданию инновационных продуктов.
Цель 8. Позволить приложениям определять защищенные области кода и данных, которые содержат конфиденциальность, даже в том случае, если атакующий физически контролирует платформу и может производить прямые атаки на ее память.
Эффективное решение должно обеспечивать защиту от различных типов аппаратных атак, включая и те случаи, когда платформа физически находится в распоряжении врага. Исследователи Принстонского университета демонстрируют одну из таких атак. Возможны и другие варианты с использованием анализаторов шины памяти или подобных техник.
Возьмите защиту своих данных под контроль
Что такое Intel® SGX?
Разработчики приложений и решений теперь могут значительно усилить безопасность данных, используя новые аппаратные средства управления для облачных и корпоративных сред. Intel® Software Guard Extensions (Intel® SGX) 1 2 обеспечивает аппаратное шифрование памяти, которое изолирует определенный код и данные приложения в памяти. Intel® SGX позволяет помещать код уровня пользователя в частные области памяти под названием анклавы, которые создаются для защиты от процессов, выполняющихся на более привилегированных уровнях. Только Intel® SGX обеспечивает такой точный уровень контроля и защиты.
Усовершенствуйте защиту своего кода и данных
Intel® SGX помогает защититься от многих известных и активных угроз. Они добавляют еще один уровень защиты, помогая снизить поверхность атаки системы.
Узнайте, как сочетание возможностей усиленной защиты и верификации Intel® SGX, а также постоянная совместная работа Intel со своей экосистемой безопасности помогают минимизировать потенциальную поверхность атаки и снижать даже теоретические риски.
Решения и услуги Intel SGX
Связывайтесь с партнерами Intel, OEM-компаниями и поставщиками облачных услуг и находите продукты и решения, которые помогут ответить на самые сложные вызовы, стоящие перед вашей компанией.
Разрабатывайте технологии безопасности на аппаратной платформе
Узнайте, как разрабатывать безопасный код пользовательского уровня для выделения закрытых областей памяти, защищенных от процессов с более высоким уровнем привилегий.
Масштабируемые процессоры Intel® Xeon® 3-го поколения с технологией Intel® SGX
Процессоры Intel® Xeon® E обеспечивают возможности повышения безопасности, которые могут использоваться совместно с существующей инфраструктурой для усиления защиты наиболее важных элементов рабочей задачи или службы. Благодаря усовершенствованной технологии Intel® Software Guard Extensions (Intel® SGX) масштабируемые процессоры Intel® Xeon® могут размещать приложения в защищенных анклавах памяти для усиления защиты определенных приложений или данных от раскрытия или модификации.
Информация о продукте и производительности
Ни один продукт или компонент не может обеспечить абсолютную защиту.
Доступность функций и преимуществ технологий Intel® зависит от конфигурации системы, а для их работы может потребоваться оборудование, программное обеспечение или активация сервисов. Значения производительности могут изменяться в зависимости от конфигурации системы. Ни один продукт или компонент не может обеспечить абсолютную защиту. Проконсультируйтесь с производителем или продавцом системы. Подробная информация также представлена на веб-сайте https://www.intel.ru.
Для работы технологий Intel может потребоваться специальное оборудование, ПО или активация услуг. // Ни один продукт или компонент не может обеспечить абсолютную защиту. // Ваши расходы и результаты могут отличаться. // Производительность зависит от вида использования, конфигурации и других факторов. // См. наши юридические уведомления и отказ от ответственности. // Корпорация Intel выступает за соблюдение прав человека и избегает причастности к их нарушению. См. Глобальные принципы защиты прав человека в корпорации Intel. Продукция и программное обеспечение Intel предназначены только для использования в приложениях, которые не приводят или не способствуют нарушению всемирно признанных прав человека.
Стражи публичных облаков: как мы внедряли анклавы Intel SGX для защиты чувствительных данных
Как развеять предубеждения потенциальных пользователей относительно безопасности публичных облаков? На помощь приходит технология Intel Software Guard Extensions (Intel SGX). Рассказываем, как мы внедрили её в своём облаке и какие преимущества от нашего решения получила компания Aggregion.
Кратко об Intel SGX и его роли в облаке
Intel Software Guard Extensions (Intel SGX) — набор инструкций ЦП, с помощью которых в адресном пространстве приложения создаются частные защищённые области (анклавы), где размещается код уровня пользователя. Технология обеспечивает конфиденциальность и целостность чувствительных данных. Путём изоляции в анклаве они получают дополнительную защиту как от несанкционированного внешнего доступа, в том числе со стороны провайдера облачных услуг, так и от внутренних угроз, включая атаки со стороны программного обеспечения привилегированного уровня.
Принципы работы. Для хранения кода и данных анклавов технология Intel SGX выделяет область памяти – Processor Reserved Memory (PRM). ЦП защищает её от всех внешних обращений, в том числе от доступа со стороны ядра и гипервизора. В PRM содержится Enclave Page Cache (EPC), состоящий из блоков страниц объёмом 4 КиБ, при этом каждая страница должна принадлежать только одному анклаву, а их состояние фиксируется в Enclave Page Cache Metadata (EPCM) и контролируется ЦП.
Безопасность EPC обеспечивается за счёт Memory Encryption Engine (MEE), который генерирует ключи шифрования, хранящиеся в ЦП. Предполагается, что страницы могут быть расшифрованы только внутри физического ядра процессора.
Преимущества. Intel SGX позволяет повысить уровень доверия к публичному облаку со стороны организаций, использующих в своей работе чувствительные данные (пароли, ключи шифрования, идентификационные, биометрические, медицинские данные, а также информацию, относящуюся к интеллектуальной собственности). Речь идёт о представителях самых разных отраслей — финансового сектора, медицины и здравоохранения, ритейла, геймдева, телекома, медиасферы.
Наш подход к внедрению Intel SGX
Чтобы в публичном облаке G-Core Labs появилась возможность выделять виртуальные машины с анклавами Intel SGX, нам пришлось пройти путь от компиляции патченного ядра KVM и QEMU до написания Python-скриптов в сервисах OpenStack Nova. Вычислительные узлы, которые планировалось использовать для выделения виртуальных машин повышенной безопасности, мы решили определить в отдельный агрегатор — тип вычислительных ресурсов, требующий дополнительной настройки. На таких узлах было необходимо:
Стоит учитывать, что, если одна страница занимает 4 КиБ, то для 2048 страниц требуется 8 МиБ (2048 x 4 = 8192).
Трудности разработки и их преодоление
Отсутствие какой-либо технической документации по интеграции Intel SGX в OpenStack было нашей основной трудностью на момент внедрения. Поиск привел нас к статье проекта SecureCloud, где был представлен способ управления виртуальными машинами с анклавами SGX.
Найденная информация помогла понять, над чем именно нам предстоит работать. В результате мы сформировали следующие задачи:
Кроме того, мы дописали сбор статистики с учетом EPC:
Безопасная среда для запуска контейнеризированных приложений
Научившись выделять виртуальные машины с поддержкой Intel SGX, мы использовали платформу SCONE компании Scontain, чтобы обеспечить возможность безопасного запуска контейнеризированных приложений в случае угроз со стороны привилегированного программного обеспечения. При использовании данного решения для прозрачной защиты файловых систем в средах Docker, Kubernetes и Rancher достаточно наличия процессора Intel с поддержкой SGX и драйвера Linux SGX.
Запуск каждого из контейнеров возможен лишь при наличии файла конфигурации, создаваемого клиентским расширением платформы SCONE. В нём содержатся ключи шифрования, аргументы приложения и переменные среды. Файлы, сетевой трафик и стандартные потоки ввода/вывода (stdin/stdout) прозрачно зашифрованы и недоступны даже для пользователей с правами root.
Платформа SCONE оснащена встроенной службой аттестации и конфигурации, проверяющей приложения на соответствие принятой политике безопасности. Она генерирует приватные ключи и сертификаты, которые должны быть доступны только в пределах анклава. Конфиденциальность и целостность данных в процессе их передачи обеспечиваются криптографическим протоколом TLS.
С помощью драйвера SGX для каждого анклава в виртуальном адресном пространстве резервируется до 64 ГБ памяти. Платформа SCONE поддерживает языки программирования C/C++/C#/Rust/Go/Python/Java. За счёт специального компилятора исходный код автоматически (без необходимости дополнительных модификаций) подготавливается к использованию совместно с Intel SGX.
Кейс Aggregion
Завершив все необходимые работы по интеграции Intel SGX, мы подключили к нашему публичному облаку платформу управления распределёнными данными компании Aggregion.
Она предназначена для реализации совместных маркетинговых проектов представителями различных отраслей — финансовых и страховых услуг, государственного управления, телекоммуникаций, ритейла. Партнёры анализируют поведение потребителей, развивают таргетированное продвижение товаров и услуг, разрабатывают востребованные программы лояльности, обмениваясь и обрабатывая обезличенные массивы данных на платформе Aggregion. Поскольку утечка конфиденциальной информации крайне не желательна и грозит серьёзными репутационными рисками, компания уделяет особое внимание вопросам безопасности.
Софт Aggregion целиком ставится в контур поставщика данных, что подразумевает наличие в его распоряжении инфраструктуры с поддержкой Intel SGX. Теперь клиенты компании могут рассматривать подключение к нашему публичному облаку в качестве альтернативы аренде или покупке физических серверов.
Принципы безопасной работы на платформе Aggregion. В контуре каждого поставщика чувствительные данные изолируются в анклавы Intel SGX, которые фактически представляют собой чёрные ящики: что происходит внутри, недоступно никому, в том числе и провайдеру облачной инфраструктуры. Проверка первоначального состояния анклава и возможности его использования для хранения конфиденциальной информации осуществляется за счёт удалённой аттестации, когда MrEnclave определяет хеш-значение.
Потенциальная польза для клиентов. Комбинирование баз данных нескольких поставщиков позволяет повысить эффективность совместных рекламных кампаний. При выделении целевой аудитории по заданным параметрам мэтчинг (сопоставление) сегментов выполняется непосредственно внутри контейнеров с поддержкой анклавов Intel SGX. За пределы выводится только конечный результат: например, численность пользователей, соответствующих выбранным атрибутам. Аналогичным образом оценивается эффективность проведенных кампаний: в анклавы выгружаются данные о рекламных показах и совершённых продажах для вычисления прироста покупок целевой группы относительно контрольной, который и выдаётся наружу для дальнейшего использования.
Выводы
Мы понимаем, что Intel SGX не является панацеей по защите данных и можно найти ряд статей, порицающих эту технологию, в том числе и на Хабре. Периодически появляются сообщения об атаках, способных извлечь конфиденциальные данные из анклавов: так, в 2018 году бреши в SGX пробили Meltdown и Spectre, в 2020 году – SGAxe и CrossTalk. В свою очередь компания Intel устраняет выявленные уязвимости с помощью обновлений микрокода процессоров.
Почему же мы всё-таки решили внедрить данную технологию? Мы видим в применении Intel SGX возможность сократить потенциальную область кибератак за счёт создания дополнительного контура защиты облачной инфраструктуры G-Core Labs наряду с уже задействованными технологиями информационной безопасности и тем самым повысить доверие наших пользователей к хранению и обработке конфиденциальных данных. Надеемся, что в будущем нам ещё предстоит поделиться с вами успешными клиентскими кейсами, хотя и не берёмся утверждать, что наши статьи не будут основаны на историях обнаружения и устранения новых уязвимостей. А пока предлагаем вам поделиться своими методами по защите чувствительных данных в комментариях.
Intel Software Guard Extensions, серия учебных материалов. Часть 1, основы Intel SGX
Первая часть в серии учебных материалов по Intel Software Guard Extensions (Intel SGX) представляет собой краткое описание этой технологии. Дополнительные сведения см. в документации в составе Intel Software Guard Extensions SDK. Список всех учебных материалов в этой серии см. в статье Представляем серию учебных материалов, посвященных Intel Software Guard Extensions.
Технология Intel Software Guard Extensions
Программным приложениям зачастую приходится работать с конфиденциальной информацией, например с паролями, номерами счетов, финансовыми данными, ключами шифрования, медицинскими данными. Доступ к этим данным должен быть только у полномочных получателей. В терминологии Intel SGX такая конфиденциальная информация называется «секретом приложения».
Задача операционной системы состоит в применении политики безопасности в компьютере, чтобы эти секреты не были непреднамеренно раскрыты другим пользователям или приложениям. Операционная система не даст пользователю получить доступ к файлам другого пользователя (без предоставленного явным образом разрешения); не даст одному приложению получить доступ к памяти другого приложения; не даст пользователю без необходимых прав получить доступ к ресурсам ОС, исключая строго контролируемые ресурсы. В приложениях часто используются дополнительные защитные меры, например шифрование данных, чтобы исключить доступ третьими сторонами к данным, пересылаемым в хранилище или по сетевому подключению, даже если злоумышленникам удалось получить доступ к ОС и к оборудованию.
Несмотря на все эти защитные меры, в большинстве компьютерных систем все равно остаются уязвимые места. Разнообразные механизмы защищают одно приложение от другого и защищают ОС от пользователя, не имеющего разрешений, но приложения обычно практически никак не защищены от процессов, выполняющихся с более высоким уровнем прав, включая саму ОС. Вредоносные программы, обладающие правами администратора, имеют неограниченный доступ ко всем системным ресурсам и ко всем приложениям, запущенным в системе. Усовершенствованные вредоносные программы могут атаковать защитные механизмы приложения, чтобы извлечь ключи шифрования и даже секретные данные непосредственно из памяти.
Корпорация Intel разработала расширения Intel SGX для высокоуровневой защиты секретов и для защиты от таких программных атак. Intel SGX — это набор инструкций ЦП, дающих возможность приложениям создавать анклавы: защищенные области в адресном пространстве приложения, обеспечивающие конфиденциальность и целостность даже при наличии вредоносных программ с расширенными правами. Код анклавов поддерживается особыми инструкциями, он компилируется и загружается в виде файла библиотеки динамической компоновки Windows * (DLL).
Расширения Intel SGX позволяют снизить уязвимость приложений. На рис. 1 показана значительная разница между потенциальными областями атаки при наличии и при отсутствии анклавов Intel SGX.
Рисунок 1. Области атаки с анклавами и без анклавов Intel Software Guard Extensions
Как технология расширений Intel Software Guard Extensions помогает защищать данные
Intel SGX обеспечивает следующую защиту от атак, нацеленных на оборудование и программ.
Рисунок 2. Защита данных в анклавах Intel Software Guard Extensions в защищенных приложениях
Как это устроено
Для использования Intel SGX приложение должно быть разделено на два компонента (см. рис. 3).
В анклавах также следует свести к минимуму взаимодействие между доверенными и недоверенными компонентами. Анклавы могут выходить за пределы защищенной области памяти и вызывать функции в недоверенном компоненте (с помощью особых инструкций), но рекомендуется ограничивать такие зависимости, чтобы обеспечить более надежную защиту анклава от атак.
Рисунок 3. Выполнение приложения Intel Software Guard Extensions
Аттестация
В архитектуре SGX аттестация — это подтверждение создания определенного анклава на платформе. Существует два механизма аттестации.
Локальная аттестация
Локальная аттестация полезна, когда у приложений есть несколько анклавов, которые должны работать вместе для выполнения какой либо задачи, или когда два отдельных приложения должны обмениваться данными между анклавами. Каждый из анклавов должен проверить другой анклав, чтобы убедиться в его надежности. После этого анклавы устанавливают защищенный сеанс и используют обмен ключами ECDH, чтобы совместно использовать ключ сеанса. Этот ключ сеанса можно использовать, чтобы шифровать данные, которые должны быть общими для обоих анклавов.
Один анклав не может получить доступ к защищенному пространству памяти другого анклава, даже если оба анклава созданы одним и тем же приложением, поэтому необходимо убрать из всех указателей ссылки на их значения и скопировать; полный набор данных должен быть передан из одного анклава в другой.
Удаленная аттестация
При удаленной аттестации программные расширения Intel SGX и оборудование платформы формируют предложение, которое передаются на сторонний сервер для установления доверия. Программное обеспечение включает анклав приложения, а также компонент Quoting Enclave (QE) и Provisioning Enclave (PvE), предоставляемые корпорацией Intel. Оборудование для аттестации — ЦП, поддерживающий Intel SGX. Сводка программной информации в сочетании с уникальным для платформы асимметричным ключом оборудования используются для формирования предложения, которое передается на удаленный сервер по проверенному каналу. Если удаленный сервер определяет, что экземпляр анклава был создан правильно и запущен на процессоре, поддерживающем Intel SGX, то сервер устанавливает доверительные отношения и передает секреты по проверенному каналу.
Запечатывание данных
Запечатывание данных — это шифрование данных, чтобы можно было записывать их в недоверенную память или хранилище, не раскрывая содержимое. Эта данные могут быть позже прочитаны анклавом и распечатаны (расшифрованы). Ключи шифрования создаются внутри по запросу и не раскрываются для анклава.
Существует два способа запечатывания данных.
Запечатывание с удостоверением анклава
При запечатывании с удостоверением анклава ключ является уникальным для конкретного анклава, запечатавшего данные. При любых изменениях анклава, влияющих на его подпись, будет создан новый ключ. При использовании этого метода данные, запечатанные одной версией анклава, будут недоступны для другой версии этого же анклава. Побочный эффект этого метода состоит в том, что запечатанные данные невозможно перенести в новые версии приложения и его анклава. Такой подход предназначен для предложений, в которых старые запечатанные данные не должны использоваться новыми версиями приложения.
Запечатывание с удостоверением запечатывания
При запечатывании с удостоверением запечатывания несколько анклавов из одного и того же центра могут запечатывать и распечатывать данные друг друга. Это позволяет переносить данные из одной версии анклава в другую или совместно использовать данные несколькими приложениями одного и того же поставщика.
Если нужно запретить доступ старых версий ПО и анклава к данным, запечатанным в новых версиях приложения, можно использовать номер версии ПО при подписании анклава. Версии анклава, более старые по сравнению с указанным номером версии ПО, не смогут образовать ключ, поэтому не смогут распечатать данные.
Как мы будем использовать технологию Intel Software Guard Extensions в учебном руководстве
Мы рассмотрели три важнейших компонента Intel SGX: анклавы, аттестацию и запечатывание. В этом учебном руководстве мы сосредоточимся на реализации анклавов, поскольку это основа Intel SGX. Невозможно провести аттестацию или запечатывание, не создав анклав. Кроме того, это позволит ограничить размер учебного руководства.
В дальнейших выпусках
Во второй части серии учебных материалов Расширения Intel Software Guard Extensions: часть 2, создание приложений мы рассмотрим диспетчер паролей, который будет создан с поддержкой Intel SGX. Мы опишем требования к созданию этого приложения, ограничения и пользовательский интерфейс. Следите за новостями.