From: kmeaw
Date: 2023-05-03 12:53:14Z
Только не "модуль безопасности TPM", а fTPM - его программную эмуляцию.
У современных процессоров от Intel и AMD есть сервисные ядра, на которых
работает высокопривилегированный код. Он загружается с той же
микросхемы, что и прошивка (BIOS) для обычных ядер, но ни у этой
прошивки, ни у ОС нет возможности контролировать выполнение этого кода -
для общения с ними предусмотрен довольно узкий интерфейс. Можно
воспринимать программно-аппаратный комплекс из сервисных ядер и кода,
как BMC, только степень интеграции ещё более тесная.
Конечно же, компании-производители достаточно быстро стали добавлять
"безопасность" в свои продукты, не честно реализуя новые фичи аппаратно,
а заменяя их на программные аналоги, как модули внутри этого кода. То
есть у основных ядер есть интерфейсы, которые никому трогать нельзя, а
коду, работающем на сервисных ядрах - можно. Достаточно добавить
в железо уникальный для экземпляра ключ, потребовать подписи (хотя бы
части) прошивки ключом производителя, а всё остальное можно дописать
потом модулями, не обновляя аппаратную часть.
У fTPM есть преимущество над дискретным TPM-модулем (dTPM) - последний
подключается к системе через медленную шины - SPI, I²C или (что чаще
всего происходит на настольных ПК) LPC; все они достаточно медленные,
чтобы можно было перехватывать или даже активно вмешиваться в трафик.
fTPM же исполняется внутри кристалла процессора, и "подлезть" туда уже
значительно сложнее. Ещё fTPM дешевле для потребителя.
Из недостатков - поскольку это всего лишь ещё один модуль внутри
сложного программного продукта, ошибка в соседнем модуле может
скомпрометировать всю "безопасность".
Исследование, на которое ссылается статья, описывает атаку, требующую
физического доступа к машине, чтобы сделать voltage glitch. Интересно,
что при использовании схемы TPM+пароль, Microsoft BitLocker обеспечивает
лучшую безопасность, чем systemd-cryptenroll - если злоумышленник
применит описанный в исследовании способ, то он получит полное состояние
TPM, и сможет извлечь оттуда секреты. systemd-cryptenroll полагается на
то, что TPM проверит пароль и защитит себя от его перебора с помощью
lockout mechanism, а BitLocker дополнительно шифрует ключ паролем.