Введение

Стандарт для безопасных криптопроцессоров

Trusted Platform Module (TPM) — это международный стандарт для защищенного криптопроцессора, специализированного микроконтроллера, предназначенного для обеспечения безопасности аппаратного обеспечения посредством встроенных криптографических ключей. Этот термин также может относиться к чипу, соответствующему стандарту ISO/IEC 11889. Типичные области применения — проверка целостности платформы (для подтверждения того, что процесс загрузки начинается с доверенной комбинации аппаратных и программных средств) и хранение ключей шифрования диска. Одним из системных требований Windows 11 является наличие реализации TPM 2.0. Microsoft утверждает, что это способствует повышению безопасности от атак на прошивку.

Целостность платформы

Основная задача TPM – обеспечение целостности платформы. В данном контексте "целостность" означает "работает в соответствии с заданным поведением", а "платформа" – любое компьютерное устройство, независимо от используемой операционной системы. Это необходимо для того, чтобы процесс загрузки начинался с доверенной комбинации аппаратного и программного обеспечения и продолжался до полной загрузки операционной системы и запуска приложений. При использовании TPM ответственность за обеспечение целостности лежит на прошивке и операционной системе. Например, единый расширяемый интерфейс прошивки (UEFI) может использовать TPM для создания корня доверия: TPM содержит несколько регистров конфигурации платформы (PCR), позволяющих безопасно хранить и сообщать о важных показателях безопасности. Эти показатели могут использоваться для обнаружения изменений в предыдущих конфигурациях и определения дальнейших действий. Примеры такого использования можно найти в Linux Unified Key Setup (LUKS), BitLocker и PrivateCore vCage для шифрования памяти. (См. ниже.) Другой пример обеспечения целостности платформы с помощью TPM – использование лицензирования Microsoft Office 365 и Outlook Exchange. Еще один пример применения TPM для обеспечения целостности платформы – технология Trusted Execution Technology (TXT), которая формирует цепочку доверия. Она позволяет удаленно удостовериться в том, что компьютер использует указанное аппаратное и программное обеспечение.

Шифрование диска

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

По организациям

Министерство обороны США (DoD) определяет, что "новые компьютерные активы (например, сервер, настольный компьютер, ноутбук, тонкий клиент, планшет, смартфон, персональный цифровой помощник, мобильный телефон), закупаемые для поддержки DoD, будут оснащены TPM версии 1.2 или выше, если это требуется руководствами по технической реализации мер безопасности (STIG) Агентства по защите информационных систем (DISA) и при наличии такой технологии". DoD ожидает, что TPM будет использоваться для идентификации устройств, аутентификации, шифрования и проверки целостности устройств.

Ноутбуки и ноутбуки

В 2006 году новые ноутбуки начали продаваться со встроенным чипом TPM. В будущем эта технология может быть интегрирована в существующий чип материнской платы в компьютерах или любом другом устройстве, где можно использовать функции TPM, например, в мобильном телефоне. На ПК для подключения к чипу TPM используется либо шина LPC (Low Pin Count), либо шина SPI (Serial Peripheral Interface). Trusted Computing Group (TCG) сертифицировала чипы TPM, произведенные компаниями Infineon Technologies, Nuvoton и STMicroelectronics, и присвоила идентификаторы производителей TPM компаниям Advanced Micro Devices, Atmel, Broadcom, IBM, Infineon, Intel, Lenovo, National Semiconductor, Nationz Technologies, Nuvoton, Qualcomm, Rockchip, Standard Microsystems Corporation, STMicroelectronics, Samsung, Sinosun, Texas Instruments и Winbond.

Реализация TPM 2.0

Существует пять различных типов реализации TPM 2.0 (перечисленных в порядке убывания уровня безопасности):
Дискретные TPM – это специализированные чипы, реализующие функциональность TPM в собственном защищенном от несанкционированного доступа полупроводниковом корпусе. Они обеспечивают наивысший уровень безопасности, сертифицированы по стандарту FIPS 140 с уровнем 3 физической защиты от атак по сравнению с программными реализациями, и их корпуса должны иметь встроенные средства защиты от вмешательства. Например, TPM для блока управления тормозами автомобиля защищен от взлома с помощью сложных методов. Интегрированные TPM являются частью другого чипа. Хотя они используют аппаратное обеспечение, устойчивое к программным ошибкам, они не обязаны иметь защиту от вмешательства. Intel интегрировала TPM в некоторые из своих чипсетов. Firmware TPM (fTPM) – это решения на основе прошивки (например, UEFI), работающие в доверенной среде исполнения процессора. Intel, AMD и Qualcomm реализовали Firmware TPM. Виртуальные TPM (vTPM) предоставляются гипервизорами и работают в изолированных средах исполнения, скрытых от программного обеспечения, работающего внутри виртуальных машин, для защиты кода от программного обеспечения в этих виртуальных машинах. Они могут обеспечивать уровень безопасности, сопоставимый с Firmware TPM. Google Cloud Platform внедрила vTPM. Программные TPM – это программные эмуляторы TPM, работающие без дополнительной защиты по сравнению с обычной программой в операционной системе. Они полностью зависят от среды, в которой они работают, и не обеспечивают более высокого уровня безопасности, чем предоставляется обычной средой исполнения. Они полезны для разработки.

Реализации с открытым исходным кодом

Официальная эталонная реализация спецификации TCG TPM 2.0 была разработана компанией Microsoft. Она лицензируется по лицензии BSD, а исходный код доступен на GitHub. В 2018 году Intel опубликовала свой программный стек Trusted Platform Module 2.0 (TPM2) с поддержкой Linux и Microsoft Windows. Исходный код размещен на GitHub и лицензируется по лицензии BSD. Компания Infineon финансировала разработку промежуточного программного обеспечения TPM с открытым исходным кодом, соответствующего спецификации Enhanced System API (ESAPI) программного стека (TSS) TCG. Разработка велась Институтом безопасных информационных технологий Фраунгофера (SIT). Программный TPM 2.0 от IBM является реализацией спецификации TCG TPM 2.0. Он основан на частях 3 и 4 спецификации TPM и исходном коде, предоставленном компанией Microsoft. Он содержит дополнительные файлы для полной реализации. Исходный код размещен на SourceForge и GitHub и лицензируется по лицензии BSD. В 2022 году AMD сообщила, что в определенных случаях их реализация fTPM вызывает проблемы с производительностью. Исправление доступно в виде обновления BIOS.

TPM 1.2 против TPM 2.0

Хотя TPM 2.0 решает многие из тех же задач и обладает схожими функциями, детали отличаются. TPM 2.0 не обеспечивает обратную совместимость с TPM 1.2. Спецификация TPM 1.2 TPM 2.0 Архитектура Полная спецификация должна состоять из профиля защиты, специфичного для платформы, ссылающегося на общую трехкомпонентную библиотеку TPM 1.2. Мобильные и автомобильные системы. Алгоритмы SHA 1 и RSA являются обязательными. AES является необязательным, но был удален из TPM 1.2 версии 103. Требуется функция генерации маски на основе хеша MGF1, определенная в PKCS#1. Определены и другие алгоритмы, но они необязательны. Следует отметить, что Triple DES был добавлен в библиотеку TPM 2.0, но с ограничениями, отклоняющими слабые ключи. Кроме того, эллиптическая криптография Direct Anonymous Attestation (ECDAA) с использованием кривых Barreto Naehrig ECC, которая была обязательной в более ранних версиях, стала необязательной в профиле PC Client версии 1.59. Генератор случайных чисел, криптографические алгоритмы с открытым ключом, криптографические хеш-функции, алгоритмы симметричного шифрования, генерация и проверка цифровой подписи, функции генерации маски и операции исключающего ИЛИ требуются спецификацией TCG PC Client Platform TPM Profile (PTP). Иерархия Один (хранилище) Три (платформа, хранилище и подтверждение) Корневые ключи Один (SRK RSA 2048) Множество ключей и алгоритмов для каждой иерархии Авторизация HMAC, PCR, локальность, физическое присутствие Пароль, HMAC и политика (охватывающая HMAC, PCR, локальность и физическое присутствие). NVRAM Неструктурированные данные Неструктурированные данные, счетчик, битовая карта, расширение, успешная и неудачная проверка PIN. Авторизация по политике TPM 2.0 включает HMAC, локальность, физическое присутствие и PCR, используемые в TPM 1.2. Она добавляет авторизацию на основе асимметричной цифровой подписи, опосредованность через другой секрет авторизации, счетчики и временные ограничения, значения NVRAM, конкретные команды или параметры команд, а также физическое присутствие. Она позволяет комбинировать эти примитивы авторизации с помощью логических операций И и ИЛИ для построения сложных политик авторизации.

Прием

Trusted Computing Group (TCG) столкнулась с сопротивлением внедрению этой технологии в некоторых областях, где отдельные авторы видят потенциальные области применения, не связанные напрямую с Trusted Computing, что может вызывать опасения по поводу конфиденциальности. Эти опасения включают злоупотребление удаленной аттестацией программного обеспечения, определяющей, какое программное обеспечение разрешено запускать, и возможные способы отслеживания действий пользователя, записываемых в базу данных, незаметно для самого пользователя. Утилита шифрования дисков TrueCrypt, а также ее производная VeraCrypt, не поддерживают TPM. Изначальные разработчики TrueCrypt полагали, что единственная цель TPM – "защита от атак, требующих от злоумышленника прав администратора или физического доступа к компьютеру". Злоумышленник, имеющий физический или административный доступ к компьютеру, может обойти TPM, например, установив аппаратный кейлоггер, сбросив TPM или захватив содержимое памяти для получения ключей, выданных TPM. В критических высказываниях даже утверждается, что TPM полностью избыточен. Издатель VeraCrypt воспроизвел первоначальное утверждение, изменив только "TrueCrypt" на "VeraCrypt". Автор прав в том, что после получения неограниченного физического доступа или прав администратора, обход других мер безопасности – лишь вопрос времени. Однако, предотвращение действий злоумышленника, обладающего административными привилегиями, никогда не входило в цели TPM (см. подробности), и TPM может предотвратить некоторые виды физического вмешательства.

Атаки

В 2010 году Кристофер Тарновский представил атаку на TPM на конференции Black Hat, где заявил о возможности извлечения секретов из одного TPM. Ему удалось это сделать после шести месяцев работы, путем внедрения зонда и перехвата данных внутренней шины компьютера Infineon SLE 66 CL. В 2015 году, в рамках публикаций Сноудена, стало известно, что в 2010 году группа сотрудников ЦРУ США на внутреннем совещании заявила о проведении дифференциального анализа мощности против TPM, позволившего извлечь секреты. В 2018 году был выявлен конструктивный недостаток в спецификации TPM 2.0 для статического корня доверия для измерений (SRTM). Он позволяет злоумышленнику сбросить и подделать регистры конфигурации платформы, предназначенные для безопасного хранения измерений программного обеспечения, используемых при загрузке компьютера. Для устранения этой уязвимости требуются аппаратные прошивки. Основные дистрибутивы Trusted Boot (tboot) до ноября 2017 года уязвимы к атаке на динамический корень доверия для измерений (DRTM), которая затрагивает компьютеры, работающие на технологии Intel Trusted eXecution Technology (TXT) в процессе загрузки. В 2021 году группа Dolos продемонстрировала атаку на дискретный TPM, в котором сам чип обладал определенной защитой от несанкционированного доступа, однако другие конечные точки его коммуникационной шины были уязвимы. Они перехватили ключ полного шифрования диска при передаче по материнской плате и использовали его для расшифровки SSD ноутбука.

Спор о генерировании слабых ключей в 2017 году

В октябре 2017 года стало известно, что кодовая библиотека, разработанная компанией Infineon и широко используемая в её TPM, содержит уязвимость, известную как ROCA, которая генерировала слабые пары ключей RSA, позволяя восстановить закрытые ключи по открытым. В результате все системы, полагающиеся на конфиденциальность таких слабых ключей, подвержены компрометации, включая кражу личных данных и подмену. Криптосистемы, хранящие ключи шифрования непосредственно в TPM без маскирования, могут быть особенно уязвимы к подобным атакам, поскольку пароли и другие факторы становятся бесполезными, если злоумышленникам удастся извлечь секреты шифрования. Infineon выпустила обновления прошивки для своих TPM, предназначенные для производителей, использовавших эти модули.

Доступность

В настоящее время TPM присутствует практически во всех ПК и ноутбуках, выпускаемых производителями.

Модернизация поля

Обновление в поле – это термин TCG для обновления прошивки TPM. Обновление может выполняться между TPM 1.2 и TPM 2.0, или между версиями прошивки. Некоторые производители ограничивают количество переходов между 1.2 и 2.0, а также могут ограничивать возврат к предыдущим версиям. Производители платформ, такие как HP, предоставляют инструменты для обновления. С 28 июля 2016 года все новые модели, линейки или серии устройств Microsoft (или обновление аппаратной конфигурации существующей модели, линейки или серии с существенным обновлением, например, процессора или графических карт) реализуют и по умолчанию включают TPM 2.0. В то время как компоненты TPM 1.2 представляют собой дискретные кремниевые чипы, обычно припаянные к материнской плате, TPM 2.0 доступен как дискретный (dTPM) кремниевый чип в одном полупроводниковом корпусе, как интегрированный компонент, включенный в один или несколько полупроводниковых корпусов вместе с другими логическими блоками в том же корпусе (корпусах), и как компонент на основе прошивки (fTPM), работающий в доверенной среде исполнения (TEE) на системе-на-чипе (SoC) общего назначения.

Виртуальный TPM

Google Compute Engine предлагает виртуализированные TPM (vTPM) как часть продукта Shielded VMs от Google Cloud. Библиотека libtpms предоставляет программную эмуляцию модуля доверенной платформы (TPM 1.2 и TPM 2.0). Она предназначена для интеграции функциональности TPM в гипервизоры, прежде всего в Qemu.

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

Windows 11 требует поддержки TPM 2.0 как минимального системного требования. На многих системах TPM отключен по умолчанию, что требует изменения настроек в UEFI компьютера для его включения. Windows 8 и более поздние версии поддерживают TPM 2.0. Для Windows 7 доступен официальный патч для добавления поддержки TPM 2.0. Windows Vista, Windows 10 поддерживают TPM 1.2. Модуль доверенной платформы 2.0 (TPM 2.0) поддерживается ядром Linux начиная с версии 3.20 (2012).

Платформы

Google включает TPM в Chromebook в качестве части своей модели безопасности. Oracle поставляет TPM в своих системах серий X и T, таких как серверы серий T3 или T4. Поддержка включена в Solaris 11. В 2006 году, с выпуском первых моделей Macintosh с процессорами Intel, Apple начала поставлять Mac с TPM. Apple никогда не предоставляла официальный драйвер, но существовала версия с открытым исходным кодом под лицензией GPL. Apple не поставляла компьютеры с TPM с 2006 года. В 2011 году тайваньский производитель MSI выпустил планшет Windpad 110W с процессором AMD и TPM Infineon Security Platform, который поставляется с управляющим программным обеспечением версии 3.7. Чип отключен по умолчанию, но его можно включить с помощью предустановленного программного обеспечения.

Виртуализация

Гипервизор VMware ESXi поддерживает TPM с версии 4.x, а начиная с версии 5.0 он включен по умолчанию. Гипервизор Xen поддерживает виртуализированные TPM. Каждая виртуальная машина получает свой уникальный, эмулированный программный TPM. KVM, в сочетании с QEMU, поддерживает виртуализированные TPM, и с 2012 года позволяет передавать физический чип TPM одной выделенной виртуальной машине. QEMU 2.11, выпущенная в декабре 2017 года, также предоставляет виртуальным машинам эмулированные TPM. VirtualBox поддерживает виртуальные устройства TPM версий 1.2 и 2.0, начиная с версии 7.0, выпущенной в октябре 2022 года.

Программное обеспечение

Операционные системы Microsoft Windows Vista и более поздние используют чип в сочетании со встроенным компонентом шифрования диска под названием BitLocker. Microsoft объявила, что с 1 января 2015 года все компьютеры должны быть оснащены модулем TPM 2.0 для прохождения сертификации оборудования Windows 8.1. Однако в декабре 2014 года, в ходе пересмотра Программы сертификации Windows, это требование было сделано необязательным. Тем не менее, TPM 2.0 требуется для систем с подключенным режимом ожидания. Виртуальные машины, работающие в Hyper-V, могут иметь собственный виртуальный модуль TPM, начиная с Windows 10 1511 и Windows Server 2016. Microsoft Windows включает две команды, связанные с TPM: , утилита для получения информации о TPM, и , инструмент командной строки, позволяющий создавать и удалять виртуальные смарт-карты TPM на компьютере.

Библиотеки программного обеспечения TPM

Для использования TPM пользователю необходима программная библиотека, которая взаимодействует с TPM и предоставляет более удобный API, чем прямое взаимодействие с TPM. В настоящее время существует несколько таких библиотек с открытым исходным кодом для TPM 2.0. Некоторые из них также поддерживают TPM 1.2, но в основном чипы TPM 1.2 устарели, и современная разработка сосредоточена на TPM 2.0. Обычно библиотека TPM предоставляет API с соответствием один к одному командам TPM. Спецификация TCG называет этот уровень API системы (SAPI). Таким образом, пользователь получает больше контроля над операциями TPM, однако сложность при этом высока. Чтобы упростить некоторые аспекты, большинство библиотек также предлагают более простые способы вызова сложных операций TPM. Спецификация TCG называет эти два уровня Enhanced System API (ESAPI) и Feature API (FAPI). В настоящее время существует только один стек, соответствующий спецификации TCG. Все остальные доступные библиотеки TPM с открытым исходным кодом используют свою собственную, более расширенную форму API. +Обзор существующих библиотек TPM с открытым исходным кодомTPM LibrariesAPITPM 2.0TPM 1.2Сервер или пример для аттестацииMicrosoftWindowsLinuxBare metaltpm2 tssSAPI, ESAPI и FAPIиз спецификации TCG✔✔✔Возможно**ibmtss1:1 соответствие командам TPM + расширенный API (легкий уровень поверх)✔✔✔go tpm1:1 соответствие командам TPM + расширенный API (легкий уровень поверх)✔✔✔wolfTPM1:1 соответствие командам TPM + расширенный API (обертки)✔✔✔✔TSS. MSR1:1 соответствие командам TPM + расширенный API (обертки)✔✔ (*) Существует отдельный проект под названием "CHARRA" от Fraunhofer, использующий библиотеку tpm2 tss для удаленной аттестации. Другие стеки поставляются с серверами аттестации или напрямую включают примеры для аттестации. IBM предлагает свой сервер удаленной аттестации с открытым исходным кодом "IBM ACS" на SourceForge, а Google предоставляет "Go Attestation" на GitHub, в то время как "wolfTPM" предлагает примеры временной и локальной аттестации непосредственно в своем открытом исходном коде, также на GitHub. (**) Существует техническое примечание о примере проекта для 32-битного SoC AURIX с использованием библиотеки tpm2 tss. (***) Требуются дополнительные библиотеки (dotnet) для работы в Linux. Эти библиотеки TPM иногда также называют стеками TPM, поскольку они предоставляют интерфейс для взаимодействия разработчика или пользователя с TPM. Как видно из таблицы, стеки TPM абстрагируют операционную систему и транспортный уровень, что позволяет пользователю переносить одно приложение между платформами. Например, используя API стека TPM, пользователь будет взаимодействовать с TPM одинаково, независимо от того, подключен ли физический чип через интерфейсы SPI, I2C или LPC к хост-системе.