Расшифровка BitLocker: извлечение ключа из чипа TPM

Расшифровка BitLocker: извлечение ключа из чипа TPM
Подключение сниффера к модулю TPM по шине LPC

Полнодисковое шифрование BitLocker в ОС Windows считается довольно надёжным способом сохранения данных. По умолчанию оно использует алгоритм Advanced Encryption Standard (AES) в режиме сцепления блоков (CBC) или в режиме подстроенной кодовой книги с кражей шифротекста (XTS) на базе xor-encrypt-xor (XEX) со 128- или 256-битным ключом.

В теории это довольно крепкая схема. Проблема только в том, что секретный ключ BitLocker хранится в Trusted Platform Module (TPM), а в некоторых случаях (на некоторых компьютерах) его можно извлечь, получив физический доступ к устройству.

BitLocker

Полнодисковое шифрование в Windows 10 можно включить в меню «Панель управления» → «Система и безопасность» → «Шифрование диска BitLocker».

TPM (англ. Trusted Platform Module) — спецификация, описывающая криптографический процессор, в котором хранятся криптографические ключи для защиты информации. Как видно на скриншоте, BitLocker имеет возможность работать и без совместимого криптопроцессора. В этом случае ключи хранятся в другом месте.

Если вкратце, BitLocker шифрует данные с помощью ключа шифрования полного тома (FVEK). В свою очередь, этот ключ шифруется с помощью мастер-ключа тома (VMK).

Ключ VMK шифруется несколькими «протекторами». В конфигурации по умолчанию их два. Один — TPM, другой — ключ восстановления:

Всё это сделано для того, чтобы злоумышленник, имея физический доступ к устройству, не смог загрузить на ноутбуке Linux (или извлечь диск) и получить доступ к данным.


Шифрование в режиме сцепления блоков (CBC)

BitLocker в конфигурации по умолчанию не требует дополнительного вмешательства пользователя. Это связано с тем, что TPM используется только для расшифровки VMK. Любые изменения в BIOS или коде загрузчика изменят регистры конфигурации (PCR), и TPM не откроет VMK.


Шифрование в режиме xor-encrypt-xor (XEX)

Поскольку расшифровка данных происходит автоматически, то достаточно перехватить VMK из TPM, ввести его в любую библиотеку BitLocker — и расшифровать диск.

Извлечение ключа

Ключи из TPM можно извлечь с помощью недорогого модуля FPGA или логического анализатора. Первым этот способ в 2019 году продемонстрировал хакер Денис Андзакович (Denis Andzakovic) из компании Pulse Security. Он опубликовал proof-of concept и исходный код сниффера.

Сниффер подключается к шине LPC, откуда получает мастер-ключ для шифрования тома. Этим ключом можно расшифровать диск. В демонстрации 2019 года использовались ноутбук HP с чипом TPM 1.2 и планшет Surface Pro 3 с чипом TPM 2.0, что указывает на уязвимость обеих версий TPM. Для атаки автор применил логический анализатор DSLogic Plus 16 (стоимость около $150).

На материнской плате HP установлена микросхема Infineon SLB96350. Она выполняет роль криптопроцессора и подключена по шине LPC:

К этой шине и подключается сниффер:

Поскольку LPC работает на частоте 33 МГц, инженер выставил частоту сбора данных на 100 МГц:

После декодирования пакетов по шине LPC остаётся лишь найти ключ VMK в дампе записанного трафика. Его можно найти по заголовку 0x2c 0x00 0x00 0x00.

Через несколько байт после заголовка начинается тело ключа.

Для прослушивания ключа Surface Pro 3 специалист использовал девкит Lattice ICEStick, который продаётся по цене около $49.

В 2021 году эксперимент Дениса со сниффингом ключа Bitlocker воспроизвели специалисты из компании SCRT Information Security на ноутбуке Lenovo ThinkPad L440 с криптопроцессором ST Microelectronics P24JPVSP (эквивалент чипа ST33TPM12LPC).

В данном случае использовалось аналогичное FPGA-устройство iCEstick40 от Lattice Semiconductor и программный сниффер с некоторыми модификациями для прослушивания именно TPM.

Найдя в дампе вышеупомянутый заголовок ключа, затем он извлекается целиком с помощью команды grep и записи 32-ти последующих hex-значений:

$ cut -f 2 -d\' log6 | grep '24..00$' | perl -pe 's/.{8}(..)..\n/\/' | grep -Po "2c0000000100000003200000(..){32}"
2c00000001000000032000005af9490916013a0bc177b3301d41508c4af8abb8583de5e4c60bbbabafad8a3a

Расшифровка диска выполняется программой dislocker, которая в последних версиях поддерживает опцию --vmk и принимает напрямую ключи VMK без реконструкции FVEK:

$ hexdump -C vmk
00000000  5a f9 49 09 16 01 3a 0b  c1 27 b3 30 1d 41 50 8c  
00000010  4a f8 ab b8 58 3d e5 e4  c6 0b bb ab cf ad 8a 3a
$ sudo dislocker -v -V /dev/sdb3 --vmk vmk -- /media/bl
$ sudo mount -o ro,loop /media/bl/dislocker-file /media/blm
$ ls /media/blm
'$RECYCLE.BIN'             ESD            pagefile.sys    'Program Files (x86)'         Users
'$SysReset'                hiberfil.sys   PerfLogs         Recovery                     Windows
 Chocolatey                install        ProgramData      swapfile.sys
'Documents and Settings'   Intel         'Program Files'  'System Volume Information'

Таким образом, в случае потери/кражи ноутбука при использовании BitLocker на сохранность данных не всегда можно положиться. Важно понимать, какой именно модуль TPM используется в устройстве. Если он не совмещён с CPU и находится отдельной микросхеме, то насколько шина уязвима для сниффинга. TPM обычно подключается по низкоскоростной шине LPC, I2C или SPI, которая работает на частоте 25−33 МГц и легко доступна для прослушивания на дешёвом оборудовании.

Несколько недель назад появилась информация, что в качестве сниффера можно использовать даже Raspberry Pi Pico стоимостью $4, а весь процесс занимает меньше минуты.

Но есть и положительный аспект: если пользователь забыл свой пароль или пинкод BitLocker, то в некоторых компьютерах файлы всё равно можно восстановить.

Microsoft опубликовала рекомендации по дополнительной защите при использовании BitLocker. Компания рекомендует добавить дополнительный фактор аутентификации перед загрузкой (например, пинкод).

 

Источник

Читайте также