В данной статье рассматривается использование встроенной аппаратной защиты накопителей данных ("дисков с самошифрованием"), и связанные с этим вопросы аутентификации пользователей для предоставления доступа к данным.
Описанные в данной статье решения для защиты данных не являются сертифицированными решениями, подвержены уязвимостям, и могут обладать недокументированными возможностями, позволяющими получать несанкционированный доступ к защищаемым данным.
Чтобы не вводить читателей в заблуждение, в данной статье по возможности не употребляется термин "шифрование", а если исключить этот термин не представляется возможным, то термин употребляется исключительно в смысле "защитное преобразование данных".
Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1
- Astra Linux Special Edition РУСБ.10015-16 исп. 2
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
- Astra Linux Common Edition 2.12
Так как носители автоматически блокируются при отключении электропитания, рассматриваемые в данной статье технологии защиты данных несовместимы с режимами пониженного энергопотребления компьютеров, при которых сохраняется электропитание (и, соответственно, содержимое) оперативной памяти, а подключенные накопители обесточиваются (режимы S1, S2, S3 («Suspend to RAM» (STR) в BIOS, «Ждущий режим» («Standby») ), так как при выходе системы из режима пониженного энергопотребления данные на накопителях окажутся заблокированными, что для сохранённой в оперативной памяти операционной системы будет выглядеть как потеря доступа к накопителю. При использовании рассматриваемых технологий защиты эти режимы пониженного энергопотребления следует отключить, однако можно использовать режим S4 («Suspend to disk» (STD)), так как в этом режиме содержимое оперативной памяти будет сохранено на накопителе, и может быть восстановлено с него после включения и разблокировки накопителя.
Накопители данных с "самошифрованием"
Аппаратное защитное преобразование данных на накопителях данных ("самошифруемый диск", в английской литературе применяются термины Full-Drive Encription (FDE) или Self-Encrypting Drive (SED), являющиеся синонимами) предоставляется сейчас многими производителями накопителей данных, и позиционируется как общее решение для защиты данных от несанкционированного доступа, в том числе и данных, хранящихся на твердотельных накопителях. В таких устройствах защитное преобразование данных выполняется специализированными встроенными в контроллер устройства микросхемами "на лету", и все данные на устройстве хранятся преобразованном виде.
Декларируются следующие возможности таких устройств:
- использование алгоритмов преобразования AES 128 бит / AES 256 бит;
- невозможность извлечение ключей защитного преобразования из устройства;
- возможность мгновенного "удаления" всех хранящихся данных простой заменой внутреннего ключа защитного преобразования, после чего все данные становятся не подлежащими восстановлению;
Основные методы защиты данных
Для разграничения доступа к данным, хранящимся в накопителях, требуется использовать механизмы идентификации пользователей. Для этого применяются два основных решения:
- ATA Security - встроенная блокировка/разблокировка накопителя с помощью задаваемого пользователем пароля, передаваемого через команды интерфейса ATA.
Этот метод широко распространён, поддерживается большинством накопителей, и никак не привязан к наличию или отсутствию в накопителе встроенного преобразования данных; - TCG OPAL - решение, предусматривающее установку на накопитель специального ПО, обеспечивающего инициализацию и настройку параметров безопасности, и, далее, при каждом включении устройства, обеспечивающего идентификацию пользователя и разблокировку устройства. При этом доступ защищается паролем, а накопитель после включения и до ввода пароля предоставляет в качестве своего содержимого не реально хранимые данные, а специальный "теневой" (shadow) загрузочный раздел, обеспечивающий загрузку ПО авторизации и перезапуск системы уже с разблокированным реальным содержимым накопителя. При этом спецификации OPAL включают в себя и требования к защитному преобразованию данных, хранящихся в накопителе.
Описанные ниже способы защиты данных ATA Security и TCG OPAL блокируют накопитель при его обесточивании. Следует помнить, что, данные, находящиеся на включенном накопителе после разблокировки ничем не защищены пока накопитель включён, а физическая реализация разъёмов SATA (отдельный кабель электропитания и отдельный кабель данных) при наличии физического доступа к оборудованию предоставляет удобную возможность переподключить накопитель к другой шине данных не отключая его электропитание, и, таким образом, получить полный доступ к данным. Для предотвращения возможности такого рода атак следует обеспечить принудительное полное обесточивание накопителей при вскрытии корпуса.
АTA Security
Режим защиты данных ATA Security не является сертифицированным решением защиты данных.
Установка ПО и проверка соответствия оборудования
Для проверки параметров накопителя выполняется инструментом командной строки hdparm, входящим в пакет hdparm. Пакет доступен в дистрибутивах/репозиториях ОС Astra Linux.
Установить пакет можно из графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки
Информация о поддерживаемых параметрах безопасности ATA Security содержится в секции "Security":
...
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
not supported: enhanced erase
156min for SECURITY ERASE UNIT.
....
В приведённом примере указано, что поддерживается защита по парольному доступу ("Master password ... supported"), которая на момент регистрации параметров накопителя отключена ("not enabled").
Кроме того в вышеприведённых данных о состоянии накопителя указано, что изменение параметров безопасности заблокировано (строка "frozen"). Эта блокировка автоматически выполняется при загрузке системы большинством современных BIOS-ов и/или операционных систем для того, чтобы в процессе работы ОС вредоносное ПО не смогло несанкционированно установить свои пароли на накопитель, заблокировав доступ ко всем находящимся на нём данные.
Установка пароля
При установке пароля следует помнить, что:
- На устройствах, подключенных через USB, снятие пароля может не работать;
- При загрузке компьютера некоторые BIOS-ы и/или операционные системы выдают всем подключенным дискам команды, запрещающие изменение параметров безопасности (до момента перезапуска по питанию).
На таких системах для снятия/установки пароля понадобится выполнить "горячее" подключение диска к уже загруженному и работающему компьютеру;
Установка пользовательского пароля выполняется командой (в примере - установка пароля 12345678 на устройство /dev/sdb) :
Блокировка
Блокировка данных включается отключением электропитания диска.
При написании этой статьи было обнаружено, что блокировку можно включить программным удалением диска, однако гарантировать, что это будет так же работать на всех компьютерах не представляется возможным (приведена команда для диска sdb):
echo 1 >/sys/block/sdb/device/delete
exit
Разблокировка
Горячее подключение
Горячее подключение накопителей SATA корректно поддерживается большинством современных накопителей и контроллеров. Однако, после подключения накопителя для его обнаружения операционной системой необходимо выполнить сканирование дисков.
Это можно сделать из сессии суперпользователя:
echo "- - -" > /sys/class/scsi_host/hostX/scan
exit
После подключения и обнаружения накопителя и до его разблокировки данные, находящиеся на этом накопителе будут недоступны.
Разблокировка данных (действующая до следующего отключения питания) осуществляется командой (для примера используется пароль 12345678):
Отключение блокировки
Полностью отключить блокировку можно командой:
Для пользователей с нестандартными клавиатурами
Рассматриваемое ПО предполагает, что всегда используется стандартная клавиатура us_english. Это может привести к проблемам при использовании других раскладок клавиатуры.
Для того, чтобы убедиться, что пароль распознаётся правильно, рекомендуется настраивать диск с использованием загрузки временной системы как описано далее.
Описанная ниже процедура с использованием загрузки с временного диска позволяет установить защиту на загрузочный диск, в том числе на загрузочный диск, на котором уже установлена ОС.
В проведённых экспериментах ранее установленная ОС остаётся работоспособной (естественно, при условии разблокировки диска после включения), однако не забывайте сделать резервную копию.
Защиту незагрузочных дисков можно включать/выключать непосредственно из ОС предварительно разрешив использование команд ATA TPM
Cоответствующие иструменты командной строки доступны по ссылке https://github.com/Drive-Trust-Alliance/sedutil/wiki/Executable-Distributions.
Для разрешения команд ATA TPM:
Установить параметр ядра allow_tpm = 1 в файле /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash libata.allow_tpm=1"Обновить загрузчик:
sudo update-grub- Перезагрузить систему.
Подготовка загрузочной системы
Скачать образ загрузочной системы: для BIOS и для 64bit UEFI.
Это можно сделать командами
Для использования UEFI необходимо отключить Secure Boot.
Распаковать скачанные файлы загрузочных образов:
После появления приглашения Login ввести "root" без пароля.
Все дальнейшие шаги выполняются во временной системе
Проверка накопителей
Ввести команду
sedutil-cli --scan
Предполагаемый вывод команды:
#sedutil-cli --scan
Scanning for Opal compliant disks
/dev/nvme0 2 Samsung SSD 960 EVO 250GB 2B7QCXE7
/dev/sda 2 Crucial_CT250MX200SSD1 MU04
/dev/sdb 12 Samsung SSD 850 EVO 500GB EMT01B6Q
/dev/sdc 2 ST500LT025-1DH142 0001SDM7
/dev/sdd 12 Samsung SSD 850 EVO 250GB EMT01B6Q
No more disks present ending scan
Наличие цифры 2 во второй колонке указывает на то, что накопитель поддерживает OPAL 2, и что с ним можно выполнять дальнейшие действия.
Применение дальнейших инструкций к накопителям, не поддерживающим OPAL2, может привести к потере хранящихся на них данных.
Проверка предзагрузочной авторизации (PBA)
Используем команду linuxpba с паролем debug.
При использовании иного пароля система перезагрузится.
Пример вывода команды:
#linuxpba
DTA LINUX Pre Boot Authorization
Please enter pass-phrase to unlock OPAL drives: *****
Scanning....
Drive /dev/nvme0 Samsung SSD 960 EVO 250GB is OPAL NOT LOCKED
Drive /dev/sda Crucial_CT250MX200SSD1 is OPAL NOT LOCKED
Drive /dev/sdb Samsung SSD 850 EVO 500GB is OPAL NOT LOCKED
Drive /dev/sdc ST500LT025-1DH142 is OPAL NOT LOCKED
Drive /dev/sdd Samsung SSD 850 EVO 250GB is OPAL NOT LOCKED
Убедитесь, что ваш накопитель представлен в списке и отмечен как "is OPAL".
Далее описаны действия по включению блокировки OPAL. В случае возникновения проблем используйте инструкции из раздела "Восстановление информации" для отключения или удаления блокировки.
Далее в примерах предполагается использование накопителя /dev/sdc и архива загрузочного образа /usr/sedutil/UEFI64-1.15.img.gz (архивы образов находятся на загрузочном диске с временной системой).
Для использования в вашей системе укажите правильное устройство /dev/sd? и правильный образ.
Включение блокировки и предзагрузочной авторизации
В установленном загрузочном образе для временной загрузки находится запакованный образ загрузочного сектора.
При первом использовании его следует распаковать:
gunzip /usr/sedutil/UEFI64-n.nn.img.gz
# Следующие команды нужны только для загрузочных дисков и необязательны для незагрузочных
sedutil-cli --loadPBAimage debug /usr/sedutil/UEFI64-n.nn.img /dev/sdc
sedutil-cli --setMBREnable on debug /dev/sdc
Повторная проверка PBA
Повторная проверка позволяет убедиться, что накопитель действительно разблокирован.
Для проверки используется команда и пароль debug. Предполагаемый результат:
#linuxpba
DTA LINUX Pre Boot Authorization
Please enter pass-phrase to unlock OPAL drives: *****
Scanning....
Drive /dev/nvme0 Samsung SSD 960 EVO 250GB is OPAL NOT LOCKED
Drive /dev/sda Crucial_CT250MX200SSD1 is OPAL NOT LOCKED
Drive /dev/sdb Samsung SSD 850 EVO 500GB is OPAL NOT LOCKED
Drive /dev/sdc ST500LT025-1DH142 is OPAL Unlocked <---Важно!!!
Drive /dev/sdd Samsung SSD 850 EVO 250GB is OPAL NOT LOCKED
Убедитесь, что накопитель действительно разблокирован (помечен как "is OPAL Unlocked").
Если накопитель не разблокирован, то перейдите к процедуре разблокировки и отключения OPAL.
Установка реальных паролей
В примере используются одинаковые пароли SID и Admin1, хотя они не обязательно должны совпадать.
Команды для установки паролей:
sedutil-cli --setadmin1pwd debug yourrealpassword /dev/sdc
#sedutil-cli --setsidpassword debug yourrealpassword /dev/sdc
#sedutil-cli --setadmin1pwd debug yourrealpassword /dev/sdc
- 14:20:53.352 INFO: Admin1 password changed
Проверьте правильность паролей командой:
#sedutil-cli --setmbrdone on yourrealpassword /dev/sdc
- 14:22:21.590 INFO: MBRDone set on Your drive in now using OPAL locking.
Следующим шагом следует отключить и полностью обесточить систему.
После отключения питания накопитель будет заблокирован и переведён в режим загрузки предзагрузочной авторизации с запросом пароля (PBA) при следующих включениях.
Восстановление информации
В случае возникновения проблем с помощью загрузочного накопителя можно отключить блокировку или полностью удалить OPAL для дальнейшего использования накопителя без блокировки.
Отключение блокировки и предзагрузочной авторизации
sedutil-cli –-setMBREnable off <password> <drive>
- 14:07:24.914 INFO: LockingRange0 disabled
#sedutil-cli --setmbrenable off debug /dev/sdc
- 14:08:21.999 INFO: MBREnable set off
Восстановление блокировки и предзагрузочной авторизации
sedutil-cli –-setMBREnable on <password> <drive>
- 14:07:24.914 INFO: LockingRange0 enabled ReadLocking,WriteLocking
#sedutil-cli --setmbrenable on debug /dev/sdc
- 14:08:21.999 INFO: MBREnable set on
Полное удаление OPAL
Некоторые накопители OPAL имеют ошибку во встроенном ПО, ведущую к уничтожению данных при выполнении указанных далее команд.
Список проверенных накопителей, не подверженных этой ошибке доступен по ссылке.
sedutil-cli --reverttper <password> <drive>
- 14:22:47.060 INFO: Revert LockingSP complete
#sedutil-cli --reverttper debug /dev/sdc
- 14:23:13.968 INFO: revertTper completed successfully
#
Уязвимости
Уязвимость "сохранение питания"
Типичный самозащищенный накопитель, будучи однажды разблокированным, остаётся разблокированным пока на него подается электропитание. Таким образом, при условии сохранении питания, накопитель может быть перенесен куда угодно, оставаясь в разблокированном состоянии. Например, было показано, что при некоторых условиях компьютер может быть перезагружен с запуском другой операционной системы, также демонстрировался перенос накопителя на другой компьютер без отключения питания.
Скомпрометированное встроенное ПО
Встроенное программное обеспечение накопителя может иметь недокументированные возможности, позволяющие получать несанкционированный доступ к данным, а применяемые алгоритмы защитного преобразования остаются на усмотрение производителей.