- Что такое TPM и почему он мешает расшифровать диск
- Архитектура защиты
- Как устроена защита
- Загрузка
- Системный раздел зашифрован BitLocker
- Как взломать TPM BitLocker
- Пытаемся получить ключ шифрования из оперативной памяти
- Атака методом холодной загрузки
- Метод доступа через DMA
- Сниффер для TPM
- Страшный сон TPM
- Защита от взлома BitLocker
- Заключение
Модули TPM часто используются для шифрования дисков с помощью BitLocker даже без ведома пользователя. Система загружается и зашифрованный том разблокируется настолько прозрачно, что пользователь может и не подозревать, что накопитель в его устройстве зашифрован. Расшифровать такой диск можно лишь с использованием ключа восстановления или… или взломав чип TPM, в котором хранится ключ шифрования.
Еще по теме: Возможен ли взлом Bitlocker?
Статья основана на исследовании Андрея Малышева, руководителя европейского филиала «Элкомсофт».
Что такое TPM и почему он мешает расшифровать диск
Trusted Platform Module (TPM) — технология безопасности, представленная в виде дополнительного чипа, распаянного или установленного на материнской плате компьютера. Несмотря на то что официально устройства с TPM в Россию не поставляются, так как содержат несертифицированные средства шифрования, технология присутствует в большинстве ноутбуков. Чип TPM либо распаян на материнской плате (но не активирован в BIOS), либо, что случается гораздо чаще, присутствует в «виртуальном» виде благодаря использованию платформы Intel PTT (Intel Platform Trust Technology).
Для пользователя и операционной системы практической разницы между этими подходами нет, однако с точки зрения уязвимостей и их эксплуатации разница существует.
Если рассматривать модуль TPM в качестве аппаратного «довеска», то он состоит из криптографического процессора и встроенной памяти небольшого объема. При этом криптографический сопроцессор не используется для шифрования данных — как, например, это сделала Apple с чипом T2.
В рамках модели безопасности TPM основная функция чипа заключается в безопасном хранении и генерации криптографических ключей, а также аппаратном контроле за легитимностью их использования исключительно доверенными агентами. В типичной конфигурации в роли доверенного агента выступает операционная система Windows, причем не любая, а именно та, в которой был сгенерирован конкретный криптографический ключ.
Разумеется, как самой операционной системе, так и ее компонентам и приложениям доступны интерфейсы для работы с TPM и ключами шифрования — что тем не менее не означает полной бесконтрольности.
Почему одни диски, зашифрованные BitLocker, можно взломать методом перебора, в то время как другие, точно такие же, нельзя? Мешает то, что пароль в таких дисках не используется вовсе, — перебирать‑то, собственно, нечего. Ключ шифрования хранится в аппаратном модуле TPM, и именно этот модуль будет решать, выдать ключ по запросу, отказать в доступе или вовсе заблокировать чип, заставив расшифровывать контейнер другим способом. (В скобках замечу, что «другой способ» — это резервный ключ, так называемый ключ восстановления доступа, он всегда сохраняется при создании тома или на диске, или в облаке Microsoft, или в Active Directory. Зашифрованный этим ключом ключ шифрования диска также сохраняется в заголовке тома BitLocker.)
Если ты сталкивался с экраном наподобие того, который приводится ниже, ты поймешь, о чем идет речь.
Если хочешь — можешь почитать, где взять ключ восстановления доступа. Я же продолжу рассказ о модулях TPM.
Архитектура защиты
С точки зрения пользователя, защита, которую обеспечивает модуль TPM, не только совершенно прозрачна, но и абсолютно незаметна. Я много раз слышал о случаях, когда владелец устройства утверждал, что никакого шифрования нет, — при этом системный раздел был зашифрован BitLocker. И если порой в утверждениях пользователей можно было усомниться, то в остальных случаях их слова подозрений не вызывали. Как правило, речь идет о функции шифрования устройств BitLocker Device Encryption, описанной в статье «Общие сведения о функции шифровании устройств BitLocker в Windows 10». Если не вдаваться в детали, Windows (независимо от редакции — функция поддерживается даже в Windows 10 Home) автоматически зашифрует системный раздел в фоновом режиме при выполнении нескольких условий:
- В устройстве присутствует и активирован чип TPM или технология Intel PTT.
- Устройство поддерживает Modern Standby.
- Пользователь с правами администратора вошел в систему через учетную запись Microsoft Account или использовал для входа учетную запись домена.
- Система автоматически создаст ключ восстановления BitLocker и загрузит его в Microsoft Account пользователя или Active Directory.
В ранних сборках Windows дополнительно присутствовало требование, чтобы оперативная память была распаянной, а в качестве системного использовался твердотельный накопитель, однако в свежих версиях платформенной документации упоминаний этого я не нашел.
Итак, ты вошел в систему с правами администратора, использовав учетную запись Microsoft Account. Системный диск был зашифрован, но ты этого даже не заметил. Через какое‑то время ты перезагрузил систему. Изменилось ли что‑нибудь в процессе загрузки? С точки зрения пользователя — ровным счетом ничего: компьютер загрузился, Windows вывела запрос пароля. К этому моменту зашифрованный BitLocker диск уже разблокирован, но ты даже не прикасался к компьютеру. С какой стороны это называется защитой?
А вот с какой. При проектировании архитектуры защиты разработчики Windows использовали модель угроз, призванную предотвратить следующие события:
- Вход в операционную систему в обход стандартных механизмов аутентификации.
- Извлечение диска и его перенос на другой компьютер с целью последующей расшифровки.
- Снятие образа диска и его расшифровка.
- Загрузка компьютера с внешнего накопителя с целью расшифровки системного раздела.
- Изменение конфигурации загрузки с целью расшифровки системного раздела.
Таким образом, если тебе известен пароль входа в систему — ты не испытаешь никаких неудобств от того, что диск зашифрован. А вот если пароля у тебя нет, то тебе не удастся даже запустить перебор: база данных SAM хранится на зашифрованном диске, и доступа к ней у тебя не будет до тех пор, пока ты не справишься с шифрованием. Для параноиков доступны варианты усиленной защиты: например, на системный раздел можно дополнительно установить PIN-код, сохранить ключ на USB-накопителе или использовать сразу оба способа. В разделе, посвященном противодействию атакам, как раз и упоминается этот способ.
Как устроена защита
В BitLocker используется симметричное шифрование диска. По умолчанию — алгоритм AES с ключом длиной 128 бит. В свежих сборках Windows 10 применяется режим XTS; более старые версии ОС и первый релиз Windows 10 используют режим CBC.
Как именно выполняется шифрование: средствами центрального процессора (с использованием команд AES-NI) или контроллера диска, — вопрос сложный. До недавнего времени Windows отдавала предпочтение механизмам шифрования, встроенным в контроллер диска или SSD, однако обнаруженная исследователями в целом ряде моделей уязвимость в реализации подобных механизмов заставила Microsoft отказаться от этой практики и реализовать шифрование силами центрального процессора. Впрочем, это касается только вновь создаваемых томов; уже зашифрованные диски будут продолжать использовать тот механизм, который был использован при их создании.
С нашей точки зрения, оба механизма эквивалентны. Для расшифровки диска в любом случае потребуется мастер‑ключ, который можно получить одним из нескольких способов:
- Расшифровать паролем, если раздел зашифрован именно таким образом.
- Расшифровать ключом восстановления (Recovery Key).
- Извлечь непосредственно из модуля TPM.
О парольных атаках я писал уже достаточно; извлечение ключа восстановления — интересная тема, заслуживающая отдельной статьи. Сейчас нас интересует исключительно третий вариант — извлечение ключа из модуля TPM.
Загрузка
Модуль TPM или технология Intel PTT используется в том числе для аппаратного контроля «доверенной загрузки» (Trusted boot). Цель «доверенной загрузки» — убедиться, что загружена именно та операционная система и именно в той конфигурации, которая использовалась при создании ключей. Для этого используется технология, напоминающая блокчейн. Строится своеобразная «цепочка доверия» — последовательность блоков с информацией об этапах загрузки, выстроенная в хронологическом порядке. Так же как и в блокчейне, информацию в цепочке нельзя изменить — только добавить. «Цепочка доверия» сохраняется в регистрах PCR (Platform Configuration Register).
Для начала рассмотрим работу механизма «доверенной загрузки» и роль модуля TPM без шифрования. Во время загрузки происходят следующие операции.
- При включении компьютера управление получает первый доверенный модуль SRTM (Static root of trust for measures), который находится в области ROM, защищенной от записи. Важный момент: SRTM по определению статичен и защищен от изменений. Уязвимость в этом модуле может поставить под угрозу всю систему безопасности, как это произошло в случае с найденной в загрузчиках Apple уязвимостью checkm8. Подробно об SRTM и другой технологии — DRTM можно узнать из ответа на Stack Exchange «How does the TPM perform integrity measurements on a system?».
- SRTM делает первую запись в цепочке: в регистр PCR0 записывается контрольная сумма программного кода BIOS. Если в системе прописался руткит, цепочка доверенной загрузки будет прервана (см. «Как система Windows Defender System Guard защищает Windows 10 от руткитов»).
- Теперь управление получает доверенный UEFI BIOS, который формирует дальнейшие компоненты цепочки. При этом анализируется множество параметров: таблицы MBR, загрузчика bootloader и других. В цепочку добавляется очередная контрольная сумма, в создании которой используется информация из предыдущего регистра PCR. Нарушение любого из компонентов приводит к изменению содержимого регистров PCR и прерыванию доверенной загрузки.
- Управление передается загрузчику (bootloader), который считывает и запускает код из MBR диска. При этом в цепочку загрузки добавляется еще несколько записей.
- Запускается ядро операционной системы, которое добавляет очередные элементы в цепочку.
- Загружается операционная система. В результате на выходе — набор данных в регистрах PCR, однозначно описывающий весь процесс загрузки. От модификации содержимое регистров PCR защищается на аппаратном уровне модулем TPM.
Отлично, система загрузилась, содержимое регистров PCR указывает на доверенный статус загрузки. Теперь добавим шифрование.
Системный раздел зашифрован BitLocker
В предыдущем сценарии системный раздел не был зашифрован. Теперь представим, что используется система с шифрованием.
Когда пользователь включает шифрование загрузочного раздела (или же Windows самостоятельно шифрует загрузочный диск при помощи BitLocker Device Encryption в автоматическом режиме), случайным образом генерируется мастер‑ключ. Кроме того, создается и ключ восстановления (также случайный набор данных). Мастер‑ключ сохраняется в модуле TPM, а его копия шифруется ключом восстановления и в зашифрованном виде записывается в заголовок диска. Ключ восстановления при этом обязательно сохраняется (если в политиках безопасности конкретной системы не указано иное). Если речь идет об автоматическом шифровании BitLocker Device Encryption, то ключ попадает в Microsoft Account того пользователя с привилегиями администратора, который первым зашел в систему с учетной записью Microsoft (а не локальной учетной записью Windows), либо в Active Directory. При шифровании, которое инициируется самим пользователем, ключ восстановления можно сохранить на диск или распечатать.
Итак, диск зашифрован, компьютер перезагружен. При этом:
- Модуль TPM обнуляет содержимое всех регистров PCR.
- Выполняются пункты 1–5 доверенной загрузки системы вплоть до загрузки ядра. Загрузка ядра ОС возможна потому, что ядро системы хранится на отдельном небольшом разделе, который не будет зашифрован BitLocker, а вот файлы подкачки, гибернации и база данных SAM — уже на основном зашифрованном разделе.
- Ядро системы пытается продолжить загрузку. Для этого необходимо смонтировать зашифрованный раздел, что, в свою очередь, требует ключа для его расшифровки. Ключ хранится в TPM; ядро системы запрашивает его из модуля.
- Получив запрос, модуль TPM анализирует содержимое регистров PCR, чтобы проверить цепочку загрузки. Если все в порядке, то модуль TPM выдаст системе ключ шифрования, ядро смонтирует системный раздел и загрузка продолжится. Обрати внимание: к моменту, когда пользователь видит запрос на ввод пароля от учетной записи Windows, зашифрованный BitLocker раздел уже смонтирован.
- Если чип обнаруживает, что цепочка доверия повреждена, ключ не выдается. Пользователь при этом видит следующее сообщение.
Модуль TPM может отказаться выдавать ключ при изменении любого компонента системы, участвующего в создании цепочки доверенной загрузки. Например, обновление UEFI BIOS, изменение в MBR или загрузчике системы приведет к такому результату — о чем регулярно появляются сообщения на форумах. Особенно неприятным нарушение доверенной цепочки оказывается для тех пользователей, которые и не подозревали, что их загрузочный диск зашифрован.
В то же время требование ввести ключ восстановления встречается далеко не так часто, насколько могло бы с учетом частоты обновлений Windows. Почему? Дело в том, что при обновлении компонентов, участвующих в создании цепочки доверия, система временно отключает BitLocker на системном разделе. При этом мастер‑ключ расшифровывается и записывается в заголовок диска в открытом виде, что позволяет ядру системы смонтировать зашифрованный раздел, не отправляя запрос в TPM. После того как соответствующие компоненты будут обновлены, Windows вновь запишет ключ в модуль TPM, сохранив актуальное состояние доверенной загрузки.
Аналогичным образом должно выполняться и обновление сторонних компонентов — например, версии UEFI BIOS и прошивок для некоторых компонентов аппаратного обеспечения (таких как встроенные датчики отпечатков пальцев). При обновлении этих компонентов пользователь, как правило, получает сообщение, что необходимо приостановить работу BitLocker. Это можно проделать как в интерактивном режиме из панели управления (System and Security → BitLocker Drive Encryption → Suspend protection), так и из командной строки (manage-bde -pause) или PowerShell (Suspend-BitLocker). Как правило, соответствующая утилита установки делает это в автоматическом режиме.
Как взломать TPM BitLocker
Предположим, что в твоих руках компьютер (чаще всего — ноутбук), системный раздел которого зашифрован, а пароль для входа в учетную запись неизвестен или, в терминах пользователей, которые чаще всего обращаются с такой проблемой, — «не подходит». Цель — получить доступ к данным, среди которых, конечно же, много ценных уникальных файлов, и, разумеется, нет ни единой резервной копии (иначе они не были бы уникальными, ведь так?).
Несмотря на то что системный раздел зашифрован, первый шаг — это снять образ диска. Для этого, скорее всего, придется загрузиться с флешки — вариантов здесь множество от различных версий Linux до утилит «все в одном» наподобие Elcomsoft System Recovery.
Далее проанализируй заголовок тома BitLocker и попытайся узнать, какие именно протекторы могут быть использованы, чтобы смонтировать диск. Проще всего это сделать в Elcomsoft System Recovery, которая выведет список доступных для конкретного тома протекторов.
Чаще всего в число протекторов входят TPM или пароль. Гораздо реже встречаются комбинации TPM + PIN или TPM + USB. Практически всегда в списке протекторов присутствует ключ восстановления (Recovery Key). Вот полный список возможных комбинаций протекторов:
- Recovery Key, ключ восстановления. Присутствует практически всегда. Позволяет разблокировать том вводом длинного ключа восстановления (генерируется в момент создания тома);
- TPM. «Вы находитесь здесь». Ключ, который хранится в модуле TPM;
- Пароль. Чаще всего используется для шифрования внешних накопителей и несистемных разделов. На загрузочных дисках встречается крайне редко;
- USB. Своеобразный «колхоз», позволяющий включить защиту BitLocker на загрузочном диске, если в компьютере нет ни модуля TPM, ни поддержки Intel PTT. Для активации нужно редактировать политики Windows, поэтому относится к разряду экзотических;
- TPM + PIN, TPM + USB, TPM + PIN + USB. Данные комбинации потребуют наличия всех перечисленных протекторов. Встречаются крайне редко. Комбинация TPM + PIN рекомендуется в документации от Microsoft в качестве защиты от некоторых типов атак.
Пытаемся получить ключ шифрования из оперативной памяти
Самый простой способ получить доступ к зашифрованному разделу, работающий независимо от установленных протекторов, — извлечь ключ шифрования непосредственно из оперативной памяти компьютера. Это самый известный тип атаки, от которого очень тяжело защититься. Впрочем, даже компания Microsoft признает, что полностью защитить содержимое зашифрованного диска от злоумышленника, который может покопаться во внутренностях компьютера, тяжело или даже невозможно.
В оперативную память компьютера ключ шифрования попадает на последнем этапе доверенной загрузки — тогда, когда ядро системы начинает загружать ОС. Отследить этот момент просто: появится окно логина в систему, где запрашивается пароль.
Microsoft активно продвигает авторизацию без пароля — простым PIN-кодом, состоящим, как правило, из четырех цифр. Всего четыре цифры? Возможно, у тебя возникнет соблазн попытаться подобрать PIN-код. В статье «Почему ПИН‑код лучше пароля» подробно объясняется, почему не следует этого делать.
Исключительная ситуация — использование дополнительного протектора (например, комбинации TPM + PIN). В этом случае модуль TPM не выдаст ключ до тех пор, пока не будет введен правильный PIN. Пытаться подобрать его — плохая идея (см. врезку).
Разумеется, если пароль (или PIN) от учетной записи известен, то расшифровка тома тривиальна: достаточно создать образ оперативной памяти и запустить поиск ключей шифрования (такая возможность есть, например, в портативной версии Elcomsoft Forensic Disk Decryptor). Нас же интересует вариант, когда пароль от учетной записи неизвестен.
Атака методом холодной загрузки
Метод основан на том, что содержимое оперативной памяти компьютера обнуляется не мгновенно, а лишь спустя время после отключения питания. Если же модули оперативной памяти охладить до отрицательной температуры, то время удержания становится вполне достаточным для того, чтобы успеть переставить модули в тестовый стенд, после чего сразу же начать загрузку в Linux с расширением ядра LiME.
Последовательность действий здесь такая:
- Получаем доступ к модулям оперативной памяти. Если они распаяны, метод не сработает.
- Включаем исследуемый компьютер, дожидаемся окна запроса пароля.
- Замораживаем модули оперативной памяти.
- Отключаем питание (ни в коем случае не пользуемся функцией shutdown!).
- Быстро переносим модули в тестовый стенд.
- Сразу же загружаемся с флешки, извлекаем дамп памяти.
- Пытаемся обнаружить ключи шифрования.
Метод сложный и рискованный; используют его редко даже в оборудованных лабораториях.
- Достоинства метода: высокая эффективность, сложно защититься.
- Недостатки: чрезвычайно сложный и трудоемкий, высок риск повредить оборудование.
Метод доступа через DMA
Если компьютер оборудован интерфейсом FireWire, Thunderbolt 3 или PC Card и при этом работает под управлением старой версии Windows, то можно попытаться получить доступ к содержимому оперативной памяти через них. Атака основана на том факте, что перечисленные выше интерфейсы имеют прямой доступ к шине PCI, которая, в свою очередь, имеет прямой доступ к памяти компьютера (Direct Memory Access, DMA).
Собственно образ памяти создается утилитой Inception для Linux.
К сожалению, метод сильно устарел: он работал для компьютеров под управлением Windows 7 и 8. Уже в Windows 8.1 прямой доступ к памяти был закрыт, если система находится в режиме сна или экран устройства заблокирован (показывается окно запроса пароля на вход в систему). Если же тебе повезло и дамп памяти создать получилось, исследовать его можно в Elcomsoft Forensic Disk Decryptor в полностью автоматическом режиме.
- Достоинства метода: просто использовать.
- Недостатки: эксплоит давно закрыт, работает только для старых систем, требует наличия портов FireWire, Thunderbolt 3 или PC Card.
Сниффер для TPM
Еще одна уязвимость TPM кроется в самой архитектуре модулей. Пожалуй, именно этот метод представляет наибольший интерес по совокупности факторов. С одной стороны, он не требует охлаждать модули оперативной памяти и работает на всех современных системах, в которых используется TPM; с другой — для его использования нужно специальное оборудование и опыт работы паяльником, а для систем, в которых вместо модуля TPM используется эмулятор Intel PTT, он не сработает вовсе.
Общение аппаратного модуля TPM с остальными компонентами компьютера организовано через шину данных LPC (Low Pin Count) или интерфейс SPI (Serial Peripheral Interface).
Оба варианта используются для передачи данных от устройств, работающих с низкой скоростью. Шина LPI работает на частоте 33 МГц, а данные передаются в открытом виде без какого‑либо шифрования. Соответственно, существует возможность перехватить передаваемый мастер‑ключ атакой man in the middle. Для этого достаточно подключиться к шине LPC (или интерфейсу SPI) и использовать логический анализатор.
Денис Андзакович (Denis Andzakovic) продемонстрировал, как работает этот способ, в статье Extracting BitLocker Keys from a TPM.
Способы несколько отличаются для TPM 1.2 и TPM 2.0. В первом случае Денис использовал логический анализатор DSLogic Plus с интерфейсом USB. Несмотря на то что атака оказалась успешной, автору пришлось преодолевать слишком много препятствий, решая проблемы с синхронизацией и декодером.
Сегодня встретить TPM версии 1.2 уже тяжело; в большинстве устройств, в которых доступен этот модуль, используется версия 2.0. Для нее решение оказалось еще проще: Денис использовал FPGA-модуль с интерфейсом USB Lattice ICEStick, в который была залита специализированная прошивка для сниффинга TPM-модулей.
Подключение делается к ножкам GND, LCLK, LFRAME#, LRESET# и LAD[0:3]. Для устройства Surface 3, которое анализировал Денис (кстати, оперативная память в нем распаяна именно с целью противодействия атакам методом холодной загрузки) пришлось воспользоваться паяльником, но для десктопных версий чипа достаточно будет просто подключиться к разъему.
В итоге система выглядела таким образом.
Далее Денис выполняет команду
1 |
$ sudo python3 parse/read_serial.py /dev/ttyUSB1 | tee log1 |
и загружает устройство. Вот так это выглядит на экране.
Данные из FPGA структурированы следующим образом:
1 |
b'[32 bit address][8 bit data][read (00) or write (02)]' |
Для извлечения мастер‑ключа тома использовалась следующая команда:
1 2 |
$ cut -f 2 -d' log1 | grep '24..00$' > | perl -pe 's/.{8}(..)..\n/$1/' | grep -Po "2c0000000100000003200000(..){32}" 2c00000001000000032000009a126146b5b285c93f7c4bcd372f91d0181fe7eddc44e588459ebdb244d97baa |
Мастер‑ключ успешно извлечен:
1 |
9a126146b5b285c93f7c4bcd372f91d0181fe7eddc44e588459ebdb244d97baa |
Далее Денис монтирует том при помощи утилиты dislocker, которая предназначена для работы с зашифрованными BitLocker томами в Linux.
Интересно то, что модули TPM 2.0 поддерживают шифрованный обмен трафиком, — в теории это способно предотвратить подобные атаки. Тем не менее Windows не использует этот режим, и уязвимость, таким образом, до сих пор не закрыта.
- Достоинства метода: срабатывает всегда, если используется аппаратный модуль TPM и нет предварительного протектора (например, TPM + PIN).
- Недостатки: довольно высокая трудоемкость, требуется дополнительное оборудование, легко предотвратить, установив дополнительный PIN на загрузку.
Страшный сон TPM
Следующая уязвимость была обнаружена относительно недавно. В 2018 году корейские исследователи Сын Хун Хан (Seunghun Han), Вук Шин (Wook Shin), Чун Хёк Парк (Jun-Hyeok Park) и Хён Чун Ким (HyoungChun Kim) из National Security Research Institute представили на конференции Usenix научную работу под названием «Страшный сон».
Исследователи установили, что при уходе компьютера в спящий режим модуль TPM сохраняет регистры в NVRAM, а при выходе их восстанавливает. Оказалось, что в некоторых моделях модулей TPM есть возможность подменить содержимое PCR регистров и получить доступ к внутреннему журналу TPM, что позволяет узнать всю «цепочку доверия» в момент штатной загрузки системы. Исследователи уведомили об уязвимости производителей материнских плат, включая Intel, Lenovo, Gigabyte, Dell и HP, которые выпустили обновления BIOS, закрывшие уязвимость. Тем не менее многие компьютеры до сих пор работают со старыми версиями BIOS, что позволяет воспользоваться уязвимостью.
Исследователи выпустили две утилиты, первая из которых позволяет проверить, есть ли в модуле TPM уязвимость, а вторая — использовать уязвимость, если она обнаружится.
Проверка наличия уязвимости: Napper for TPM.
Эксплуатация уязвимости: Bitleaker.
Для проверки наличия уязвимости нужно скачать образ Live CD со страницы https://github.com/kkamagui/napper-for-tpm/releases, записать его на USB-накопитель, перезагрузить компьютер, отключив предварительно Secure Boot в BIOS, и выбрать Napper из меню.
После загрузки нужно запустить Napper, кликнув соответствующую иконку. Подробные инструкции приводятся на этой странице.
Если уязвимость обнаружена, выводится соответствующее сообщение.
К сожалению, на моем компьютере довести эксперимент до конца не удалось: вместо модуля TPM у меня используется эмулятор Intel PTT, который неуязвим для этого типа атаки. Если же уязвимость обнаружена, то следующий шаг — запуск утилиты Bitleaker.
Защита от взлома BitLocker
В статье «Меры защиты для BitLocker» подробно описаны способы, которыми Microsoft противодействует описанным атакам. (Поскольку Microsoft использует автоматический перевод на русский весьма низкого качества, рекомендую ознакомиться со статьей на языке оригинала.)
От прямого доступа к памяти через FireWire/Thunderbolt спасает механизм защиты портов DMA, появившийся в Windows 10 версии 1803 (апрель 2018-го). Начиная с этой версии Windows в новых устройствах на базе процессора Intel по умолчанию активирована защита ядра от атак DMA через порты Thunderbolt 3. Впрочем, отмечу, что защита доступна лишь для относительно свежих компьютеров, так как ее активация потребовала изменить встроенный микрокод и/или BIOS. К примеру, на моем не самом старом компьютере, собранном на базе Intel Core i7 9-го поколения меньше года назад, включить эту защиту не удалось.
Проверить, защищен ли твой компьютер, можно встроенной в Windows утилитой MSINFO32.<wbr />EXE.
От атак методом получения мастер‑ключа из памяти компьютера Microsoft рекомендует защищаться установкой дополнительного предварительного протектора — PIN-кода, который чип TPM будет требовать для продолжения загрузки. Этим же способом компания рекомендует защищаться и от сниффинга модулей TPM: от того, что тебе удастся подсмотреть данные, не изменится ровным счетом ничего, если тебе неизвестен PIN-код. Попытка же подобрать PIN-код быстро введет модуль TPM в режим паники, в котором он либо откажется сотрудничать вовсе, либо сделает вид, что все в порядке, но ключ шифрования не выдаст, даже если введенный PIN-код окажется правильным. А вот от атаки методом «холодной загрузки», если в руки злоумышленника попал включенный компьютер с уже разблокированным диском с BitLocker, внятной защиты не предложено: разработчики меланхолично отмечают, что «способ не защищает от физических атак, когда злоумышленник получает физический доступ к компонентам компьютера, вскрыв корпус устройства».
От атаки под названием «страшный сон» ее разработчики советуют защищаться одним из трех способов: установить PIN-код на загрузку (совпадает с рекомендацией Microsoft), обновить BIOS или отключить режим сна в настройках BIOS.
Заключение
Как модуль TPM, так и технология Intel PTT предоставляют высокий уровень защиты, способный существенно осложнить жизнь злоумышленнику и затруднить работу полицейского эксперта. Даже в конфигурации по умолчанию BitLocker в сочетании с TPM/PTT обеспечивает высокий уровень безопасности, а дополнительные настройки, описанные в разделе «Противодействие атакам», позволят надежно заблокировать доступ к зашифрованному разделу даже от самых квалифицированных специалистов.
В то же время, как это ни парадоксально, аппаратный модуль может оказаться менее безопасным, чем программная эмуляция: в модулях TPM существуют уязвимости как минимум двух типов, а реализация на базе Intel PTT их лишена. Если на твоей материнской плате есть разъем для установки модуля TPM — подумай, стоит ли это делать и не лучше ли воспользоваться функциональностью Intel PTT, если он доступен в BIOS.
Еще по теме: Как не стоит прятать конфиденциальную информацию
У ребенка Microsoft Surface Pro 6. Шифрование никто не включал, в учетную запись Microsoft не заходил. Система перестала загружаться дальше экрана запроса на ключа восстановления Bitlocker. По запросу выдается тип защиты TPM. Я правильно понял, что статья как раз про этот случай: ключа шифрования диска не существует, а ключ TPM не успевает загрузиться в оперативную память, и мы обречены остаться без данных?
Если шифрование включилось само, то система должна была где-то сохранить ключ восстановления. Скорее всего, он находится в аккаунте Майкрософт. Погуглите «recoverykey». Может, что-то найдёте.