Решение для конфиденциальных вычислений secGear

С быстрым развитием облачных вычислений все больше организаций внедряют вычислительные сервисы в облаке. Безопасность пользовательских данных в облачной инфраструктуре сторонних производителей сталкивается с серьезными проблемами. Конфиденциальные вычисления, сonfidential computing — это технология, которая использует аппаратные доверенные среды выполнения (Trusted Execution Environment, TEE) для защиты конфиденциальности и целостности используемых данных. Она использует аппаратное обеспечение нижнего уровня (фактически это специальные наборы инструкций процессоров CPU различных архитектур) для создания минимальной зависимости от доверия, которая удаляет операционную систему, гипервизор, инфраструктуру, системного администратора и поставщика услуг из списка доверенных объектов как неавторизованных объектов для снижения потенциальных рисков. В отрасли существуют различные технологии конфиденциальных вычислений такие как Intel SGX, ARM TrustZone, RISC-V Keystone и соответствующие им наборы для разработки программного обеспечения (SDK). При этом экосистемы приложений разных типов и для разных архитектур изолированы друг от друга, что приводит к высоким затратам на разработку и обслуживание для разработчиков приложений для конфиденциальных вычислений. Чтобы помочь разработчикам быстро создавать конфиденциальные вычислительные решения, обеспечивающие безопасность данных в облаке, в операционной системе openEuler / openScaler предложен единый framework программирования конфиденциальных вычислений — secGear.

secGear — это framework для разработки приложений, которым необходимо обеспечение безопасности конфиденциальных вычислений (confidential computing). Он скрывает различия между реализациями надежных сред выполнения (TEE) различных архитектур и их наборами для разработки программного обеспечения (SDK). Далее постараемся дать короткое описание его устройства для разработки приложений, процесса установки и как можно использовать инструменты (tools) и API SDK, содержащиеся в этом framework.

Архитектура

secGear — единая платформа для программирования конфиденциальных вычислений, которая предоставляет простые в использовании инструменты для разработки, включая управление жизненным циклом защищенных зон (разделены на защищенные TEE и расширенные REE, Rich Execution Environment, доверенные зоны выполнения вычислений), библиотеку защищенной разработки, вспомогательный инструмент для генерации кода, инструмент для создания и подписания кода, возможности обеспечения безопасности и решение для реализации компонентов службы безопасности. Он может быть использован в различных сценариях, таких как кольца доверия, зашифрованные базы данных, многопользовательские вычисления и защита безопасности с помощью искусственного интеллекта.

Приведем пример поддерживаемых сейчас secGear аппаратных расширений Intel Software Guard Extensions (Intel SGX) — набора инструкций центрального процессора, предоставляющих возможность приложению создавать анклавы — области в виртуальном адресном пространстве, защищённые от чтения и записи извне этой области другими процессами, включая ядро операционной системы. Intel SGX обеспечивают целостность и конфиденциальность вычислений с повышенными требованиями к безопасности, производимыми на системах, где привилегированные процессы (ядро операционной системы, гипервизор, и т. д.) считаются ненадёжными.

Архитектура secGear состоит из трех уровней:

  • secGear service layer (cервисный уровень): предоставляет комплексные службы безопасности.
  • secGear middleware layer (промежуточный уровень программного обеспечения): предоставляет набор API-интерфейсов протоколов для удовлетворения основных требований пользователей к приложениям безопасности.
  • secGear base layer (базовый уровень): предоставляет множество API-интерфейсов или инструментов разработки анклавов (enclave) и поддерживает API-интерфейсы C POSIX и стандартные API-интерфейсы OpenSSL в области безопасности. Пользователи могут разрабатывать защищенные приложения на основе этих API.

secGear обладает следующими преимуществами:

  • Совместимость архитектуры: маскируются различия между различными API SDK, используя один и тот же набор исходного кода для нескольких архитектур (с помощью Unified secGear APIs).
  • Простота разработки: Инструменты разработки и общие компоненты безопасности позволяют пользователям сосредоточиться на сервисах, что значительно повышает эффективность разработки.
  • Высокая производительность: Функция switchless “без переключения” повышает производительность взаимодействия между расширенной средой выполнения REE и доверенной средой выполнения TEE более чем в 10 раз снижая время переключения в типичных сценариях, таких как частые взаимодействия между REE и TEE и взаимодействие с большими объемами данных.

Основные возможности

Switchless технология

Проблема

После восстановления обычного приложения с использованием недоверенной расширенной среды выполнения REE (Rich Execution Environment) часто вызываются данные из доверенной среды выполения TEE и при этом приложениям приходится часто обмениваться большими блоками данных с TEE. Каждый вызов между REE и TEE требует переключения контекста между пользовательским режимом REE, режимом ядра REE, драйвером, режимом ядра TEE и пользовательским режимом TEE. При обмене большими блоками данных во время вызова генерируется несколько копий в памяти. Кроме того, производительность взаимодействия между REE и TEE ухудшается из-за таких факторов, как ограничение размера базовых блоков данных, что серьезно влияет на реализацию конфиденциальных вычислительных приложений.

Решение

Switchless – это технология, которая использует общую память для уменьшения количества переключений контекста и копирования данных между REE и TEE для оптимизации производительности взаимодействия.

 

Удаленная аттестация

Проблема

Конфиденциальные вычисления разработаны для обеспечения безопасности данных в облаке. Однако из-за угрозы утечки данных у клиентов по-прежнему возникают опасения по поводу теоретической безопасности конфиденциальных вычислений, что влияет на их продвижение и применение.

Решение

Поставщики конфиденциальных вычислений запустили технологию удаленной аттестации, которая позволяет клиентам в любое время определять статус надежности TEE и TA (Trust Authority) в облаке. Удаленная аттестация – это технология выполняющаяся в режиме реального времени, которая измеряет TEE и приложения, работающие в TEE, генерирует отчеты об аттестации и использует предустановленный корневой ключ для подписи отчетов, чтобы предотвратить их подделку. secGear инкапсулирует API удаленной аттестации на основе возможностей удаленной аттестации в SDK каждого поставщика. secGear в этом случае должен работать на платформе HUAWEI Kunpeng.

 

Защищенный канал связи

Проблема

При запросе услуги конфиденциальных вычислений в облаке владельцу данных необходимо загрузить обрабатываемые данные в TEE в облаке для обработки. Поскольку TEE не подключен к сети, данные необходимо передавать в REE по сети в виде открытого текста, а затем передавать в TEE из REE. Данные в виде открытого текста хранятся в памяти REE, что создает угрозу безопасности.

Решение

Защищенный канал – это технология, которая объединяет удаленную аттестацию конфиденциальных вычислений для реализации безопасного согласования ключей между владельцем данных и TEE в облаке. Она согласовывает сессионный ключ, принадлежащий только владельцу данных, и TEE в облаке. Затем ключ сеанса используется для шифрования пользовательских данных, передаваемых по сети. После получения зашифрованных данных REE передает данные в TEE для расшифровки и обработки.

Установка secGear

Окружающая среда ARM

Аппаратные  требования

Сервер:                     TaiShan 200 Model 2280

Материнская плата:  Kunpeng system board

Плата BMC:              1711 (модель BC82SMMAB); версия встроенного ПО: 3.01.12.49 или более поздняя

Процессор:                Kunpeng 920 (модель 7260, 5250 или 5220)

Шасси сервера:         рекомендуется использовать шасси с 8 или 12 дисками

Важно отметить:

  • Убедитесь, что на сервере предварительно настроен набор функций TrustZone. То есть операционная система TEE, ключ загрузки операционной системы, BMC, BIOS и лицензия были предварительно настроены на сервере.
  • Для обычных серверов функция TrustZone не может быть включена только путем обновления встроенного ПО BMC, BIOS и TEE OS.
  • По умолчанию функция TrustZone отключена на сервере. Дополнительные сведения о том, как включить функцию TrustZone на сервере, см. в разделе Настройки BIOS.

Программная часть

Операционная система:

OpenScaler 22.03 LTS SP3 или новее

OpenScaler 22.09

OpenScaler 22.03 LTS или новее

Подготовка тестовой ОС

Для использования на aarch64 сервер была установлена ОС openScaler 22.03 LTS SP3. Достаточно минимальной конфигурации. Для получения более подробной информации ознакомьтесь с требованиями по настройке окружения и процедурами на официальном веб-сайте Kunpeng.

Установка secGear на aarch64

Выполните следующие команды для установки программных пакетов:

# Установить пакеты для компилятора

dnf install cmake ocaml-dune

# Непосредственно установка secGear

dnf install secGear-devel

# Проверить, что все установленно корректно

$ rpm -qa | grep -E ‘secGear|itrustee|ocaml-dune’

itrustee_sdk-xxx

itrustee_sdk-devel-xxx

secGear-xxx

secGear-devel-xxx

ocaml-dune-xxx

Примеры выполнения команд:

Окружающая среда x86_64

Аппаратные  требования

Процессор и серверная платформа, поддерживающая функционал Intel SGX

Программная часть

Операционная система:

OpenScaler 22.03 LTS SP3 или новее

OpenScaler 22.09

OpenScaler 22.03 LTS или новее

Подготовка тестовой ОС

Требуется сервер, поддерживающий полностью функционал Intel SGX и также требуется включить функцию SGX, обратившись к руководству по настройке BIOS сервера. Для использования на x86_64 совместимый сервер требуется, чтобы была установлена ОС openScaler 22.03 LTS SP3. Достаточно минимальной конфигурации.

Установка secGear на x86_64

Выполните следующие команды для установки программных пакетов:

# Установить пакеты для компилятора

dnf install cmake ocaml-dune

# Установка пакетов secGear

dnf install secGear-devel

# Проверить, что все установленно корректно

$ rpm -qa | grep -E ‘secGear|ocaml-dune|sgx’

secGear-xxx

secGear-devel-xxx

ocaml-dune-xxx

libsgx-epid-xxx

libsgx-enclave-common-xxx

libsgx-quote-ex-xxx

libsgx-aesm-launch-plugin-xxx

libsgx-uae-service-xxx

libsgx-ae-le-xxx

libsgx-urts-xxx

sgxsdk-xxx

sgx-aesm-service-xxx

linux-sgx-driver-xxx

libsgx-launch-xxx

Примеры выполнения команд по установке:

API SDK, функции и инструменты разработки

Платформа secGear unified programming framework для конфиденциальных вычислений предоставляет базовые API-интерфейсы, которые сглаживают различия между пакетами TEE SDK для различных платформ, а также предоставляет расширенные функции, такие как Switchless технология, удаленная аттестация (Remote Attestation) и возможность создания защищенного канала связи (Secure Channel).

Описание API-интерфейсов предоставляемых SDK для доступа к secGear можно найти, обратившись к описанию их функций API по ccылке secGear Basic API Reference.

Описание использования расширенных функции Switchless, Remote Attestation, Secure Channel также можно найти на официальном сайте документации ОС openEuler.

Описание инструментов разработки для генерации и подписания кода приложений с использованием seGear.

Руководство по разработке secGear приложения

Ниже будет показано как использовать secGear для разработки программы helloworld на языке С.

Загрузка примера

Загружаем пример приложения с помощью команды:

git clone https://gitee.com/openeuler/secGear.git

Результат выполнения должен быть примерно таким:

Структура директории

Теперь мы имеем следующую структуру файлов и директорий, где код приложения состоит из трех частей:

  • main.c REE-часть программы
  • hello world.edl заголовочный файл API, вызываемых REE и TEE
  • hello.c TEE-часть программы

Подготовка лицензий

В дополнение к предыдущим трем частям, есть файл проекта компиляции (CMakeLists.txt) и лицензии разработчика (Enclave.config.xml/Enclave.lds для Intel SGX и manifest.txt/config_cloud.ini для Kunpeng).

Примечание:

Для получения лицензии разработчика Kunpeng необходимо обратиться к владельцу сервиса Huawei.

Поскольку Intel SGX используется в режиме отладки, в настоящее время вам не нужно подавать заявку на получение лицензии разработчика. Если услуга удаленной аттестации Intel требуется для коммерческого использования, вам необходимо подать заявку на получение лицензии от Intel.

После успешной загрузки приложения будет получен файл лицензии разработчика, который необходимо сохранить в соответствующей директории приложения.

Процедура разработки

Создание конфиденциального приложения на базе secGear аналогично независимому извлечению функциональных модулей. Процедура заключается в следующем: определите логику обработки конфиденциальных данных, извлеките ее в независимую библиотеку, разверните в TEE и определите API, предоставляемые REE, в файле EDL (Enclave Description Language, язык описания анклава).

На следующем рисунке показана процедура разработки.

  1. Создайте основную функцию и API-интерфейсы в REE, управляйте анклавом и вызывайте функции в TEE.
  2. Создайте EDL-файл (аналогичный заголовочному файлу языка C, который определяет API-интерфейсы взаимодействия между REE и TEE).
  3. Изучите и вызовите API-интерфейсы TEE.
  4. Вызовите инструмент генерации кода codegener, чтобы автоматически сгенерировать исходный код взаимодействия между REE и TEE на основе файла EDL и скомпилировать исходный код в двоичные файлы REE и TEE. Логика REE напрямую вызывает соответствующий API TEE без учета автоматически сгенерированного кода взаимодействия, что снижает затраты на разработку.

Вызовите инструмент подписи для подписания двоичных файлов в TEE, чтобы реализовать доверенную загрузку программы TEE.

Сборка и запуск

Окружающая среда ARM

Выполните следующие команды для выполнения сборки и установки:

git clone https://gitee.com/openeuler/secGear.git

cd secGear

source environment

mkdir debug && cd debug && cmake -DENCLAVE=GP .. && make && sudo make install

/vendor/bin/secgear_helloworld

 

Окружающая среда x86_64

Выполните следующие команды для выполнения сборки и установки:

git clone https://gitee.com/openeuler/secGear.git

cd secGear

source /opt/intel/sgxsdk/environment && source environment

mkdir debug && cd debug && cmake .. && make && sudo make install

./examples/helloworld/host/secgear_helloworld

Результаты

По результатам успешной установки ПО secGear для ОС openScaler 22.03 LTS SP3 на совместимый сервер можно сделать вывод, что данное ПО совместимо с ОС и такое решение может быть в дальнейшем успешно использовано для обеспечения безопасных конфиденциальных вычислений. Программное обеспечение secGear сокращает затраты на разработку, одновременно улучшая безопасность и простоту использования для сторонних средств безопасности и выполнения различного круга задач с применением cерверной ОС openScaler.