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).
  • Ключ шифрування пам'яті змінюється випадковим чином при кожній зміні циклу електроживлення (наприклад, при завантаженні, при відновленні роботи після сну і глибокого сну). Ключ зберігається всередині ЦП і недоступний ззовні.
  • Дані ізольовані в анклавах і доступні тільки для коду цього анклаву.
Розмір захищеній області пам'яті строго обмежений і задано BIOS системи. Зазвичай це 64 МБ або 128 МБ. Деякі виробники систем надають можливість настроювати значення в BIOS. В залежності від розміру кожного анклаву в пам'яті одночасно може бути створено від 5 до 20 анклавів.


Малюнок 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. Ми опишемо вимоги до створення цього додатка, обмеження і користувальницький інтерфейс. Стежте за новинами.

Список всіх навчальних матеріалів у цій серії див. у статті Представляємо серію навчальних матеріалів, присвячених Intel Software Guard Extensions.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.