SOT

Security Orchestration Tools

Напишите нам на sales@securityvision.ru или закажите демонстрацию

Что такое Trusted Platform Module (TPM-модуль) и как он используется для обеспечения кибербезопасности конечных точек

Что такое Trusted Platform Module (TPM-модуль) и как он используется для обеспечения кибербезопасности конечных точек

Руслан Рахметов, Security Vision


Одними из основных задач при обеспечении кибербезопасности конечных точек являются надежное управление ключами шифрования, доверенная загрузка компонентов ОС для защиты от ВПО (руткитов, буткитов), полнодисковое шифрование накопителей, защита учетных данных, а также изоляция криптографических вычислений от потенциального вредоносного воздействия скомпрометированных компонентов ОС. Для решения этих задач применяются выделенные криптографические модули (криптопроцессоры), в которых хранятся ключи шифрования и производятся операции с чувствительными данными - их называют доверенными платформенными модулями (сокращенно TPM, Trusted Platform Module). В данной статье расскажем о принципах работы TPM-модулей, их функциях и основных компонентах, а также приведем примеры практического применения TPM для защиты данных.

 

Необходимость использования доверенного компонента, работающего с критичными данными и изолированного от потенциального вредоносного воздействия, заложена в принципах создания безопасных информационных систем. Например, в знаменитой «Оранжевой книге» («Критерии определения безопасности компьютерных систем», англ. "Trusted Computer System Evaluation Criteria") было введено понятие «доверенной вычислительной базы» (англ. "trusted computing base", сокращенно TCB) как совокупности защитных программных и аппаратных механизмов в компьютерной системе, обеспечивающей реализацию политики ИБ в системе, при этом процессы внутри TCB не должны подвергаться влиянию недоверенных процессов. Одним из способов такой изоляции является реализация привилегированных процессов безопасности в отдельном физическом устройстве - например, еще в конце 90-х годов в России появились средства доверенной загрузки (называются также аппаратно-программными модулями доверенной загрузки, сокр. АПМДЗ) для защиты процесса загрузки ОС, контроля целостности BIOS/UEFI/загрузчика ОС/ядра ОС, аутентификации пользователей и журналирования их действий, а также выработки надежных криптографических ключей с помощью выделенного аппаратного генератора случайных чисел. Зарубежом подобные криптомодули называются доверенными платформенными модулями (TPM, Trusted Platform Module) - в 2003 году некоммерческая организация Trusted Computing Group (TCG), ныне являющаяся консорциумом более чем 100 технологических компаний, разработала первые TPM-модули версии 1.1b, которые начали активно встраиваться в материнские платы коммерческих ПК различных вендоров. В период с 2005 по 2009 годы разрабатывалась новая версия TPM 1.2, в которой были учтены замечания вендоров - появился стандартный программный интерфейс и стандартная распиновка для интеграции в материнские платы (могут использоваться физические интерфейсы SPI, LPC, I2C, SMBus). В спецификации TPM 1.2 использовался алгоритм хэширования SHA-1, в котором в 2005 году была обнаружена уязвимость, приводящая к снижению стойкости к коллизиям - несмотря на то, что первая практическая эксплуатация этой уязвимости была продемонстрирована только в 2017 году (атака SHAttered, были продемонстрированы два разных документа с одинаковыми SHA-1 хэшами), разработчики TCG решили актуализировать спецификацию TPM. В 2014 году была опубликована спецификация TPM 2.0, в которой были добавлены новые алгоритмы шифрования, хэширования, выработки имитовставки на основе хэша (HMAC). В 2015 году спецификация TPM 2.0 стала международным стандартом - были разработаны стандарты ISO/IEC 11889-1:2015, ISO/IEC 11889-2:2015, ISO/IEC 11889-3:2015 и ISO/IEC 11889-4:2015, описывающие, соответственно, архитектуру, структуры, команды и поддерживающие процедуры для программной библиотеки модуля TPM. В настоящий момент актуальная версия 184 библиотеки TPM 2.0 размещена на сайте организации TCG, а исходный код программной реализации TPM размещен на GitHub-странице сообщества Linux-разработчиков, а также на странице реализации от Microsoft.

 

Модуль TPM 2.0 позволяет выполнять следующие операции:

   ·  Асимметричное шифрование с использованием алгоритмов RSA 2048, ECC P256, ECC BN256;

   ·  Симметричное шифрование с использованием алгоритмов AES 128, AES 256;

   ·  Хэширование с использованием алгоритмов SHA-1, SHA-2 (256 бит);

   ·  Выработка имитовставки на основе хэша (HMAC) с использованием алгоритмов SHA-1, SHA-2 (256 бит);

   ·  Выделенный аппаратный генератор случайных чисел;

   ·  «Привязка» (англ. binding, wrapping) ключей шифрования: выработка ключей для симметричного шифрования и их шифрование/расшифрование с помощью встроенных в TPM открытых/закрытых ключей - созданные симметричные ключи «привязываются» к TPM-модулю;

   ·  «Запечатывание» (англ. sealing) зашифрованных данных: расшифрование данных с использованием «привязанных» ключей возможно только если система находится в заранее определенном защищенном состоянии;

   ·  Аттестация (англ. attestation) устройств: проверка подлинности установленного TPM-чипа, проверка целостности и безопасности загруженной прошивки и ОС;

   ·  Защита от атак методом перебора ПИН-кодов, установленных для TPM;

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

 

Для того, чтобы понять, как работает «привязывание» и «запечатывание» ключей и аттестация устройств, нужно познакомиться с внутренней структурой TPM-модуля версии 2.0, его основными функциональными блоками и принципами работы:


1. С точки зрения теории, модуль TPM является компонентом вычислительной системы, позволяющим понять, была ли скомпрометирована доверенная вычислительная база (TCB) - в случае компрометации TPM запретит загрузку системы. Модуль TPM реализует концепцию Roots of Trust («корни доверия») - доверенные программные и аппаратные компоненты, от подлинности и целостности которых зависят выполняемые ими критичные функции безопасности.


2. Модуль TPM включает в себя несколько программных компонентов:


2.1. CRTM (Core Root of Trust for Measurement, ядро корня доверия для измерения): компонент прошивки материнской платы, содержащийся в BIOS/UEFI, который запускается в самую первую очередь при перезапуске устройства. CRTM пользуется безусловным доверием других компонент системы, а его целостность проверяется во время самопроверки при запуске устройства.


2.2. RTM (Root of Trust for Measurement, корень доверия для измерения): после прохождения успешной самопроверки CRTM управление передаётся RTM, который выполняет хэширование последующих запускаемых компонентов - BIOS/UEFI, загрузчика ОС, самой ОС. Результат хэширования (хэш-сумма или digest, т.е. «сводка») называется «измерением» (measurement) и передаётся в компонент RTS.


2.3. RTS (Root of Trust for Storage, корень доверия для хранения): данный компонент хранит «измерения» в специальных аппаратных регистрах в модуле TPM, они называются PCR (Platform Configuration Register, регистры конфигурации платформы, всего их 24). Данные регистры доступны TPM-чипу только на запись и их значения сбрасываются при перезапуске устройства. Особенностью регистров PCR является то, что при необходимости записи в PCR нового «измерения» старое значение не заменяется новым, а производится конкатенации старого значения регистра и нового «измерения» с хэшированием результата конкатенации:

 

новое_значение_PCR = хэш от (старое_значение_PCR | значение_измерения)

 

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

 

2.4. RTR (Root of Trust for Reporting, корень доверия для отчетности): данный компонент получает данные из RTS (т.е. значения регистров PCR) и позволяет подписать их с помощью закрытого ключа AIK (Attestation Identity Key, см. ниже). Подписанные значения могут быть переданы проверяющей системе («аттестатору»), которая сможет проверить их подлинность с использованием общедоступного сертификата TPM. Таким образом, например, может быть проверена целостность и подлинность цепочки загрузки ОС.

 

2.5. EK (Endorsement Key, ключ подтверждения): производители TPM-чипов на основе уникальной последовательности чисел (Endorsement Seed) для каждого TPM-модуля генерируют уникальную пару EK-ключей асимметричного шифрования (RSA с ключом 2048/3072/4096 бит или ECC P256/P384/P521/). При этом созданная пара EK-ключей не может быть экспортирована на другой TPM-чип, а сертификат открытого EK-ключа подписывается производителем TPM-модуля. Ключ EK позволяет уникально идентифицировать каждый TPM, а также используется как корень доверия для всех генерируемых этим TPM ключей для цифровой подписи и аттестации устройства. Однако, ключи EK никогда непосредственно не используются - вместо этого на основе EK создаются ключи AK (по аналогии с тем, как в типовых PKI-инфраструктурах не используется непосредственно RootCA, а создаются подчиненные SubCA).

 

2.6. AK (Attestation Key, ключ аттестации, в версии TPM 1.2 они назывались AIK, Attestation Identity Key): ключи AK создаются на TPM-чипе, они используются для аттестации устройства и сгенерированных TPM-модулем ключей и позволяют подтвердить, что ключи были созданы подлинным TPM-чипом. Для AK-ключей выполняется протокол аттестации (Attestation Protocol): на основе EK генерируется новая пара ключей AK, устройство пересылает корпоративному центру аттестации (Attestation CA) запрос на получение сертификата для AK (в запрос включается открытый ключ AK и сертификат EK), центр аттестации проверяет подлинность запрашиваемого устройства (отправляет устройству зашифрованный challenge-запрос, который расшифровывается закрытым ключом EK и отправляется обратно), затем центр аттестации выдает сертификат для открытого ключа AK. В результате, проверяющая сторона (например, posturing-сервер для удаленной проверки целостности устройства в сети) получает в ответ на свой запрос подписанное AK-ключом значение определенного PCR-регистра (такая структура называется "Quote", «ссылка»): проверить подпись сможет Attestation CA, а сам Quote будет содержать доказательство того, что цепочка загрузки ОС на подключаемом к сети устройстве не была скомпрометирована. Ключ EK и ключи AK формируют иерархию подтверждения (Endorsement Hierarchy), ключи в которой не удаляются после перезагрузки устройства.

 

2.7. SRK (Storage Root Key, корневой ключ хранилища): на основе уникальной последовательности чисел (Storage Seed) при инициализации или сбросе TPM-модуля генерируется пара SRK-ключей асимметричного шифрования, уникальная для каждого TPM. При этом, в отличие от EK-ключей, новая пара SRK-ключей может быть сгенерирована новым владельцем TPM-чипа. Пара ключей SRK используется для защищенного хранения других ключей, созданных на TPM-чипе (за исключением ключей EK и AK): создаваемые TPM-чипом ключи симметричного шифрования могут быть расшифрованы лишь внутри TPM-чипа только с использованием закрытого ключа SRK - таким образом реализуется функционал «привязки» (англ. binding, wrapping) ключей шифрования к TPM-модулю. Использование такого подхода позволяет хранить надежно зашифрованные ключи на недоверенном носителе (например, на жестком диске или в ОЗУ), поскольку объем постоянной памяти TPM-чипов по спецификации должен составлять не менее 100 килобайт (хотя производители TPM могут использовать и более объемные NVRAM-модули). Кроме «привязки» ключей, можно использовать функционал «запечатывания» (англ. sealing) зашифрованных данных: доступ к SRK для расшифрования ключей симметричного шифрования возможен, только если PCR-регистры содержат определенную информацию - например, содержат подтверждение того, что цепочка загрузки ОС на устройстве не была скомпрометирована. Ключи SRK могут также использоваться для аттестации устройства: в протоколе аттестации challenge-запрос будет зашифрован сначала EK (который не меняется при смене владельца TPM), а затем SRK (который может изменится при смене владельца устройства). Ключ SRK формирует иерархию хранилища (Storage Hierarchy), ключи в которой не удаляются после перезагрузки устройства.

 

2.8. Кроме иерархии подтверждения (Endorsement Hierarchy) и иерархии хранилища (Storage Hierarchy), в TPM существует иерархия платформы (Platform Hierarchy) - в ней хранятся ключи шифрования/подписи, которые не удаляются после перезагрузки устройства и используются производителем устройства, например, для проверки целостности прошивки. В еще одной, четвёртой, нулевой иерархии (NULL Hierarchy) ключи удаляются при перезагрузке устройства, поэтому данная иерархия используется для временного хранения данных - например, сессионных ключей.

 

3. Модули TPM могут быть дискретными (размещенными на материнской плате в виде отдельного чипа), интегрированными (в чипсет, материнские платы), прошивочные (Intel Platform Trust Technology и AMD fTPM), виртуальные (vTPM) и программные (по сути, эмуляторы TPM только для экспериментов), при этом самыми надежными считаются дискретные TPM-чипы.

 

Рассмотрим далее примеры практического использования TPM-модулей на примере ОС Windows:


1. Технология Windows Hello позволяет использовать пару «закрытый/открытый ключ», при этом закрытый ключ хранится в TPM, а доступ к нему предоставляется только после прохождения биометрической аутентификации (по лицу, отпечатку пальцев) или после ввода ПИН-кода.


2. Технология BitLocker позволяет выполнять полнодисковое шифрование накопителя, при этом ключ для расшифрования BitLocker хранится в TPM, защищается ПИН-кодом (или биометрией), а доступ к нему предоставляется с помощью функционала «запечатывания» (англ. sealing): если PCR-регистры содержат информацию о корректной цепочке загрузки ОС на устройстве, то доступ к SRK для расшифрования BitLocker-ключа симметричного шифрования предоставляется. Таким образом предотвращается доступ к данным на жестком диске при попытке загрузки сторонней ОС с внешних накопителей, при изменении аппаратной конфигурации устройства, при попытке доступа к жесткому диску после установки его в другое устройство. При этом в системах на базе Linux технология шифрования накопителей (Linux Unified Key Setup, LUKS) также поддерживает использование TPM-чипов для управления ключами шифрования дисков.


3. Технология Measured Boot позволяет контролировать целостность и неизменность цепочки загрузки (прошивка UEFI/BIOS, загрузчик, ядро ОС, модули ядра ОС и драйверы устройств) за счет последовательной записи «измерений» (хэшей от загруженных компонент) в PCR-регистрах с последующей их сверкой с данными, записанными в Windows Boot Configuration Log.


4. Технология Health Attestation позволяет на основе данных Measured Boot провести удаленную аттестацию на серверах Microsoft Azure Attestation с использованием AK-ключей аттестации.


5. Технология Credential Guard позволяет изолировать процесс LSASS.exe, отвечающий за обработку учетных данных пользователей (NTLM-хэши, билеты Керберос) - он исполняется в защищенной области памяти (режим Virtual Secure Mode), ключ для доступа к которой защищен TPM-модулем с помощью функционала «запечатывания».

Защита персональных данных Практика ИБ Управление ИБ

Похожие статьи

Сценарии реагирования на инциденты в кибербезопасности. Часть 2: ранбуки, плейбуки, динамические сценарии
Сценарии реагирования на инциденты в кибербезопасности. Часть 2: ранбуки, плейбуки, динамические сценарии
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Что такое SQL-инъекция
Что такое SQL-инъекция
eBPF глазами хакера. Часть 3
eBPF глазами хакера. Часть 3
Фишинг – что это такое, как защититься от фишинговых атак и писем. Часть 1
Фишинг – что это такое, как защититься от фишинговых атак и писем. Часть 1
Bug Bounty: как превратить любопытство в заработок
Bug Bounty: как превратить любопытство в заработок
Deep Packet Inspection (DPI) - что это такое?
Deep Packet Inspection (DPI) - что это такое?
Авторизация
Авторизация
ARP-спуфинг (ARP spoofing, ARP poisoning): что это такое
ARP-спуфинг (ARP spoofing, ARP poisoning): что это такое
Методы поиска уязвимостей и виды сканеров
Методы поиска уязвимостей и виды сканеров
Сканер уязвимостей
Сканер уязвимостей

Похожие статьи

Сценарии реагирования на инциденты в кибербезопасности. Часть 2: ранбуки, плейбуки, динамические сценарии
Сценарии реагирования на инциденты в кибербезопасности. Часть 2: ранбуки, плейбуки, динамические сценарии
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Что такое SQL-инъекция
Что такое SQL-инъекция
eBPF глазами хакера. Часть 3
eBPF глазами хакера. Часть 3
Фишинг – что это такое, как защититься от фишинговых атак и писем. Часть 1
Фишинг – что это такое, как защититься от фишинговых атак и писем. Часть 1
Bug Bounty: как превратить любопытство в заработок
Bug Bounty: как превратить любопытство в заработок
Deep Packet Inspection (DPI) - что это такое?
Deep Packet Inspection (DPI) - что это такое?
Авторизация
Авторизация
ARP-спуфинг (ARP spoofing, ARP poisoning): что это такое
ARP-спуфинг (ARP spoofing, ARP poisoning): что это такое
Методы поиска уязвимостей и виды сканеров
Методы поиска уязвимостей и виды сканеров
Сканер уязвимостей
Сканер уязвимостей