[Из песочницы] Атака «evil maid» на зашифрованный жесткий диск
Вчера была опубликована статья, в которой, не без помощи Microsoft, раскрываются интересные подробности о внутренностях BitLocker. Статья длинная и ее содержимое можно резюмировать как «в целом выглядит адекватно, явных уязвимостей вроде не видно». Зато по ссылкам много интересной информации о разных атаках на зашифрованный жесткий диск. Полагаю, хабражителям будет интересно краткое изложение атаки с романтичным названием «evil maid» и ее логическое продолжение. Надежно ли защищена ваша деловая переписка от молодых любопытных таможенников, если в аэропорту солнечной Испании у вас на 10 минут попросили досмотреть ноутбук с зашифрованным жестким диском? Казалось бы, если используется адекватный алгоритм шифрования и злоумышленник или просто любопытствующий не знает вашего пароля — то деловая переписка в полной безопасности. Так ли это? Не совсем. Шифрование реализовывает операционная система. Когда вы запускаете компьютер с Linux, Windows или OSX, вначале стартует некий код операционной системы, который запрашивает у вас фразу-пароль от зашифрованного жесткого диска, после чего использует ее для расшифровки жесткого диска в реальном времени (или только home dir, используется шифрование по умолчанию в OSX). Атака «evil maid» заключается в том, что backdoor, отсылающий злоумышленнику всю необходимую информацию, встраивается в запрашивающий пароль код. Который не зашифрован, потому что должен выполниться при старте компьютера до того, как пользователь введет фразу-пароль. Вам вернули ноутбук, вы посмеялись над недалекими проверяльщиками, включили его, ввели пароль, загрузили операционку — и все, backdoor уже на вашем компьютере.
Параноики от безопасности знают о таком подходе и в случае подозрений что кто-то модифицировал диск компьютера загружаются с usb и перезаписывают часть операционной системы, отвечающей за первоначальную загрузку и ввода пароля. Или используют usb ключ вместо ввода фразы-пароля. Или загружаются с usb. Или любой другой способ. Но достаточно ли этого?
Оказывается, нет. Большинство решений по шифрованию жесткого диска используют алгоритм AES в блочном режиме CBC. А у этого алгоритма, оказывается, есть забавная особенность. Если злоумышленник знает содержимое зашифрованного файла на жестком диске, но не знает ключа, то он может модифицировать зашифрованные данные таким образом, что после расшифровки получится нужное ему содержимое. Неожиданно, да? Можно не трогать загрузчик. Зная версию операционной системы и расположение ее стандартных фалов на диске можно внедрить backdoor в системные файлы, просто перезаписав часть зашифрованных блоков. Подробно такая атака описана в другой статье, там же — практическая реализация для Ubuntu 12.04.
Безусловно, такие атаки известны любому читателю, знакомому с основами информационной безопасности. Всем остальным, надеюсь, информация об этих двух атаках будет, как минимум, любопытна. В качестве иллюстрации использовалась работа вот этого художника.