Создать облачный сервер с поддержкой Intel® SGX
Intel® SGX (Software Guard Extensions) — технология, которая предоставляет набор инструкций центрального процессора для повышения безопасности кода и данных приложения с помощью дополнительной защиты от утечек или модификации.
С Intel® SGX приложение может создавать в оперативной памяти анклавы — информация в них не сможет быть прочитана другими приложениями (ненадежными компонентами), запущенными на том же сервере, включая системные приложения, модули ядра и гипервизор.
Посмотреть доступность облачных серверов с SGX (линейка фиксированных конфигураций SGX Line) в регионах можно в матрице доступности Облачные серверы.
Для поддержки Intel® SGX и работы с анклавами на облачном сервере нужно установить драйвер и подготовить приложение.
Создать облачный сервер с поддержкой Intel® SGX
- В панели управления перейдите в раздел Облачная платформа → Серверы.
- Нажмите Создать сервер.
- Выберите линейку фиксированных конфигураций SGX Line.
- Выберите остальные настройки облачного сервера — подробнее в инструкции Создать облачный сервер.
- Нажмите Создать сервер.
- Подготовьте облачный сервер к работе: установите драйвер и подготовьте приложение.
Установить драйвер
Если в качестве источника при создании сервера вы выбрали образ Ubuntu 22.04 или Windows 2019, драйверы для работы SGX устанавливать не нужно.
Для поддержки Intel® SGX и работы с анклавами нужно, чтобы был установлен один из трех драйверов:
- In-kernel Driver — подходит только для Linux, входит в версии ядра Linux от 5.11 и выше;
- DCAP Driver — подходит для Windows и для версий ядра Linux без in-kernel драйвера;
- Out-of-tree Driver — альтернативный способ. Мы рекомендуем использовать In-kernel драйверы, для этого вы можете перейти на HWE-ядро. Пример команды для Ubuntu 20.04:
apt-get install --install-recommends linux-generic-hwe-20.04
В репозитории Intel® собраны пакеты с драйверами для различных операционных систем.
Пример установки DCAP-драйвера для Ubuntu 20.04
Установите Dynamic Kernel Module Support:
apt install dkms
Установите linux-headers (заголовки ядра):
apt install linux-headers-$(uname -r)
Установите драйвер:
wget https://download.01.org/intel-sgx/sgx-dcap/1.9/linux/distro/ubuntu20.04-server/sgx_linux_x64_driver_1.36.2.bin
chmod 755 sgx_linux_x64_driver_1.36.2.bin
./sgx_linux_x64_driver_1.36.2.binПроверьте в логах ядра, что драйвер загружен:
dmesg | grep sgx
Пример ответа:
[ 2.857457] systemd[1]: Set hostname to <sgx-legacy>.
[ 3.748684] intel_sgx: loading out-of-tree module taints kernel.
[ 3.750444] intel_sgx: module verification failed: signature and/or required key missing - tainting kernel
[ 3.756652] intel_sgx: EPC section 0x140000000-0x1bf2fffff
[ 3.850249] intel_sgx: Intel SGX DCAP Driver v1.36.2
Использовать SGX в приложении
Для работы с анклавами и Intel® SGX вы можете использовать:
- LibOS (library operating system) — позволяет не менять кодовую базу и с небольшими модификациями запустить Intel® SGX в существующем приложении;
- или SDK — для разработки нового приложения. Все пакеты с SDK собраны для разных операционных систем, и их нужно только установить.
LibOS
Доступны опенсорсные и коммерческие версии LibOS для поддержки Intel® SGX.
Опенсорсные:
Коммерческие:
SDK
Все SDK содержат API, библиотеки, примеры исходного кода, инструменты и документацию для быстрого старта:
- Intel SGX SDK for Linux — посмотрите пример установки
- Intel SGX SDK for Windows
- Fortanix Enclave Development Platform
- Open Enclave SDK
- Teaclave / Teaclave SGX SDK
- MesaTEE
- Edgeless Systems EGo
- Edgeless RT
- Enarx
Пример установки Intel SGX SDK для Ubuntu 20.04
wget https://download.01.org/intel-sgx/sgx-dcap/1.9/linux/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.12.100.3.bin
chmod 755 sgx_linux_x64_sdk_2.12.100.3.bin
./sgx_linux_x64_sdk_2.12.100.3.bin --prefix=/opt/intel