Защита данных на внешнем HDD или шифруемся по полной. Шифрование диска

  • 27.07.2019

С помощью программы CyberSafe можно шифровать не только отдельные файлы. Программа позволяет зашифровать целый раздел жесткого диска или весь внешний диск (например, USB-диск или флешку). В этой статье будет показано, как зашифровать и скрыть от посторонних глаз зашифрованный раздел жесткого диска.

Шпионы, параноики и обычные пользователи

Кому будет полезна возможность шифрования разделов? Шпионов и параноиков отбросим сразу. Первых не так уж и много и необходимость шифрования данных у них сугубо профессиональная. Вторым лишь бы что-то зашифровать, спрятать и т.д. Хотя никакой реальной угрозы нет и зашифрованные данные не представляют ни для кого никакого интереса, они все равно их шифруют. Именно поэтому нас интересуют простые пользователи, которых, я надеюсь, будет больше, чем шпионов с параноиками.
Типичный сценарий шифрования раздела - это совместное использование компьютера. Здесь есть два варианта применения программы CyberSafe: или каждый из работающих за компьютером пользователей создает виртуальный диск или же каждый отводит себе по разделу на жестком диске для хранения личных файлов и шифрует его. О создании виртуальных дисков уже было написано , а в этой статье речь пойдет именно о шифровании всего раздела.
Допустим, есть жесткий диск на 500 Гб и есть три пользователя, которые периодически работают с компьютером. Не смотря на то, что файловая система NTFS все же поддерживает права доступа и позволяет ограничить доступ одного пользователя к файлам другого пользователя, ее защиты недостаточно. Ведь у одного из этих трех пользователей будут права администратора и он сможет получить доступ к файлам оставшихся двух пользователей.
Поэтому дисковое пространство жесткого диска можно разделить следующим образом:
  • Примерно 200 Гб - общий раздел. Этот раздел также будет системным разделом. На нем будет установлена операционная система, программа и будут храниться общие файлы всех трех пользователей.
  • Три раздела по ~100 Гб - думаю, 100 Гб вполне достаточно для хранения личных файлов каждого пользователя. Каждый из этих разделов будет зашифрован, а пароль доступа к зашифрованному разделу будет знать только тот пользователь, который зашифровал этот раздел. При этом администратор при всем своем желании не сможет расшифровать раздел другого пользователя и получить доступ к его файлам. Да, при желании администратор может отформатировать раздел и даже удалить его, но получить доступ он сможет только лишь в том случае, если обманом выведает у пользователя его пароль. Но, думаю, этого не произойдет, поэтому шифрование раздела - гораздо более эффективная мера, чем разграничение прав доступа с помощью NTFS.

Шифрование раздела vs виртуальные зашифрованные диски

Что лучше - шифровать разделы или использовать виртуальные зашифрованные диски? Здесь каждый решает сам, поскольку у каждого способа есть свои преимущества и недостатки. Шифрование разделов также надежно, как и шифрование виртуального диска и наоборот.
Что такое виртуальный диск? Смотрите на него как на архив с паролем и степенью сжатия 0. Вот только файлы внутри этого архива зашифрованы гораздо надежнее, чем в обычном архиве. Виртуальный диск хранится на жестком диске в виде файла. В программе CyberSafe вам нужно открыть и смонтировать виртуальный диск и тогда с ним можно будет работать как с обычным диском.
Преимущество виртуального диска в том, что его можно легко скопировать на другой жесткий диск или флешку (если позволяет размер). Например, вы можете создать виртуальный диск на 4 Гб (ограничений на размер виртуального диска нет, если не считать естественных) и при необходимости скопировать файл виртуального диска на флешку или на внешний жесткий диск. С зашифрованным разделом у вас такое проделать не получится. Также файл виртуального диска можно .
Конечно, при необходимости, можно создать образ зашифрованного диска - на тот случай, если вы хотите сделать его резервную копию или переместить на другой компьютер. Но это уже отдельная история. Если у вас возникнет подобная потребность, рекомендую программу Clonezilla - уже надежное и проверенное решение. Перенос зашифрованного раздела на другой компьютер - это более сложная затея, чем перенос виртуального диска. Если есть такая необходимость, то проще использовать виртуальные диски.
В случае с шифрованием раздела физически шифруется весь раздел. При монтировании этого раздела нужно будет ввести пароль, после чего можно будет работать с разделом, как обычно, то есть читать и записывать файлы.
Какой способ выбрать? Если вы можете себе позволить зашифровать раздел, тогда можно выбрать этот способ. Также весь раздел лучше шифровать, если размер ваших секретных документов довольно большой.
Но есть ситуации, когда использовать весь раздел нельзя или нет смысла. Например, у вас есть только один раздел (диск С:) на жестком диске и по тем или иным причинам (нет прав, например, поскольку компьютер не ваш) вы не можете или не хотите изменять его разметку, тогда нужно использовать виртуальные диски. Нет смысла шифровать весь раздел, если размер документов (файлов), которые вам нужно зашифровать небольшой - несколько гигабайт. Думаю, с этим разобрались, поэтому самое время поговорить о том, какие разделы (диски) можно зашифровать.

Поддерживаемые типы дисков

Вы можете зашифровать следующие типы носителей:
  • Разделы жесткого диска, отформатированные в файловых системах FAT, FAT32 и NTFS.
  • Флешки, внешние USB-диски за исключением дисков, представляющих мобильные телефоны, цифровые камеры и аудио-проигрыватели.
Нельзя зашифровать:
  • CD/DVD-RW-диски, дискеты
  • Динамические диски
  • Системный диск (с которого загружается Windows)
Начиная с Windows XP, Windows поддерживает динамические диски. Динамические диски позволяют объединять в себе несколько физических жестких дисков (аналог LVM в Windows). Такие диски зашифровать программой невозможно.

Особенности работы с зашифрованным диском

Представим, что вы уже зашифровали раздел жесткого диска. Для работы с файлами на зашифрованном разделе вам нужно его cмонтировать. При монтировании программа запросит у вас пароль к зашифрованному диску, указанный при его шифровании. Поработав с зашифрованным диском, его нужно сразу же размонтировать, иначе файлы останутся доступны пользователям, у которых есть физический доступ к вашему компьютеру.
Другими словами, шифрование защищает ваши файлы только тогда, когда зашифрованный раздел размонтирован. Когда раздел смонтирован, любой, у кого есть физический доступ к компьютеру, может скопировать с него файлы на незашифрованный раздел, USB-диск или внешний жесткий диск и файлы не будут зашифрованы. Поэтому, когда вы работаете с зашифрованным диском, возьмите в привычку всегда размонтировать его каждый раз, когда отлучаетесь от компьютера, даже ненадолго! После того, как вы размонтировали зашифрованный диск, ваши файлы будут под надежной защитой.
Что касается производительности, то при работе с зашифрованным разделом она будет ниже. Насколько ниже - зависит от способностей вашего компьютера, но система останется работоспособной и просто придется подождать чуть дольше, чем обычно (особенно, когда вы будете копировать большие файлы на зашифрованный раздел).

Готовимся к шифрованию

Первым делом нужно раздобыть где-то ИБП. Если у вас ноутбук, все хорошо, если же у вас обычный стационарный компьютер и вы хотите зашифровать раздел, на котором уже есть файлы, то шифрование займет определенное время. Если за это время отключат свет, то потеря данных вам гарантирована. Посему, если ИБП, способного выдержать несколько часов автономной работы у вас нет, рекомендую сделать следующее:
  • Сделайте резервную копию своих данных, например, на внешнем жестком диске. Потом от этой копии придется избавиться (желательно после удаления данных с незашифрованного диска затереть свободное пространство утилитой вроде Piriform, чтобы было невозможно восстановить удаленные файлы), поскольку при ее наличии пропадает смысл в наличии зашифрованной копии данных.
  • Данные на зашифрованный диск перенесете с копии после того, как диск будет зашифрован. Отформатируйте диск и зашифруйте его. Собственно, отдельно форматировать его не нужно - за вас это сделает CyberSafe, но об этом позже.

Если у вас ноутбук и вы готовы продолжить без создания резервной копии данных (я бы рекомендовал ее на всякий случай сделать), обязательно проверьте диск на наличие ошибок, хотя бы стандартной утилитой Windows. Только после этого нужно приступать к шифрованию раздела/диска.

Шифрование раздела: практика

Итак, теория без практики бессмысленна, поэтому приступим к шифрованию раздела/диска. Запустите программу CyberSafe и перейдите в раздел Шифрование дисков, Шифровать раздел (рис. 1).


Рис. 1. Список разделов/дисков вашего компьютера

Выберите раздел, который вы хотите зашифровать. Если кнопка Создать будет неактивна, то этот раздел зашифровать нельзя. Например, это может быть системный раздел или динамический диск. Также вы не можете одновременно зашифровать несколько дисков. Если вам нужно зашифровать несколько дисков, то операцию шифрования нужно повторить поочередно.
Нажмите кнопку Создать . Далее откроется окно Крипо Диск (рис. 2). В нем нужно ввести пароль, который будет использоваться для расшифровки диска при его монтировании. При вводе пароля проверьте регистр символов (чтобы не была нажата клавиша Caps Lock) и раскладку. Если за спиной никого нет, можно включить переключатель Показать пароль .


Рис. 2. Крипто Диск

Из списка Тип шифрования нужно выбрать алгоритм - AES или ГОСТ. Оба алгоритмы надежные, но в государственных организациях принято использовать только ГОСТ. На своем собственном компьютере или в коммерческой организации вы вольны использовать любой из алгоритмов.
Если на диске есть информация и вы хотите ее сохранить, включите переключатель . Нужно учесть, что в этом случае время шифрования диска значительно возрастет. С другой стороны, если зашифрованные файлы, скажем, находятся на внешнем жестком диске, то вам все равно придется их скопировать на зашифрованный диск для их шифрования, а копирование с шифрованием «на лету» также займет некоторое время. Если вы не сделали резервную копию данных, обязательно включите флажок включите переключатель Сохранить файловую структуру и данные , иначе вы потеряете все ваши данные.
Остальные параметры в окне Крипто Диск можно оставить по умолчанию. А именно - будет использоваться весь доступный размер устройства и будет выполнено быстрое форматирование в файловую систему NTFS. Для начала шифрования нажмите кнопку Принять . Ход процесса шифрования будет отображен в основном окне программы.


Рис. 3. Ход процесса шифрования

После того, как диск будет зашифрован, вы увидите его состояние - зашифрован, скрытый (рис. 4). Это означает, что ваш диск был зашифрован и скрыт - он не будет отображаться в Проводнике и других высокоуровневых файловых менеджерах, но его будут видеть программы для работы с таблицей разделов. Не нужно надеяться, что раз диск скрыт, то его никто не найдет. Все скрытые программой диски будут отображены в оснастке Управление дисками (см. рис. 5) и других программах для разметки диска. Обратите внимание, что в этой оснастке зашифрованный раздел отображается как раздел с файловой системой RAW, то есть без файловой системы вообще. Это нормальное явление - после шифрования раздела Windows не может определить его тип. Однако сокрытие раздела необходимо по совсем иным причинам и далее вы поймете, по каким именно.


Рис. 4. Состояние диска: зашифрован, скрыт. Раздел E: не отображается в Проводнике


Рис. 5. Оснастка Управление дисками

Теперь cмонтируем раздел. Выделите его и нажмите кнопку Восстан. , чтобы вновь сделать раздел видимым (состояние диска будет изменено на просто "зашифрован "). Windows увидит этот раздел, но поскольку она не может распознать тип его файловой системы, она предложит его отформатировать (рис. 6). Этого нельзя ни в коем случае делать, поскольку вы потеряете все данные. Именно поэтому программа скрывает зашифрованные диски - ведь если за компьютером работаете не только вы, другой пользователь может отформатировать якобы не читаемый раздел диска.


Рис. 6. Предложение отформатировать зашифрованный раздел

От форматирования, понятное дело, отказываемся и нажимаем кнопку Монтиров . в основном окне программы CyberSafe. Далее нужно будет выбрать букву диска, через которую вы будете обращаться к зашифрованному разделу (рис. 7).


Рис. 7. Выбор буквы диска

После этого программа попросит ввести пароль, необходимый для расшифровки ваших данных (рис. 8). Расшифрованный раздел (диск) появится в области Подключенные расшифрованные устройства (рис. 9).


Рис. 8. Пароль для расшифровки раздела


Рис. 9. Подключенные расшифрованные устройства

После этого с расшифрованным диском можно будет работать, как с обычным. В Проводнике будет отображен только диск Z: - именно эту букву я назначил расшифрованному диску. Зашифрованный диск E: отображаться не будет.


Рис. 10. Проводник - просмотр дисков компьютера

Теперь можете открыть cмонтированный диск и скопировать на него все секретные файлы (только не забудьте потом их удалить с оригинального источника и затереть на нем свободное пространство).
Когда нужно завершить работу с нашим разделом, то или нажмите кнопку Демонтир. , а затем - кнопку Скрыть или просто закройте окно CyberSafe. Как по мне, то проще закрыть окно программы. Понятное дело, закрывать окно программы во время операции копирования/перемещения файлов не нужно. Ничего страшного и непоправимого не произойдет, просто часть файлов не будет скопирована на ваш зашифрованный диск.

О производительности

Понятно, что производительность зашифрованного диска будет ниже, чем обычного. Но насколько? На рис. 11 я скопировал папку своего профиля пользователя (где есть множество мелких файлов) с диска С: на зашифрованный диск Z:. Скорость копирования показана на рис. 11 - примерно на уровне 1.3 МБ/с. Это означает, что 1 ГБ мелких файлов будет копироваться примерно 787 секунд, то есть 13 минут. Если же скопировать эту же папку на незашифрованный раздел, то скорость будет примерно 1.9 МБ/с (рис. 12). Под конец операции копирования скорость выросла до 2.46 МБ/с, но с такой скоростью было скопировано совсем немного файлов, поэтому считаем, что скорость была на уровне 1.9 МБ/с, а это на 30% быстрее. Тот самый 1 ГБ мелких файлов в нашем случае будет скопирован за 538 секунд или почти 9 минут.


Рис. 11. Скорость копирования мелких файлов с незашифрованного раздела на зашифрованный


Рис. 12. Скорость копирования мелких файлов между двумя незашифрованными разделами

Что же касается крупных файлов, то никакой разницы вы не почувствуете. На рис. 13 приведена скорость копирования крупного файла (видео-файл размером 400 Мб) с одного незашифрованного раздела на другой. Как видите, скорость составила 11.6 МБ/с. А на рис. 14 показана скорость копирования этого же файла с обычного раздела на зашифрованный и она составила 11.1 МБ/с. Разница небольшая и находится в пределах погрешности (все равно скорость незначительно изменяется по ходу выполнения операции копирования). Ради интереса сообщу скорость копирования этого же файла с флешки (не USB 3.0) на жесткий диск - около 8 МБ/с (скриншота нет, но уж поверьте мне).


Рис. 13. Скорость копирования крупного файла


Рис. 14. Скорость копирования крупного файла на зашифрованный раздел

Такой тест не совсем точный, но все же позволяет получить некоторые представления о производительности.
На этом все. Также я рекомендую вам ознакомиться со статьей

Это четвертая из пяти статей в нашем блоге посвященная VeraCrypt, в ней подробно разбирается и дана пошаговая инструкция, как с помощью VeraCrypt зашифровать системный раздел или диск целиком, с установленной операционной системой Windows.

Если Вы ищите как зашифровать не системный жесткий диск, зашифровать отдельные файлы или USB-флэшку целиком, а также хотите узнать больше о VeraCrypt, обратите внимание на эти ссылки:

Данное шифрование является самым безопасным так как абсолютно все файлы, включая любые временные файлы, файл гибернации (спящий режим), файл подкачки и другие всегда зашифрованы (даже в случае непредвиденного отключения питания). Журнал операционной системы и реестр в которых хранятся множество важных данных будут зашифрованы в том числе.

Шифрование системы работает благодаря аутентификации перед загрузкой системы. Прежде чем ваша Windows начнет загружаться, вам придется ввести пароль с помощью которого расшифровывается системный раздел диска содержащий все файлы операционной системы.

Этот функционал реализован с помощью загрузчика VeraCrypt который заменяет стандартный системный загрузчик. Загрузить систему в случае повреждения загрузочного сектора жесткого диска, а значит и самого загрузчика можно с помощью VeraCrypt Rescue Disk.

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

Список операционных систем для которых поддерживается шифрование системного диска:

  • Windows 10
  • Windows 8 and 8.1
  • Windows 7
  • Windows Vista (SP1 or later)
  • Windows XP
  • Windows Server 2012
  • Windows Server 2008 and Windows Server 2008 R2 (64-bit)
  • Windows Server 2003
В нашем случае мы зашифровываем компьютер с Windows 10 и единственным диском C:\

Шаг 1 - Шифрование системного раздела


Запустите VeraCrypt, в главном окне программы перейдите на вкладку System (Система) и выберите первый пункт меню Encrypt system partition/drive (Зашифровать системный раздел/диск) .

Шаг 2 – Выбор типа шифрования


Оставьте установленный по умолчанию тип Normal (Обычный) если Вы хотите создать скрытый раздел или скрытую ОС, то обратите внимание на посвященную дополнительным возможностям VeraCrypt. Нажмите Next (Далее)

Шаг 3 – Область шифрования




В нашем случае нет принципиального значения шифровать весь диск целиком или только системный раздел, так как у нас всего один раздел на диске занимающий всё свободное место. Вполне возможно, что ваш физический диск разбит на несколько разделов, например C:\ и D:\ . Если это так и Вы хотите зашифровать оба раздела, выбирайте Encrypt the whole drive (Зашифровать весь диск) .

Обратите внимание если у Вас установлено несколько физических дисков, Вам придется зашифровать каждый из них по отдельности. Диск с системным разделом с помощью этой инструкцией. Как зашифровать диск с данными написано .

Выберите, хотите Вы зашифровать весь диск или только системный раздел и нажмите кнопку Next (Далее) .

Шаг 4 – Шифрование скрытых разделов



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

Шаг 5 – Число операционных систем



Мы не будем разбирать случай, когда на компьютере установлено сразу несколько операционных систем. Выберите и нажмите кнопку Next (Далее) .

Шаг 6 – Настройки шифрования



Выбор алгоритмов шифрования и хеширования, если Вы не уверены, что выбрать, оставьте значения AES и SHA-512 по умолчанию как наиболее сильный вариант.

Шаг 7 – Пароль



Это важный шаг, здесь необходимо создать надежный пароль который будет использоваться для доступа к зашифрованной системе. Рекомендуем внимательно ознакомиться с рекомендациями разработчиков в окне мастера создания томов о том, как выбрать хороший пароль.

Шаг 8 – Cбор случайных данных


Этот шаг необходим для формирования ключа шифрования на основе пароля, введённого ранее, чем дольше Вы будете двигать мышью, тем надежнее будут полученные ключи. Хаотично двигайте мышью как минимум до тех пор, пока индикатор не станет зеленым, затем нажмите Next (Далее) .

Шаг 9 - Cгенерированные ключи



Этот шаг информирует о том, что ключи шифрования, привязка (соль) и другие параметры успешно созданы. Это информационный шаг, нажмите Next (Далее) .

Шаг 10 – Диск восстановления



Укажите путь где будет сохранен ISO образ диска восстановления (rescue disk) этот образ может вам понадобиться в случае повреждения загрузчика VeraCrypt, при этом Вам все равно понадобиться ввести верный пароль.


Сохраните образ диска восстановления на сменный носитель (например флешку) или запишите его на оптический диск (рекомендуем) и нажмите Next (Далее) .

Шаг 11 - Диск восстановления создан



Обратите внимание! Для каждого зашифрованного системного раздела необходим свой диск восстановления. Обязательно создайте его и храните на съемном носителе. Не храните диск восстановления на этом же зашифрованном системном диске.

Только диск восстановления может помочь вам расшифровать данные в случае технических сбоев и аппаратных проблем.

Шаг 12 – Очистка свободного места



Очистка свободного места позволяет безвозвратно удалить ранее удаленные данные с диска, которые возможно восстановить с помощью специальных техник (особенно актуально для традиционных магнитных жестких дисков).

Если Вы шифруете SSD накопитель, выберите 1 или 3 прохода, для магнитных дисков рекомендуем 7 или 35 проходов.

Учтите, что эта операция отразиться на общем времени шифрования диска, по этой причине откажитесь от неё в случае если ваш диск не содержал важные удаленные данные раньше.

Не выбирайте 7 или 35 проходов для SSD накопителей, магнитно-силовая микроскопия не работает в случае с SSD, вполне достаточно 1 прохода.

Шаг 13 – Тест шифрования системы



Выполните пре-тест шифрования системы и ознакомьтесь с сообщением о том, что интерфейс загрузчика VeraCrypt полностью на английском языке.

Шан 14 – Что делать если Windows не загружается



Ознакомьтесь, а лучше распечатайте рекомендации на случай, что делать если Windows не загрузится после перезагрузки (такое случается).

Нажмите OK если прочитали и поняли сообщение.

Безопасность и конфиденциальность очень важны, для тех, кто хранит важные данные на компьютере. Ваш домашний компьютер находится в безопасности, но с ноутбуком или другими переносными устройствами ситуация очень сильно меняется. Если вы носите свой ноутбук с собой почти везде и к нему могут иметь доступ посторонние лица, возникает вопрос - как защитить свои данные от чужого вмешательства. Именно от физических атак, где каждый желающий может попытаться получить данные из USB накопителя или жесткого диска ноутбука просто забрав устройство или в случае ноутбука, вытянув жесткий диск и подключив его к другой операционной системе.

Многие предприятия и даже простые пользователи используют шифрование дисков в linux чтобы защитить конфиденциальную информацию, такую как: сведения о клиенте, файлы, контактную информацию и многое другое. В операционной системе Linux поддерживается несколько криптографических методов для защиты разделов, отдельных каталогов или полностью всего жесткого диска. Все данные, в любом из этих способов автоматически зашифровываются и расшифровываются на лету.

Шифрование на уровне файловой системы:

  • 1. eCryptfs - это криптографическая файловая система Linux. Она хранит криптографические метаданные для каждого файла в отдельном файле, таким образом, что файлы можно копировать между компьютерами. Файл будет успешно расшифрован, если у вас есть ключ. Это решение широко используется для реализации зашифрованной домашней директории, например, в Ubuntu. Также ChromeOS прозрачно встраивает эти алгоритмы при использовании сетевых устройств для хранения данных (NAS).
  • 2. EncFS - обеспечивает шифрованную файловую систему в пространстве пользователя. Она работает без каких-либо дополнительных привилегий и использует библиотеку fuse и модуль ядра для обеспечения интерфейса файловой системы. EncFS - это свободное программное обеспечение и она распространяется под лицензией GPL.

Блочное шифрование на уровне устройства:

  • Loop-AES - быстрая и прозрачная файловая система, а также пакет для шифрования раздела подкачки в Linux. Исходный код программы давно не изменялся. Она работает с ядрами 4.x, 3.x, 2.2, 2.0.
  • TrueCrypt - это бесплатное решение с открытым исходным кодом для шифрования диска в операционных системах Windows 7 / Vista /XP / Mac OS X, а также в Linux.
  • dm-crypt+LUKS - dm-crypt - это прозрачная подсистема для шифрования диска в ядре 2.6 и более поздних версиях. Поддерживается шифрование целых дисков, съемных носителей, разделов, томов RAID, программного обеспечения, логических томов и файлов.

В этой инструкции мы рассмотрим шифрование жесткого диска на Linux с помощью алгоритма Linux Unified Key Setup-on-disk-format (LUKS).

Как работает LUKS?

LUKS (Linux Unified Key Setup - протокол шифрования блочного устройства. Но мы забежали далеко наперед, чтобы понять как это работает, нужно скачала разобраться с другими технологиями, используемыми в этом способе.

Чтобы выполнить шифрование диска linux используется модуль ядра dm-crypt. Этот модуль позволяет создавать в каталоге /dev/mapper виртуальное блочное устройство с прозрачным для файловой системы и пользователя шифрованием. Фактически все данные лежат на зашифрованном физическом разделе. Если пользователь пытается записать данные на виртуальное устройство, они на лету шифруются и записываются на диск, при чтении с виртуального устройства, выполняется обратная операция - данные расшифровываются с физического диска и передаются в открытом виде через виртуальный диск пользователю. Обычно для шифрования используется метод AES, потому что под него оптимизированы большинство современных процессоров. Важно заметить, что вы можете шифровать не только разделы и диски, но и обычные файлы, создав в них файловую систему и подключив как loop устройство.

Алгоритм LUKS определяют какие действия и в каком порядке будут выполняться во время работы с шифрованными носителями. Для работы с LUKS и модулем dm-crypt используется утилита Cryptsetup. Ее мы и рассмотрим далее.

Утилита Cryptsetup

Утилита Cryptsetup позволят облегчить шифрование раздела Linux с помощью модуля dm-crypt. Давайте сначала ее установим.

В Debian или Ubuntu, для этого используйте такую команду:

apt-get install cryptsetup

В дистрибутивах, основанных на Red Hat это будет выглядеть так:

yum install cryptsetup-luks

Синтаксис запуска команды такой:

$ cryptsetup опции операция параметры_операции

Рассмотрим основные операции, которые можно сделать с помощью этой утилиты:

  • luksFormat - создать зашифрованный раздел luks linux
  • luksOpen - подключить виртуальное устройство (нужен ключ)
  • luksClose - закрыть виртуальное устройство luks linux
  • luksAddKey - добавить ключ шифрования
  • luksRemoveKey - удалить ключ шифрования
  • luksUUID - показать UUID раздела
  • luksDump - создать резервную копию заголовков LUKS

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

Шифрование диска Linux

Теория пройдена, все инструменты готовы. Теперь рассмотрим шифрование раздела linux. Перейдем к настройке жесткого диска. Обратите внимание, что это удалит все данные из диска или раздела, который вы собираетесь зашифровать. Так что если там есть важные данные, лучше скопируйте их в более надежное место.

Создание раздела

В этом примере мы будем шифровать раздел /dev/sda6, но вместо него вы можете использовать целый жесткий диск или просто один файл, заполненный нулями. Создаем шифрованный раздел:

cryptsetup -y -v luksFormat /dev/sda6

WARNING!
========
This will overwrite data on /dev/sda6 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

Эта команда выполнит инициализацию раздела, установит ключ инициализации и пароль. Указывайте такой пароль, чтобы его потом не забыть.

Выполните такую команду чтобы открыть только что созданный раздел с помощью модуля dm-crypt в /dev/mapper, для этого понадобится ввести пароль, с которым выполнялось шифрование luks linux:

Enter passphrase for /dev/sda6

Теперь вы можете увидеть новое виртуальное устройство /dev/mapper/backup2 созданное с помощью команды luksFormat:

ls -l /dev/mapper/backup2

Чтобы посмотреть состояние устройства выполните:

cryptsetup -v status backup2

/dev/mapper/backup2 is active.
type: LUKS1
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/sda6
offset: 4096 sectors
size: 419426304 sectors
mode: read/write
Command successful.

А с помощью следующей команды вы можете сделать резервную копию заголовков LUKS на всякий случай:

cryptsetup luksDump /dev/sda6

Ну, можно сказать, раздел готов. И что самое интересное, теперь вы можете им пользоваться так же, как и любым другим обычным разделом в каталоге /dev. Его можно форматировать с помощью стандартных утилит, записывать на него данные, изменять или проверять файловую систему и т д. Нельзя только изменить размер. То есть все полностью прозрачно, как и сказано в начале статьи.

Форматирование раздела

Давайте для начала отформатируем диск. Для надежности, чтобы стереть все данные, которые были в этом месте раньше, перезапишем наш шифрованный раздел linux нулями. Это уменьшит вероятность взлома шифрования, через увеличение количества случайной информации. Для этого выполните:

dd if=/dev/zero of=/dev/mapper/backup2

Работа утилиты может занять несколько часов, чтобы иметь возможность наблюдать за процессом, используйте pv:

pv -tpreb /dev/zero | dd of=/dev/mapper/backup2 bs=128M

Когда процесс завершится мы можем отформатировать устройство в любую файловую систему. Например, отформатируем в ext4:

mkfs.ext4 /dev/mapper/backup2

Как видите, все команды cryptsetup применяются к физическому разделу, в то время как остальные команды для работы с дисками - к нашему виртуальному.

Монтирование раздела

Теперь можно примонтировать только, что созданную файловую систему:

$ mount /dev/mapper/backup2 /backup2

Отключение раздела

Все работает, но как отключить устройство и защитить данные. Для этого выполните:

cryptsetup luksClose backup2

Повторное монтирование

Чтобы снова получить возможность работать с зашифрованным разделом с помощью LUKS linux необходимо опять его открыть:

cryptsetup luksOpen /dev/sda6 backup2

Теперь можем монтировать:

mount /dev/mapper/backup2 /backup2

Проверить файловую систему luks

Поскольку после открытия раздела с помощью luks linux, этот раздел воспринимается системой, как и все другие, вы можете просто использовать утилиту fsck:

sudo umount /backup2

$ fsck -vy /dev/mapper/backup2

$ mount /dev/mapper/backup2 /backu2

Изменить парольную фразу luks

Шифрование дисков Linux выполняется с определенной парольной фразой, но вы можете ее изменить. Даже больше, вы можете создать до восьми разных парольных фраз. Для изменения выполнив следующие команды. Сначала сделаем резервную копию заголовков LUKS:

cryptsetup luksDump /dev/sda6

Затем создадим новый ключ:

cryptsetup luksAddKey /dev/sda6

Enter any passphrase:

Enter new passphrase for key slot:
Verify passphrase:

И удалим старый:

cryptsetup luksRemoveKey /dev/sda6

Сейчас вам придется ввести еще старый пароль.

Выводы

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

Плюсы:

  • LUKS шифрует все блочное устройство, и поэтому очень хорошо подходит для защиты содержимого переносных устройств, таких как мобильные телефоны, съемные носители или жесткие диски ноутбуков.
  • Вы можете использовать на серверах NAS для защиты резервных копий
  • Процессоры Intel и AMD с AES-NI (Advanced Encryption Standard) имеют набор команд, которые могут ускорить процесс шифрования на основе dm-crypt в ядре Linux начиная с 2.6.32.
  • Работает в том числе и с разделом подкачки, так что ваш ноутбук может использовать функцию спящего режима, или гибернации полностью безопасно.

На наших носителях в огромных количествах хранится персональная и важная информация, документы и медиафайлы. Их необходимо защитить. Такие криптографические методы, как AES и Twofish , стандартно предлагающиеся в шифровальных программах, относятся примерно к одному поколению и обеспечивают сравнительно высокий уровень безопасности.

На практике обычный пользователь не сможет сильно ошибиться в выборе. Вместо этого стоит определиться со специализированной программой в зависимости от намерений: зачастую шифрование жесткого диска использует иной операционный режим, чем шифрование файлов.

Долгое время лучшим выбором была утилита TrueCrypt , если речь шла о полном шифровании жесткого диска или сохранении данных в зашифрованном контейнере. Сейчас этот проект закрыт. Его достойным приемником стала программа с открытым исходным кодом VeraCrypt . В ее основу был положен код TrueCrypt, однако его доработали, благодаря чему качество шифрования повысилось.

К примеру, в VeraCrypt улучшено генерирование ключа из пароля . Для шифрования жестких дисков используется не такой распространенный режим, как CBC , а XTS . В данном режиме блоки шифруются по типу ECB , однако при этом добавляется номер сектора и внутрисегментное смещение .

Случайные числа и сильные пароли

Для защиты отдельных файлов достаточно бесплатной программы с простым интерфейсом, например, MAXA Crypt Portable или AxCrypt . Мы рекомендуем AxCrypt, поскольку она представляет собой проект с открытым исходным кодом. Однако при ее установке следует обратить внимание на то, что в пакете с приложением идут ненужные дополнения, поэтому с них необходимо снять флажки.

Утилита запускается щелчком правой кнопкой мыши по файлу или папке и вводу пароля (например, при открытии зашифрованного файла ). В данной программе используется алгоритм AES на 128 бит с режимом CBC . Для создания надежного вектора инициализации (IV) Ax-Crypt встраивает генератор псевдослучайных чисел.

Если IV не является настоящим случайным числом, то режим CBC его ослабляет. Программа MAXA Crypt Portable работает похожим образом, однако шифрование происходит с помощью ключа длиной в 256 бит . Если вы загружаете личную информацию в облачные хранилища, необходимо исходить из того, что их владельцы, например, Google и Dropbox, сканируют контент.

Boxcryptor встраивается в процесс в качестве виртуального жесткого диска и по щелчку правой кнопкой мыши шифрует все расположенные там файлы еще до загрузки в облако. При этом важно обзавестись менеджером паролей, таким как Password Depot . Он создает сложные пароли, которые не сможет запомнить ни один человек. Нужно только не потерять мастер-пароль к этой программе.

Используем зашифрованные диски

Подобно TrueCrypt, мастер утилиты VeraCrypt проведет пользователя сквозь все этапы создания зашифрованного диска. Вы также можете защитить существующий раздел.

Шифрование одним кликом

Бесплатная программа Maxa Crypt Portable предлагает все необходимые опции для быстрого шифрования отдельных файлов по алгоритму AES. Нажатием на кнопку вы запускаете генерацию безопасного пароля.

Связываем облако с частной жизнью

Boxcryptor по одному клику шифрует важные файлы перед загрузкой в хранилища Dropbox или Google. По умолчанию применяется шифрование AES с ключом длиной 256 бит .

Краеугольный камень - менеджер паролей

Длинные пароли усиливают безопасность. Программа Password Depot генерирует и применяет их, в том числе для шифрования файлов и работы с веб-службами, которым передает данные для доступа к учетной записи.

Фото: компании-производители

Исследователи из Принстонского Университета обнаружили способ обхода шифрования жестких дисков, использующий свойство модулей оперативной памяти хранить информацию на протяжении короткого промежутка времени даже после прекращения подачи питания.

Предисловие

Так как для доступа к зашифрованному жесткому диску необходимо иметь ключ, а он, разумеется, хранится в RAM – все, что нужно, это получить физический доступ к ПК на несколько минут. После перезагрузки с внешнего жесткого диска или с USB Flash делается полный дамп памяти и в течение считанных минут из него извлекается ключ доступа.

Таким способом удается получить ключи шифрования (и полный доступ к жесткому диску), используемые программами BitLocker, FileVault и dm-crypt в операционных системах Windows Vista, Mac OS X и Linux, а также популярной свободно распространяемой системой шифрования жестких дисков TrueCrypt.

Важность данной работы заключается в том, что не существует ни одной простой методики защиты от данного способа взлома, кроме как отключение питания на достаточное для полного стирания данных время.

Наглядная демонстрация процесса представлена в видеоролике .

Аннотация

Вопреки устоявшемуся мнению, память DRAM, использующаяся в большинстве современных компьютеров, хранит в себе данные даже после отключения питания в течение нескольких секунд или минут, причём, это происходит при комнатной температуре и даже, в случае извлечения микросхемы из материнской платы. Этого времени оказывается вполне достаточно для снятия полного дампа оперативной памяти. Мы покажем, что данное явление позволяет злоумышленнику, имеющему физический доступ к системе, обойти функции ОС по защите данных о криптографических ключах. Мы покажем, как перезагрузка может использоваться для того, чтобы совершать успешные атаки на известные системы шифрования жёстких дисков, не используя каких-либо специализированных устройств или материалов. Мы экспериментально определим степень и вероятность сохранения остаточной намагниченности и покажем что время, за которое можно снять данные, может быть существенно увеличено при помощи простых приёмов. Так же будут предложены новые методы для поиска криптографических ключей в дампах памяти и исправления ошибок, связанных с потерей битов. Будет также рассказано о несколько способах уменьшения данных рисков, однако простого решения нам не известно.

Введение

Большинство экспертов исходят из того, что данные из оперативной памяти компьютера стираются практически мгновенно после отключения питания, или считают, что остаточные данные крайне сложно извлечь без использования специального оборудования. Мы покажем, что эти предположения некорректны. Обычная DRAM память теряет данные постепенно в течение нескольких секунд, даже при обычных температурах, а если даже микросхема памяти будет извлечена из материнской платы, данные сохранятся в ней на протяжении минут или даже часов, при условии хранения этой микросхемы при низких температурах. Остаточные данные могут быть восстановлены при помощи простых методов, которые требуют кратковременного физического доступа к компьютеру.

Мы покажем ряд атак, которые, используя эффекты остаточной намагниченности DRAM, позволят нам восстановить хранимые в памяти ключи шифрования. Это представляет собой реальную угрозу для пользователей ноутбуков, которые полагаются на системы шифрования жёсткого диска. Ведь в случае, если злоумышленник похитит ноутбук, в тот момент, когда зашифрованный диск подключён, он сможет провести одну из наших атак для доступа к содержимому, даже если сам ноутбук заблокирован или находится в спящем режиме. Мы это продемонстрируем, успешно атакуя несколько популярных систем шифрования, таких как – BitLocker, TrueCrypt и FileVault. Эти атаки должны быть успешны и в отношении других систем шифрования.

Хотя мы сосредоточили наши усилия на системах шифрования жёстких дисков, в случае физического доступа к компьютеру злоумышленника, любая важная информация хранящаяся в оперативной памяти может стать объектом для атаки. Вероятно, и многие другие системы безопасности уязвимы. Например, мы обнаружили, что Mac OS X оставляет пароли от учётных записей в памяти, откуда мы смоги их извлечь, так же мы совершили атаки на получение закрытых RSA ключей веб-сервера Apache.

Некоторые представители сообществ по информационной безопасности и физике полупроводников уже знали об эффекте остаточной намагниченности DRAM, об этом было очень мало информации. В итоге, многие, кто проектирует, разрабатывает или использует системы безопасности, просто незнакомы с этим явлением и как легко оно может быть использовано злоумышленником. Насколько нам известно, это первая подробная работа изучающие последствия данных явлений для информационной безопасности.

Атаки на зашифрованные диски

Шифрование жёстких дисков это известный способ защиты против хищения данных. Многие полагают, что системы шифрования жёстких дисков позволят защитить их данные, даже в том случае, если злоумышленник получил физических доступ к компьютеру (собственно для этого они и нужны, прим. ред.). Закон штата Калифорния, принятый в 2002 году, обязывает сообщать о возможных случаях раскрытия персональных данных, только в том случае, если данные не были зашифрованы, т.к. считается, что шифрование данных - это достаточная защитная мера. Хотя закон не описывает никаких конкретных технических решений, многие эксперты рекомендуют использовать системы шифрования жёстких дисков или разделов, что будет считаться достаточными мерами для защиты. Результаты нашего исследования показали, что вера в шифрование дисков необоснованна. Атакующий, далеко не самой высокой квалификации, может обойти многие широко используемые системы шифрования, в случае если ноутбук с данными похищен, в то время когда он был включён или находился в спящем режиме. И данные на ноутбуке могут быть прочитаны даже в том случае, когда они находятся на зашифрованном диске, поэтому использование систем шифрования жёстких дисков не является достаточной мерой.

Мы использовали несколько видов атак на известные системы шифрования жёстких дисков. Больше всего времени заняла установка зашифрованных дисков и проверка корректности обнаруженных ключей шифрования. Получение образа оперативной памяти и поиск ключей занимали всего несколько минут и были полностью автоматизированы. Есть основания полагать, что большинство систем шифрования жёстких дисков подвержены подобным атакам.

BitLocker

BitLocker – система, входящая в состав некоторых версий ОС Windows Vista. Она функционирует как драйвер работающий между файловой системой и драйвером жёсткого диска, шифруя и расшифровывая по требованию выбранные секторы. Используемые для шифрования ключи находятся в оперативной памяти до тех пор, пока зашифрованный диск подмантирован.

Для шифрования каждого сектора жёсткого диска BitLocker использует одну и ту же пару ключей созданных алгоритмом AES: ключ шифрования сектора и ключ шифрования, работающий в режиме сцепления зашифрованных блоков (CBC). Эти два ключа в свою очередь зашифрованы мастер ключом. Чтобы зашифровать сектор, проводится процедура двоичного сложения открытого текста с сеансовым ключом, созданным шифрованием байта смещения сектора ключом шифрования сектора. Потом, полученные данные обрабатываются двумя смешивающими функциями, которые используют разработанный Microsoft алгоритм Elephant. Эти безключевые функции используются с целью увеличения количества изменений всех битов шифра и, соответственно, увеличения неопределённости зашифрованных данных сектора. На последнем этапе, данные шифруются алгоритмом AES в режиме CBC, с использованием соответствующего ключа шифрования. Вектор инициализации определяется путём шифрования байта смещения сектора ключом шифрования, используемом в режиме CBC.

Нами была реализована полностью автоматизированная демонстрационная атака названная BitUnlocker. При этом используется внешний USB диск с ОС Linux и модифицированным загрузчиком на основе SYSLINUX и драйвер FUSE позволяющий подключить зашифрованные BitLocker диски в ОС Linux. На тестовом компьютере с работающей Windows Vista отключалось питание, подключался USB жёсткий диск, и с него происходила загрузка. После этого BitUnlocker автоматически делал дамп оперативной памяти на внешний диск, при помощи программы keyfind осуществлял поиск возможных ключей, опробовал все подходящие варианты (пары ключа шифрования сектора и ключа режима CBC), и в случае удачи подключал зашифрованный диск. Как только диск подключался, появлялась возможность с ним работать как с любым другим диском. На современном ноутбуке с 2 гигабайтами оперативной памяти процесс занимал около 25 минут.

Примечательно, что данную атаку стало возможным провести без реверс-инжиниринга какого-либо ПО. В документации Microsoft система BitLocker описана в достаточной степени, для понимания роли ключа шифрования сектора и ключа режима CBC и создания своей программы реализующей весь процесс.

Основное отличие BitLocker от других программ этого класса – это способ хранения ключей при отключённом зашифрованном диске. По умолчанию, в базовом режиме, BitLocker защищает мастер ключ только при помощи TPM модуля, который существует на многих современных ПК. Данный способ, который, по всей видимости, широко используется, особенно уязвим к нашей атаке, поскольку он позволяет получить ключи шифрования, даже если компьютер был выключен в течение долгого времени, поскольку, когда ПК загружается, ключи автоматически подгружаются в оперативную память (до появления окна входа в систему) без ввода каких-либо аутентификационных данных.

По всей видимости, специалисты Microsoft знакомы с данной проблемой и поэтому рекомендуют настроить BitLocker в улучшенный режим, где защита ключей осуществляется, не только при помощи TPM, но и паролем или ключом на внешнем USB носителе. Но, даже в таком режиме, система уязвима, если злоумышленник получит физический доступ к ПК в тот момент, когда он работает (он даже может быть заблокирован или находиться в спящем режиме, (состояния - просто выключен или hibernate в это случае считаются не подверженными данной атаке).

FileVault

Система FileVault от Apple была частично исследована и проведён реверс-инжиниринг. В Mac OS X 10.4 FileVault использует 128-битный ключ AES в режиме CBC. При введении пароля пользователя, расшифровывается заголовок, содержащий ключ AES и второй ключ K2, используемый для расчёта векторов инициализации. Вектор инициализации для I-того блока диска рассчитывается как HMAC-SHA1 K2(I).

Мы использовали нашу программу EFI для получения образов оперативной памяти для получения данных с компьютера Макинтош (базирующимся на процессоре Intel) с подключённым диском, зашифрованным FileVault. После этого программа keyfind безошибочно автоматически находила AES ключи FileVault.

Без вектора инициализации, но с полученным AES ключом появляется возможность расшифровать 4080 из 4096 байт каждого блока диска (всё кроме первого AES блока). Мы убедились, что инициализационный вектор так же находится в дампе. Предполагая, что данные не успели исказиться, атакующий может определить вектор, поочерёдно пробуя все 160-битовые строки в дампе и проверяя, могут ли они образовать возможный открытый текст, при их бинарном сложении с расшифрованной первой частью блока. Вместе, используя программы типа vilefault, AES ключи и инициализационный вектор позволяют полностью расшифровывать зашифрованный диск.

В процессе исследования FileVault, мы обнаружили, что Mac OS X 10.4 и 10.5 оставляют множественные копии пароля пользователя в памяти, где они уязвимы к данной атаке. Пароли учётных записей часто используются для защиты ключей, которые в свою очередь, могу использоваться для защиты ключевых фраз зашифрованных FileVault дисков.

TrueCrypt

TrueCrypt – популярная система шифрования с открытым кодом, работающая на ОС Windows, MacOS и Linux. Она поддерживает множество алгоритмов, включая AES, Serpent и Twofish. В 4-ой версии, все алгоритмы работали в режиме LRW; в текущей 5-ой версии, они используют режим XTS. TrueCrypt хранит ключ шифрования и tweak ключ в заголовке раздела на каждом диске, который зашифрован другим ключом получающимся из вводимого пользователем пароля.

Мы тестировали TrueCrypt 4.3a и 5.0a работающие под ОС Linux. Мы подключили диск, зашифрованный при помощи 256-битного AES ключа, потом отключили питание и использовали для загрузки собственное ПО для дампа памяти. В обоих случаях, keyfind обнаружила 256-битный неповреждённый ключ шифрования. Так же, в случае TrueCrypt 5.0.a, keyfind смогла восстановить tweak ключ режима XTS.

Чтобы расшифровать диски созданные TrueCrypt 4, необходим tweak ключ режима LRW. Мы обнаружили, что система хранит его в четырёх словах перед ключевым расписанием ключа AES. В нашем дампе, LRW ключ не был искажён. (В случае появления ошибок, мы все равно смогли бы восстановить ключ).

Dm-crypt

Ядро Linux, начиная с версии 2.6, включает в себя встроенную поддержку dm-crypt – подсистемы шифрования дисков. Dm-crypt использует множество алгоритмов и режимов, но, по умолчанию, она использует 128-битный шифр AES в режиме CBC с инициализационными векторами создаваемыми не на основе ключевой информации.

Мы тестировали созданный dm-crypt раздел, используя LUKS (Linux Unified Key Setup) ветку утилиты cryptsetup и ядро 2.6.20. Диск был зашифрован при помощи AES в режиме CBC. Мы ненадолго отключили питание и, используя модифицированный PXE загрузчик, сделали дамп памяти. Программа keyfind обнаружила корректный 128-битный AES ключ, который и был восстановлен без каких-либо ошибок. После его восстановления, злоумышленник может расшифровать и подключить раздел зашифрованный dm-crypt, модифицируя утилиту cryptsetup таким образом, чтобы она воспринимала ключи в необходимом формате.

Способы защиты и их ограничения

Реализация защиты от атак на оперативную память нетривиальна, поскольку используемые криптографические ключи необходимо где-либо хранить. Мы предлагаем сфокусировать усилия на уничтожении или скрытии ключей до того, как злоумышленник сможет получить физический доступ к ПК, предотвращая запуск ПО для дампа оперативной памяти, физически защищая микросхемы ОЗУ и по возможности снижая срок хранения данных в ОЗУ.

Перезапись памяти

Прежде всего, надо по-возможности избегать хранения ключей в ОЗУ. Необходимо перезаписывать ключевую информацию, если она больше не используется, и предотвращать копирование данных в файлы подкачки. Память должна очищаться заблаговременно средствами ОС или дополнительных библиотек. Естественно, эти меры не защитят используемые в данный момент ключи, поскольку они должны храниться в памяти, например такие ключи как, используемые для шифрованных дисков или на защищённых веб серверах.

Так же, ОЗУ должна очищаться в процессе загрузки. Некоторые ПК могут быть настроены таким образом, чтобы очищать ОЗУ при загрузке при помощи очищающего POST запроса (Power-on Self-Test) до того как загружать ОС. Если злоумышленник не сможет предотвратить выполнение данного запроса, то на данном ПК у него не будет возможности сделать дамп памяти с важной информацией. Но, у него всё ещё остаётся возможность вытащить микросхемы ОЗУ и вставить их в другой ПК с необходимыми ему настройками BIOS.

Ограничение загрузки из сети или со съёмных носителей

Многие наши атаки были реализованы с использованием загрузки по сети или со съёмного носителя. ПК должен быть настроен так, чтобы требовать пароль администратора для загрузки с этих источников. Но, необходимо отметить, что даже если система настроена на загрузку только с основного жёсткого диска, атакующий может сменить сам жёсткий диск, или во многих случаях, сбросить NVRAM компьютера для отката на первоначальные настройки BIOS.

Безопасный спящий режим

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

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

Переход в спящий режим можно обезопасить следующими способами: требовать пароль или иной другой секрет чтобы «разбудить» рабочую станцию и шифровать содержимое памяти ключом производным от этого пароля. Пароль должен быть стойким, так как злоумышленник может сделать дамп памяти и после чего попробовать подобрать пароль перебором. Если же шифрование всей памяти невозможно, необходимо шифровать только те области, которые содержат ключевую информацию. Некоторые системы могут быть настроены таким образом, чтобы переходить в такой тип защищённого спящего режима, хотя это обычно и не является настройкой по умолчанию.

Отказ от предварительных вычислений

Наши исследования показали, что использование предварительных вычислений для того, чтобы ускорить криптографические операции делает ключевую информацию более уязвимой. Предварительные вычисления приводят к тому, что в памяти появляется избыточная информации о ключевых данных, что позволяет злоумышленнику восстановить ключи даже в случае наличия ошибок. Например, как описано в разделе 5, информация об итерационных ключах алгоритмов AES и DES крайне избыточна и полезна для атакующего.

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

Расширение ключей

Другой способ предотвратить восстановление ключей – это изменение ключевой информации, хранящейся в памяти, таким образом, чтобы усложнить восстановление ключа из-за различных ошибок. Этот метод был рассмотрен в теории, где была показана функция, стойкая к раскрытию, чьи входные данные остаются сокрытыми, даже если практически все выходные данные были обнаружены, что очень похоже на работу однонаправленных функций.

На практике, представьте, что у нас есть 256-битный AES ключ K, который в данный момент не используется, но понадобится позднее. Мы не можем перезаписать его, но мы хотим сделать его стойким к попыткам восстановления. Один из способов добиться этого – это выделить большую B-битную область данных, заполнить её случайными данными R, после чего хранить в памяти результат следующего преобразования K+H(R) (суммирование двоичное, прим. ред.), где H – это хэш функция, например SHA-256.

Теперь представьте, что электричество было отключено, это приведёт к тому, что d бит в данной области будут изменены. Если хэш функция стойкая, при попытке восстановления ключа K, злоумышленник может рассчитывать только на то, что он сможет угадать какие биты области B были изменены из приблизительно половины, которые могли изменится. Если d бит были изменены, злоумышленнику придётся провести поиск области размером (B/2+d)/d чтобы найти корректные значения R и уже после этого восстановить ключ K. Если область B велика, такой поиск может быть очень долог, даже если d относительно мала.

Теоретически, таким способом можно хранить все ключи, рассчитывая каждый ключ, только когда это нам необходимо, и удаляя его, когда он нам не нужен. Таким образом, применяя вышеописанный метод, мы может хранить ключи в памяти.

Физическая защита

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

Изменение архитектуры

Можно изменить архитектуру ПК. Что невозможно для уже используемых ПК, зато позволит обезопасить новые.

Первый подход заключается в том, чтобы спроектировать DRAM модули таким образом, чтобы они быстрее стирали все данные. Это может быть непросто, поскольку цель как можно более быстрого стирания данных, противоречит другой цели, чтобы данные не пропадали между периодами обновления памяти.

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

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

Доверенные вычисления

Аппаратура, соответствующая концепции «доверенных вычислений», например, в виде TPM модулей уже используется в некоторых ПК. Несмотря на свою полезность в защите от некоторых атак, в своей нынешней форме такое оборудование не помогает предотвратить описанные нами атаки.

Используемые TPM модули не реализуют полное шифрование. Вместо этого, они наблюдают за процессом загрузки для принятия решения о том, безопасно ли загружать ключ в ОЗУ или нет. Если ПО необходимо использовать ключ, то можно реализовать следующую технологию: ключ, в пригодной для использования форме не будет храниться в ОЗУ, до тех пор пока процесс загрузки не пройдёт по ожидаемому сценарию. Но, как только ключ оказывается в оперативной памяти – он сразу становиться мишенью для наших атак. TPM модули могут предотвратить загрузку ключа в память, но они не предотвращают его считывание из памяти.

Выводы

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

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

Похоже что нет простого способа устранить найденные уязвимости. Изменение ПО скорее всего не будет эффективным; аппаратные изменения помогут, но временные и ресурсные затраты будут велики; технология «доверенных вычислений» в её сегодняшней форме так же мало эффективна, поскольку она не может защитить ключи находящиеся в памяти.

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

В итоге, возможно, придётся рассматривать DRAM память как не доверенную компоненту современного ПК, и избегать обработки важной конфиденциальной информации в ней. Но на данный момент это нецелесообразно, до тех пор, пока архитектура современных ПК не изменится, чтобы позволить ПО хранить ключи в безопасном месте.