где взять ключ восстановления доступа. Я же продолжу рассказ о модулях 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 указывает на доверенный статус загрузки. Теперь добавим шифрование.
где взять ключ восстановления доступа. Я же продолжу рассказ о модулях 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 указывает на доверенный статус загрузки. Теперь добавим шифрование.
Теги: CSS