Введение
Стандарт для безопасных криптопроцессоров
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, работающие без дополнительной защиты по сравнению с обычной программой в операционной системе. Они полностью зависят от среды, в которой они работают, и не обеспечивают более высокого уровня безопасности, чем предоставляется обычной средой исполнения. Они полезны для разработки.
Discrete TPMs are dedicated chips that implement TPM functionality in their own tamper resistant semiconductor package. They are the most secure, certified to FIPS 140 with level 3 physical security resistance to attack versus routines implemented in software, and their packages are required to implement some tamper resistance. For example, the TPM for the brake controller in a car is protected from hacking by sophisticated methods. Integrated TPMs are part of another chip. While they use hardware that resists software bugs, they are not required to implement tamper resistance. Intel has integrated TPMs in some of its chipsets. Firmware TPMs (fTPMs) are firmware based (e. g. UEFI) solutions that run in a CPU's trusted execution environment. Intel, AMD and Qualcomm have implemented firmware TPMs. Virtual TPMs (vTPMs) are provided by and rely on hypervisors in isolated execution environments that are hidden from the software running inside virtual machines to secure their code from the software in the virtual machines. They can provide a security level comparable to a firmware TPM. Google Cloud Platform has implemented vTPM. Software TPMs are software emulators of TPMs that run with no more protection than a regular program gets within an operating system. They depend entirely on the environment that they run in, so they provide no more security than what can be provided by the normal execution environment. They are useful for development purposes.
Реализации с открытым исходным кодом
Официальная эталонная реализация спецификации 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, конкретные команды или параметры команд, а также физическое присутствие. Она позволяет комбинировать эти примитивы авторизации с помощью логических операций И и ИЛИ для построения сложных политик авторизации.
The TPM 2.0 policy authorization includes the 1.2 HMAC, locality, physical presence, and PCR. It adds authorization based on an asymmetric digital signature, indirection to another authorization secret, counters and time limits, NVRAM values, a particular command or command parameters, and physical presence. It permits the ANDing and ORing of these authorization primitives to construct complex authorization policies.
Прием
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 к хост-системе.
(*) There is a separate project called "CHARRA" by Fraunhofer that uses the tpm2 tss library for Remote Attestation. The other stacks have accompanying attestation servers or directly include examples for attestation. IBM offer their open source Remote Attestation Server called "IBM ACS" on SourceForge and Google have "Go Attestation" available on GitHub, while "wolfTPM" offers time and local attestation examples directly in its open source code, also on GitHub. (**) There is an application note about an example project for the AURIX 32 bit SoC using the tpm2 tss library. (***) Requires additional libraries (dotnet) to run on Linux. These TPM libraries are sometimes also called TPM stacks, because they provide the interface for the developer or user to interact with the TPM. As seen from the table, the TPM stacks abstract the operating system and transport layer, so the user could migrate one application between platforms. For example, by using TPM stack API the user would interact the same way with a TPM, regardless if the physical chip is connected over SPI, I2C or LPC interface to the Host system.