Наши партнеры

UnixForum





Библиотека сайта rus-linux.net



Полнодисковое шифрование с поддержкой TPM появится в Ubuntu

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

В течение 15 лет подход Ubuntu к шифрованию на диске основывался на использовании парольных фраз для аутентификации пользователей. Однако в Ubuntu Core FDE разрабатывается и реализуется с использованием модулей доверенных платформ (TPM) уже более двух лет, начиная с Core 20.

Основываясь на дизайне FDE в Ubuntu Core, проводится работа над внедрением полнодискового шифрования с поддержкой TPM и в классические настольные системы Ubuntu, начиная с Ubuntu 23.10 (Mantic Minotaur), где оно будет доступно в качестве экспериментальной функции. Это означает, что на поддерживаемых платформах больше не потребуется вводить парольные фразы, а секрет, используемый для расшифровки зашифрованных данных, будет защищен TPM и восстанавливаться автоматически только программой ранней загрузки, имеющей право доступа к этим данным. Помимо повышения удобства использования, FDE с поддержкой TPM также защищает пользователей от атак "злых служанок", которые могут воспользоваться отсутствием способа аутентификации загрузочного ПО, а именно initrd, для конечных пользователей.

Полное шифрование диска в Linux достигается с помощью фреймворка Linux Unified Key Setup (LUKS), который обеспечивает шифрование диска на уровне блоков. Вот общий обзор основных шагов, связанных с реализацией FDE:

  • Настройка процесса шифрования: При настройке полного шифрования диска с помощью LUKS на Ubuntu вам будет предложено ввести кодовую фразу или ключ.
  • Создание заголовка LUKS: Введенная парольная фраза не используется непосредственно в качестве ключа шифрования. Вместо этого она проходит через дорогостоящий процесс вычисления ключа, в результате которого генерируется более надежный ключ шифрования, который затем используется для шифрования главного ключа шифрования. Этот зашифрованный ключ, а также другая необходимая информация хранятся в заголовке в начале зашифрованного устройства.
  • Passphrase Prompt at Boot: При загрузке системы Ubuntu initrd предложит ввести ключевую фразу, которую вы указали изначально. Эта парольная фраза используется для расшифровки заголовка LUKS, получения ключа шифрования и разблокировки зашифрованного устройства.
  • Интеграция сопоставления устройств: Зашифрованное устройство, которое может быть разделом или целым диском, отображается на виртуальное блочное устройство с помощью подсистемы device mapper. Это виртуальное устройство прозрачно шифрует и дешифрует данные "на лету" при чтении и записи данных с устройства.
  • Дешифрование и доступ к данным: После разблокирования зашифрованного устройства подсистема device mapper дешифрует данные по мере их чтения, позволяя операционной системе и приложениям получать доступ к данным, как если бы они не были зашифрованы. Аналогичным образом данные шифруются "на лету" при записи на устройство.
  • Гибкость: LUKS позволяет использовать различные алгоритмы и режимы шифрования, обеспечивая гибкость при выборе уровня безопасности и производительности, соответствующего вашим потребностям. В Ubuntu используются хорошо зарекомендовавшие себя алгоритмы, а именно AES-256 с режимом шифрования XTS.

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

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

Верифицированная загрузка

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

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

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

Модули доверенной платформы

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

Регистры конфигурации платформы, PCR, являются центральной частью TPM. Они представляют собой набор регистров, в которых хранятся криптографические хэши, представляющие измерения критических компонентов системы. Эти хэши создают цепочку доверия, которая позволяет проводить удаленную аттестацию, обеспечивая целостность и подлинность системы.

Измеренная загрузка

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

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

Для пользователей, которые решат использовать парольную фразу (в дополнение к TPM), это повысит уровень безопасности, поскольку исключит возможность проведения злоумышленниками автономных атак методом перебора парольной фразы.Для обеспечения этих преимуществ реализация FDE с поддержкой TPM опирается на два основных принципа проектирования. Во-первых, секретный ключ FDE закрыт для всего состояния EFI, включая командную строку ядра. Во-вторых, доступ к ключу расшифровки будет разрешен только в том случае, если устройство загружает программное обеспечение, которое определено как авторизованное для доступа к конфиденциальным данным. Именно в этот момент код initrd при загрузке снимет защиту с ключа в защищенном secure-boot файле kernel.efi.

Защита ключа в TPM

TPM имеет 4 иерархии, в которых могут быть защищены объекты, причем корнем каждой иерархии является первичное семя, которое используется для получения первичных объектов. Для FDE мы рассматриваем только иерархию хранения, которая связана с владельцем устройства. Остальные иерархии - иерархия одобрения (связана с идентификатором устройства и является корнем доверия для аттестации), иерархия платформы (доступна только для встроенного программного обеспечения платформы) и иерархия нуля (эфемерна и получает новое зерно при каждом сбросе).

Объекты могут иметь несколько назначений. Это могут быть асимметричные ключи, используемые для подписей или обмена ключами, симметричные ключи, используемые для симметричного шифрования или HMAC, запечатанные объекты, содержащие внешние данные, или ключи хранения, которые могут быть использованы для защиты других объектов, образуя иерархию объектов TPM. Поскольку TPM имеет ограниченный объем памяти, объекты не обязательно должны храниться в его внутреннем хранилище. Вместо этого они часто шифруются ключом, полученным из семени, связанного с ключом родительского хранилища, и затем хранятся вне TPM. Для полного шифрования диска Ubuntu хранит ключ шифрования диска вне TPM, защищенный иерархией хранения TPM внутри запечатанного объекта данных.

TPM откроет ключ коду, выполняющемуся внутри initramfs, только в том случае, если загрузочная среда была предварительно авторизована для доступа к конфиденциальным данным. Если определенные компоненты загрузочной среды будут изменены, то TPM не разрешит доступ к ключу. Для этого объект TPM должен иметь соответствующую политику авторизации.

Политика авторизации

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

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

Можно создать политику авторизации, которая требует, чтобы значения выбранных PCR совпадали с набором предварительно вычисленных значений. Объект данных sealed, защищающий ключ шифрования диска, использует это для обеспечения доступа к ключу только в определенной среде загрузки. Эта политика настраивается таким образом, чтобы доступ был запрещен при изменении любых компонентов загрузочной среды, имеющих принципиальное значение для защиты данных. К ним относятся загрузчик, ядро и код initramfs, конфигурация безопасной загрузки и командная строка ядра.

Роль Snapd

FDE с поддержкой TPM в классических системах Ubuntu Desktop базируется на той же архитектуре, что и Ubuntu Core, и имеет ряд общих принципов разработки и реализации. В частности, загрузчик (shim и GRUB) и ядро будут поставляться в виде snap-пакетов (через gadget и kernel snap), а не в виде пакетов Debian.

Логика работы загрузчика включает выбор режима загрузки и выбор ядра, и кодируется в конфигурации GRUB, предоставляемой Snapd, а не генерируется автоматически на устройстве. Наконец, мы будем использовать унифицированные образы ядра, в которых ядро и initramfs будут заключены в один PE-бинарный файл, содержащий небольшой шлейф для выполнения ядра. Все это будет подписано как единый артефакт.

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

Все начинается с программы установки

У вас по-прежнему будет возможность выбрать предпочтительное решение для шифрования полного диска, с TPM или без него. Программа установки предложит вам на выбор два варианта установки:

  1. FDE с поддержкой TPM: установка классической настольной системы, которая получает ядро и загрузчик из снапов, а не из deb.
  2. FDE 2 без поддержки TPM: установка классической настольной системы, полностью основанной на deb, с той же компоновкой, что и в первом варианте, чтобы облегчить возможные пути обновления. Этот вариант установки будет использоваться по умолчанию и никуда не денется.

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