Компания Intel открыла компоненты для использования технологии защиты SGX в Linux
Компания Intel опубликовала исходные тексты компонентов для использования в Linux технологии SGX (Software Guard Extensions), предоставляющей разработчикам новый уровень защиты для изоляции кода и данных приложения. Для загрузки доступны SDK с набором инструментов и библиотек (в том числе опубликована криптографическая библиотека tlibcrypto), платформа (PSW, Platform Software), включающая реализацию сервиса aesmd, и драйвер для ядра Linux. Основная часть SDK и PSW распространяется под лицензией BSD, драйвер опубликован под лицензией GPLv2.
Предлагаемая технологией SGX защита основана на использовании серии новых инструкций, добавленных в процессоры Intel Core шестого поколения (Skylake) и позволяющих выделять приложениям пользовательского уровня закрытые области памяти - анклавы, доступ к которым ограничен в том числе процессам с более высоким уровнем привилегий. Доступ к анклавам из приложения осуществляется при помощи специальных процессорных инструкций. SGX SDK предлагает высокоуровневый API, библиотеки, утилиты, документацию и примеры кода для упрощения создания и отладки пользовательских приложений на языках C/C++, применяющих технологию защиты Intel SGX.
Технология SGX позволяет обеспечить защиту как от программных атак, так и от атак, реализуемых на аппаратном уровне. Например, содержимое анклава не может быть прочитано и записано даже ядром и кодом, выполняемым в режимах ring0, SMM и VMM. Передать управление коду в анклаве невозможно традиционными функциями перехода и манипуляциями с регистрами и стеком - для передачи управления коду в анклаве применяется специально созданная новая инструкция, выполняющая проверку полномочий (но код внутри анклава может применять классические методы вызова для обращения к функциям внутри анклава и специальную инструкцию для вызова внешних функций). Выполнение кода в анклаве допускается только в 32- и 64-разрядных режимах CPU.
Защита от аппаратных атак реализована через шифрование памяти анклава (AES-GCM) - при подключении к модулю DRAM, атакующий сможет прочитать только зашифрованные данные. Ключ шифрования хранится во внутренней памяти CPU и случайным образом меняется при каждом включении или выходе из спящего/ждущего режима. Для отслеживания возможной модификации данных применяется проверка по цифровой подписи. Цифровая подпись формируется во время сборки и обеспечивает гарантию загрузки в анклав только данных, определённых разработчиком приложения.
Использование SGX подразумевает разбиение приложения на две логические части: небольшой верифицированный защищённый компонент для анклава (например, код для работы с секретными данными) и незащищённый компонент (остальной код приложения). Для отладки кода в анклаве предусмотрен специальный отладочный атрибут, позволяющий создать анклав в режиме отладки и применить к нему отладчик, поставляемый в составе SDK (в обычном режиме работы анклава, его отладка невозможна).