Внешние диски WD серии My Passport и My Book рекламируются как надёжный сейф для данных, поскольку выполняют сквозное шифрование по алгоритму AES. Исследователи из Рурского университета в Бохуме (Германия) изучили их модель безопасности и сочли её несостоятельной. Утечки памяти, слабый RNG и другие фундаментальные ошибки реализации криптозащиты привели к тому, что файлы с этих накопителей могут быть расшифрованы посторонним и независимо от сложности пароля. Сам же внешний диск может быть превращён в орудие злоумышленника, скрыто работающее против своего владельца.

Аппаратное шифрование часто преподносится как наиболее совершенный метод криптографической защиты данных. Специализированный чип обеспечивает более эффективное шифрование на лету за счёт архитектурных отличий от процессора общего назначения. Любая программа отнимает машинные ресурсы, а криптографический чип самодостаточен. Обычно он также имеет собственный генератор (псевдо)случайных чисел и меньше зависит от уязвимостей внешних компонентов. Однако дьявол часто кроется в деталях. Как уже неоднократно было показано, для достижения высокого уровня безопасности мало взять лучший алгоритм шифрования и воплотить его в железе. Непродуманность общей криптографической схемы может свести на нет всю защиту, превратив зашифрованный диск в сейф без задней стенки.

My_passport_pwned

Компания Western Digital выпускает множество внешних дисков, подключаемых по USB 2.0 / 3.0, FireWire или Thunderbolt. Все они построены на базе HDD с интерфейсом SATA, а подключение к разным портам достигается за счёт использования моста – отдельной платы с контроллером, который выполняет преобразование данных и при необходимости расшифровывает их на лету.

Даже диски одной серии могут комплектоваться мостами с разными чипами, но общий принцип работы у всех одинаков. Это повышает совместимость, упрощает их производство, ремонт и… взлом. Немецкая команда исследователей отобрала для эксперимента шесть разных накопителей WD с чипами JMicron (JMS538S и JMS569), Symwave (SW6316), PLX Technology (OXUF943SE), а также Initio (INIC-1607E и INIC-3608).

Три из них были построены на базе архитектуры Intel 8051. В остальных использовалась архитектура Motorola M68k, ARC 600 и ARM v7. Внешний интерфейс не оказывает влияния на уровень защиты, поэтому для удобства рассматривались модели с подключением по USB. Обычно чип моста SATA-USB использует специфичные для вендора команды SCSI (VSC) и непосредственно выполняет процедуру аутентификации. Работать с VSC можно, например, с помощью линуксовой утилиты sg_raw, входящей в пакет sg3.

root@linux: ̃ /WD# sg_raw −r 1k /dev/sdb [VSC as hex]

В последних моделях внешних дисков WD мост упростили. Теперь он просто перенаправляет все данные SATA-контроллеру, используя для разблокировки доступа общую команду SECURITY UNLOCK (F2h). Забегая вперёд, отмечу, что для каждого варианта был обнаружен свой набор уязвимостей, дополняющий общий сценарий атаки на внешние накопители WD.

Как пользовательские, так и служебные данные на внешних дисках WD с поддержкой AES всегда хранятся в зашифрованном виде. В зависимости от модели шифрование выполняется ключом с длиной 128 или 256 бит. Он задан изначально и называется DEK (Data Encryption Key). Этот ключ тоже не хранится в открытом виде, а шифруется с помощью другого – KEK (Key Encryption Key). Он представляет собой хеш SHA256, который вычисляется на основе введённого пользователем пароля и дополнительного набора данных (соль) после тысячи итераций.

Реклама на Компьютерре

Теоретически рандомизированная соль нужна для защиты от атак на хеш с помощью радужных таблиц, а тысяча итераций создаёт достаточную задержку в вычислениях, чтобы сделать исчерпывающий перебор неэффективным. Проблема дисков WD в том, что существуют обходные пути получения DEK. Поэтому ни комплексный пароль, ни соль, ни множество итераций при вычислении KEK не обеспечивают его должной защиты.

Данные на самом диске всегда зашифрованы ключом DEK (изображение: Gunnar Alendal et al.).
Данные на самом диске всегда зашифрованы ключом DEK (изображение: Gunnar Alendal et al.).

Физически зашифрованный DEK хранится в EEPROM (обычно это чип U8 или U14 на отдельной плате у дисков WD). В новых моделях он бывает записан в скрытом секторе или служебной области диска. В любом случае, его выдаёт низкая энтропия, и он всегда начинается с определённой записи. Её вид зависит от контроллера – например, для JMS538S зашифрованный ключ выглядит как «WDv1xxx…x». Расшифрованный DEK всегда начинается с «DEK1».

Пока пароль не задан, на диске используется предустановленное и не всегда корректно обрабатываемое значение KEK. При анализе фабричных настроек авторы выяснили, что во многих моделях накопителей эти значения хеш-функций были сгенерированы всего лишь на основе даты производства, а «соль» представляет собой не псевдослучайный набор данных, а банальную аббревиатуру «WDC». Более того, из-за программной ошибки некоторые диски продолжают использовать изначальное значение KEK вместо того, чтобы сгенерировать новое на основе пароля. Замена KEK у них происходит только при второй смене пароля – довольно редкая ситуация в реальном сценарии.

При подключении любого накопителя WD с поддержкой AES его контроллер пытается смонтировать дисковый раздел. Для этого он пробует расшифровать его с помощью DEK. Сначала ему требуется расшифровать сам ключ, для чего он использует заданный по умолчанию KEK. Если пароль не был задан, то криптографический чип получает расшифрованный DEK без вмешательства пользователя и дешифрует содержимое диска на лету.

Схема шифрования данных в дисках WD с использованием двух ключей (изображение: Gunnar Alendal et al.).
Схема шифрования данных в дисках WD с использованием двух ключей (изображение: Gunnar Alendal et al.).

Если же расшифровать диск не удаётся, то контроллер считает сам DEK зашифрованным с помощью пользовательского пароля, после чего запускает интерактивную процедуру генерирования KEK. Для этого вместо тома с данными он монтирует из флеш-памяти или служебной области виртуальный диск. На нём записаны программы с графическим интерфейсом для ввода пароля, и это ещё один потенциальный вектор атаки. Содержимое виртуального диска хранится в виде образа ISO без цифровой подписи. Он легко может быть подменён произвольным кодом, который будет скормлен на автозапуск по сценарию атаки badUSB. Если на Mac он выполняется с правами обычного пользователя, то в среде Windows запускается с правами администратора.

В отдельных моделях были выявлены дополнительные уязвимости на уровне контроллера, генератора случайных чисел и обработки мостом служебных команд. Механизм их реализации позволяет собрать часть материала для генерирования ключей и на порядки сократить время взлома. Самым слабым с точки зрения криптографии оказался контроллер INIC-3608. Он не ускоряет вычисления AES и выполняет примитивную авторизацию лишь сравнивая ключи. При этом копия KEK хранится в открытом виде.

За время экспериментов авторам удалось расшифровать DEK и данные на всех моделях внешних накопителей разными методами. Подробный отчёт объёмом 36 страниц размещён ими в свободном доступе.