software guard extensions sgx что это в биосе
Возьмите защиту своих данных под контроль
Что такое 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 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 можно уже сейчас. Мы готовы углубляться в эту тему и отвечать на любые вопросы, с ней связанные.
Расширения Intel Software Guard Extensions, учебное руководство. Часть 6, две ветви кода
В шестой части серии учебных материалов, посвященных расширениям Intel Software Guard Extensions (Intel SGX), мы временно откладываем анклав в сторону, чтобы заняться выполнением другого требования, которое мы изложили во второй части (проект приложения): мы посвятим эту серию поддержке двух ветвей кода. Нужно, чтобы наше приложение Tutorial Password Manager работало на ПК как с поддержкой Intel SGX, так и без нее. Большая часть содержимого этого материала взята из статьи Правильное обнаружение расширений Intel Software Guard Extensions в приложениях.
Вместе с этой частью серии предоставляется исходный код.
Все приложения, использующие расширения Intel Software Guard Extensions, должны содержать две ветви кода
Прежде всего важно подчеркнуть, что все приложения, использующие Intel SGX, должны содержать две ветви кода. Даже если приложение написано таким образом, что оно должно выполняться только в случае, если расширения Intel SGX доступны и включены, в приложении должна быть запасная ветвь кода, отображающая пользователю понятное сообщение об ошибке и правильно завершающая работу приложения.
Коротко говоря, приложение не должно аварийно завершать работу и отказывать только из-за того, что приложение не поддерживает Intel SGX.
Выявление проблемы
В пятой части этой серии мы создали первую версию анклава приложения и протестировали его, жестко включив в коде поддержку анклава. Для этого мы установили флаг _supports_sgx в файле PasswordCoreNative.cpp.
Разумеется, этот флаг не должен быть включен по умолчанию. Идеология обнаружения компонентов такова: по умолчанию все компоненты отключены, а при обнаружении они включаются. Поэтому первое, что нужно сделать, — вернуть этому флагу значение 0 и тем самым отключить ветвь кода Intel SGX.
Впрочем, перед тем как приступить к процедуре обнаружения компонентов, мы устроим для консольного приложения, которое выполняет наш тестовый пакет, CLI Test App, краткий функциональный тест: мы запустим его в системе, не поддерживающей Intel SGX. Если установить для этого флага нулевое значение, приложение не будет использовать ветвь кода Intel SGX и должно нормально работать.
Вот результат, полученный на ноутбуке с процессором Intel Core i7 четвертого поколения под управлением 64-разрядной версии Microsoft Windows* 8.1. Эта система не поддерживает Intel SGX.
Что произошло?
Налицо проблема, хотя ветвь кода с Intel SGX явным образом отключена в программе. Это приложение, в том виде, в котором оно написано, не работает в системе, не поддерживающей Intel SGX. Оно даже не начало выполняться. В чем же дело?
Нужную подсказку нам дает сообщение об ошибке в окне консоли.
System.IO.FileNotFoundException: Could not load file or assembly ‘PasswordManagerCore.dll’ or one of its dependencies. The specified file could not be found.
Рассмотрим библиотеку PasswordManagerCore.dll и ее зависимости.
Помимо основных библиотек ОС, в число зависимостей входят bcrypt.lib и EnclaveBridge.lib, для чего во время выполнения потребуются библиотеки bcrypt.dll и EnclaveBridge.dll. Поскольку библиотека bcrypt.dll поставляется корпорацией Майкрософт и входит в состав ОС, можно исходить из того, что ее зависимости, если таковые существуют, уже установлены. Остается EnclaveBridge.dll.
Рассмотрим зависимости этой библиотеки. Вот что мы видим.
В этом и заключается проблема. Несмотря на то что мы явным образом отключили ветвь кода Intel SGX, EnclaveBridge.dll по-прежнему ссылается на библиотеки времени выполнения Intel SGX. Все символы в модуле объекта должны быть разрешены сразу после его загрузки. Отключение ветви кода Intel SGX не имеет значения: в DLL-библиотеке по-прежнему есть неопределенные символы.
При загрузке PasswordManagerCore.dll эта библиотека разрешает неопределенные символы, загружая bcrypt.dll и EnclaveBridge.dll, причем последняя из этих двух библиотек, в свою очередь, пытается разрешить свои неопределенные файлы, загружая sgx_urts.dll и sgx_uae_service.dll. В системе, где мы попытались запустить тестовое приложение, эти библиотеки отсутствуют, а поскольку ОС не может разрешить все эти символы, она выводит исключение, а программа дает сбой, не успев запуститься.
Эти две DLL-библиотеки входят в состав пакета Intel SGX Platform Software (PSW). Без них невозможно выполнение приложений Intel SGX, написанных с помощью Intel SGX Software Development Kit (SDK). Наше приложение должно работать даже при отсутствии этих библиотек.
Программный пакет платформы
Как уже было сказано выше, рантайм библиотеки входят в состав пакета PSW. Пакет PSW, помимо этих библиотек поддержки, включает следующее.
Мы подробнее обсудим установщик PSW в одном из следующих выпусков этой серии, посвященном упаковке и развертыванию.
Обнаружение поддержки расширений Intel Software Guard Extensions
До сих пор мы занимались лишь проблемой запуска нашего приложения в системах, не поддерживающих Intel SGX, а точнее в системах без пакета PSW. На следующем этапе необходимо уже после запуска приложения определить, поддерживаются ли расширения Intel SGX и включены ли они.
Обнаружение компонента Intel SGX, к сожалению, представляет собой не слишком простую задачу. Система поддерживает Intel SGX, если выполняются следующие четыре условия.
Определение компонентов дополнительно затрудняется еще и тем, что анализ состояния BIOS представляет собой нетривиальную задачу, которую, как правило, невозможно осуществить из пользовательского процесса. К счастью, в пакете Intel SGX SDK предоставляется простое решение: функция sgx_enable_device проверяет наличие расширений Intel SGX и пытается их включить, если в BIOS выбрано программное управление этими расширениями (цель программного управления — предоставить приложениям возможность включать Intel SGX, не требуя от пользователей перезагружать компьютер и запускать настройку BIOS: не самая безопасная и достаточно пугающая процедура, если пользователи не слишком подкованы в техническом плане).
С функцией sgx_enable_device связана всего одна проблема: эта функция входит в состав среды выполнения Intel SGX, следовательно, для ее использования в системе должен быть установлен пакет PSW. Поэтому перед вызовом функции sgx_enable_device нужно определить наличие пакета PSW.
Реализация
Мы определились с областью проблем, требующих решения, поэтому теперь можно составить перечень действий, необходимых для того, чтобы наше приложение с двумя ветвями кода правильно работало. Вот что должно делать наше приложение.
Загрузка и выполнение без среды выполнения Intel Software Guard Extensions
Наше основное приложение зависит от библиотеки PasswordManagerCore.dll, которая зависит от библиотеки EnclaveBridge.dll, которая, в свою очередь, зависит от среды выполнения Intel SGX. Поскольку необходимо разрешить все символы при загрузке приложения, нужно каким-то образом сделать так, чтобы загрузчик не стал пытаться разрешать символы, поступающие из библиотек среды выполнения Intel SGX. Доступно два варианта.
Вариант 1. Динамическая загрузка
При динамической загрузке отсутствует явная компоновка библиотеки в проекте. Вместо этого используются системные вызовы для загрузки библиотеки во время выполнения, затем происходит поиск имен каждой функции, которые планируется использовать, чтобы получить адреса, по которым они были размещены в памяти. После этого функции, содержащиеся в библиотеке, вызываются опосредованно с помощью указателей.
Метод динамической загрузки нельзя назвать простым и удобным. Даже если нужно лишь несколько функций, может потребоваться немало усилий, чтобы создать прототипы указателей для каждой нужной функции и получать адреса их загрузки по одному. При этом также утрачиваются некоторые преимущества, предоставляемые интегрированной средой разработки (например, помощь при создании прототипов), поскольку вы больше не вызываете функции явным образом по имени.
Динамическая загрузка обычно используется в приложениях с расширяемой архитектурой (например, в подключаемых модулях).
Вариант 2. Отложенная загрузка DLL-библиотек
В этом случае все библиотеки динамически компонуются в проекте, но Windows получает команду отложить загрузку проблемных DLL-библиотек. При отложенной загрузке DLL-библиотек Windows не пытается разрешить символы, определенные библиотекой, при запуске приложения. Вместо этого система дожидается первого вызова программы к функции, определенной в библиотеке. Именно в этот момент библиотека загружается, а символ разрешается (вместе со всеми своими зависимостями). Это, по сути, означает, что библиотека не загружается, пока она не нужна приложению. Преимущество такого подхода состоит в том, что приложения могут ссылаться на библиотеки, не установленные в системе, если не происходит вызов функций, содержащихся в этих библиотеках.
Мы оказываемся именно в такой ситуации, когда флаг компонента Intel SGX отключен, поэтому используем вариант номер 2.
Отложенная загрузка DLL-библиотеки указывается в конфигурации проекта для зависимого приложения или библиотеки. Для Tutorial Password Manager лучше всего использовать отложенную загрузку для EnclaveBridge.dll, поскольку мы вызываем эту библиотеку только при включенной ветви кода Intel SGX. Если эта библиотека не загружается, не будут загружены и две библиотеки среды выполнения Intel SGX.
Соответствующий параметр настраивается на странице Компоновщик → Ввод в окне конфигурации проекта PasswordManagerCore.dll.
После повторной сборки и установки библиотеки в системе с процессором Intel Core четвертого поколения консольное тестовое приложение начинает работать нужным образом.
Обнаружение программного пакета платформы
Перед вызовом функции sgx_enable_device для проверки поддержки Intel SGX на уровне платформы необходимо убедиться, что пакет PSW установлен в системе, поскольку функция sgx_enable_device входит в состав среды выполнения Intel SGX. Для этого лучше всего попытаться загрузить библиотеки рантайма.
Из предыдущего шага мы знаем, что нельзя просто динамически скомпоновать их: это приведет к ошибке при попытке запуска программы, если система не поддерживает Intel SGX (или если не установлен пакет PSW). Но нельзя использовать и отложенную загрузку библиотек: при таком способе загрузки невозможно определить, установлена ли библиотека, поскольку, если она отсутствует, произойдет сбой приложения. Это означает, что для проверки наличие библиотек рантайма необходимо использовать динамическую загрузку.
Библиотеки рантайма PSW должны быть установлены в системную папку Windows, поэтому мы воспользуемся GetSystemDirectory для получения этого пути, а для ограничения области поиска библиотек используем вызов SetDllDirectory. И наконец, для загрузки этих библиотек мы используем функцию LoadLibrary. В случае ошибки любого из этих вызовов мы будем знать, что пакет PSW не установлен и что основному приложению не следует пытаться запускать ветвь кода Intel SGX.
Обнаружение и включение расширений Intel Software Guard Extensions.
Поскольку библиотеки среды выполнения PSW были динамически загружены на предыдущем этапе, теперь достаточно вручную найти символ sgx_enable_device и вызвать его с помощью указателя функции. В результате мы узнаем, включена ли поддержка расширений Intel SGX.
Реализация
Для реализации перечисленных возможностей в приложении Tutorial Password Manager мы создадим новую библиотеку FeatureSupport.dll. Эту библиотеку можно безопасно динамически компоновать с основным приложением, поскольку она не имеет явных зависимостей от других библиотек.
Обнаружение компонентов будет реализовано в классе C++/CLI под названием FeatureSupport. Этот класс также будет содержать некоторые высокоуровневые функции для получения дополнительной информации о состоянии Intel SGX. В редких случаях для включения Intel SGX программным способом может потребоваться перезагрузка, а в еще более редких случаях программное включение может не сработать, поэтому пользователям потребуется явным образом включить поддержку Intel SGX в BIOS.
Объявление класса для FeatureSupport показано ниже.
Вот низкоуровневые процедуры, проверяющие наличие пакета PSW и пытающиеся обнаружить и включить Intel SGX.
Подведение итогов
С описанными изменениями кода мы встроили обнаружение компонентов Intel SGX в наше приложение. Теперь приложение будет правильно работать как в системах с поддержкой Intel SGX, так и без Intel SGX, выбирая соответствующую ветвь кода.
Как уже было сказано выше, в этой части предоставляется пример кода для загрузки.
Прилагаемый архив включает исходный код ядра приложения Tutorial Password Manager, включая новую библиотеку для обнаружения компонентов. Кроме того, мы добавили новую тестовую программу с графическим интерфейсом, автоматически выбирающую ветвь кода Intel SGX, но позволяющую отключить эту ветвь при необходимости (доступно только в случае, если система поддерживает Intel SGX).
Консольная тестовая программа также обновлена для обнаружения Intel SGX, хотя в этой программе невозможно настроить отключение ветви кода Intel SGX без изменения исходного кода.
В дальнейших выпусках
В седьмой части мы вернемся к работе с анклавом для дальнейшей доработки интерфейса. Следите за новостями!
Загружаемые файлы доступны на условиях лицензионного соглашения Intel Software Export Warning.
Стражи публичных облаков: как мы внедряли анклавы 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 наряду с уже задействованными технологиями информационной безопасности и тем самым повысить доверие наших пользователей к хранению и обработке конфиденциальных данных. Надеемся, что в будущем нам ещё предстоит поделиться с вами успешными клиентскими кейсами, хотя и не берёмся утверждать, что наши статьи не будут основаны на историях обнаружения и устранения новых уязвимостей. А пока предлагаем вам поделиться своими методами по защите чувствительных данных в комментариях.