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 обеспечивает следующую защиту от атак, нацеленных на оборудование и программ.
- Доступ к памяти анклава на чтение и запись извне анклава отсутствует вне зависимости от текущего уровня прав и режима работы ЦП.
- Анклавы рабочего уровня недоступны для отладки как программными, так и аппаратными отладчиками. (Можно создать анклав с атрибутом отладки, при наличии которого отладчик Intel SGX может просматривать содержимое анклава аналогично стандартному отладчику. Это сделано, чтобы повысить удобство процесса разработки программного обеспечения.)
- В среду анклава невозможно войти с помощью классических вызовов функций, переходов, манипуляций с регистрами или со стеком. Единственный способ вызвать функцию анклава — с помощью новой инструкции, выполняющей несколько защитных проверок.
- Память анклава защищена с помощью стандартных алгоритмов шифрования с защитой от воспроизведения. Если прочесть память или подключить модули оперативной памяти к другой системе, удастся получить только зашифрованные данные (см. рис. 2).
- Ключ шифрования памяти изменяется случайным образом при каждом изменении цикла электропитания (например, при загрузке, при возобновлении работы после сна и гибернации). Ключ хранится внутри ЦП и недоступен извне.
- Данные изолированы в анклавах и доступны только для кода данного анклава.

Рисунок 2. Защита данных в анклавах Intel Software Guard Extensions в защищенных приложениях
Как это устроено
Для использования Intel SGX приложение должно быть разделено на два компонента (см. рис. 3).
- Доверенный компонент. Это анклав. Код в доверенном компоненте получает доступ к секретам приложения. У одного приложения может быть несколько доверенных компонентов/анклавов.
- Недоверенный компонент. Это остальная часть приложения, любые его модули. Следует отметить, что с точки зрения анклава и ОС, и VMM считаются недоверенными компонентами.
В анклавах также следует свести к минимуму взаимодействие между доверенными и недоверенными компонентами. Анклавы могут выходить за пределы защищенной области памяти и вызывать функции в недоверенном компоненте (с помощью особых инструкций), но рекомендуется ограничивать такие зависимости, чтобы обеспечить более надежную защиту анклава от атак.

Рисунок 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. Мы опишем требования к созданию этого приложения, ограничения и пользовательский интерфейс. Следите за новостями.
- Software Guard Extensions
- Business Client
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 Software Guard Extensions
- Intel SGX
- Блог компании Intel
- Компьютерное железо
- Процессоры
Intel software guard extensions по русски (по простому)?
Коротко можно объяснить что это за драйвер? Чето там защита, злоумышленники, защита от подделок.
Вообще не понял, т. е. пиратское оборудование не пролезет на комп и различные кряки? Или это вообще другое.
Лучший ответ
https://software.intel.com/ru-ru/sgx
https://habr.com/ru/company/intel/blog/385171/ вроде по русски
HTЗнаток (388) 4 года назад
Ну так-то поиском я сам умею пользоваться и читать статьи и много ненужного (запутывающего). Я и написал «по-простому», т. е. в двух словах: нах он нужОн.)))
Dr.leftbehind ✪ Искусственный Интеллект (184449) Молодец что умеешь, осталось только думать (по минимуму) научится и всё будет чётко 🙂
В BIOS ноутбука есть параметр «Intel SGX» и три варианта которые можно выбрать для него.
Технология Intel SGX (Software Guard Extensions) представляет собой новый набор процессорных инструкций, которые могут быть использованы соответствующим образом написанными приложениями для организации защищённых регионов кода и данных, в терминологии Intel именуемых «анклавами» (enclave). Сама компания называет такой подход «обратной песочницей» (inverse sandbox). Применение SGX позволяет разработчикам программного обеспечения наделять свои творения защитой от несанкционированного доступа или модификации даже в том случае, если вредоносное приложение работает на более высоком уровне привилегий. Конфиденциальность ценных данных может быть сохранена, в том числе и при наличии у атакующего физического доступа к атакуемой платформе. Более полное описание Intel SGX содержится на официальном веб-сайте Intel Developer Zone.
Использование SGX минимизирует количество уязвимых для атаки точек
ОлегПросветленный (35249) 4 года назад
я бы выключил . дисаблед. 3
Остальные ответы
3 Выключен значит выключен.
2 Включен значит включен
1 Контролируется софтом
Это вроде бы технология защиты
Используйте аппаратную изоляцию и шифрование памяти для обеспечения дополнительной защиты кода в ваших решениях.
CeleronОракул (57175) 4 года назад
по умолчанию стоит 1-ый пункт, стоит менять?
Mail.Sru Оракул (66791) Можно не менять либо выключить. Если знать какие задачи решать и как именно это работает тогда и меняется, обычному пользователю без заметной разницы.