Дерево страниц

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 17 Следующий »


В данной статье рассматривается использование так называемых "дисков с самошифрованием" и связанные с этим вопросы идентификации пользователей для предоставления доступа к данным.

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

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


Данная статья применима к:

  • ОС ОН Орёл 2.12
  • ОС СН Смоленск 1.6
  • ОС СН Смоленс 8.1 (в части ATA Security)

Накопители данных с "самошифрованием"

Аппаратное защитное преобразование данных на накопителях данных ("самошифруемый диск", в английской литературе применяются термины FDE, Full-Drive Encription или Self-Encrypting Drive, SED, являющиеся синонимами) предоставляется сейчас многими производителями накопителей данных, и позиционируется как общее решение для защиты данных от несанкционированного доступа, в том числе и данных, хранящихся на твердотельных накопителях. В таких устройствах защитное преобразование данных выполняется специализированными встроенными в контроллер устройства микросхемами  "на лету", и все данные на устройстве хранятся преобразованном виде.
Декларируются следующие возможности таких устройств:

  • использование устойчивых к взлому алгоритмов преобразования AES 128 бит / AES 256 бит;
  • невозможность извлечение ключей шифрования из устройства;
  • возможность мгновенного  "удаления" всех хранящихся данных простой заменой внутреннего ключа, после чего все данные становтся не подлежащими восстановлению;

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

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

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

    • TCG OPAL - решение , предусматривающее установку на накопитель предзагрузочного ПО, запускающегося при первом включении устройства для инициализации параметров безопасности, и, далее, при каждом включении устройства, для идентификации пользователя и разблокировки устройства;

Так как носители автоматически блокируются при отключении электропитания, данные технологии идентификации несовместимы с режимами пониженного энергопотребления компьютеров, при которых обесточиваются подключенные периферийные устройства (S3 («Suspend to RAM» (STR) в BIOS, «Ждущий режим» («Standby») ).

АTA Security

Установка ПО и проверка соответствия оборудования

Для проверки параметров накопителя выполняется инструментом командной строки hdparm, входящим в пакет hdparm. Пакет доступен в дистрибутиве/репозитории ОС ОН Орёл 2.12 и в дистрибутивах ОС СН Смоленск 1.6 и ОС СН Ленинград 8.1.
Установить пакет можно их графического менеджера пакетов или из командной строки

sudo apt install hdparm
Подробные параметры накопителя выводятся командой (пример для накопителя /dev/sda):
sudo hdparm -I /dev/sda
Пример полного вывода команды:

$ sudo hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
        Model Number: TOSHIBA HDWD110
        Serial Number: X7HW1XWFS
        Firmware Revision: MS2OA8J0
        Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0; Revision: ATA8-AST T13 Project D1697 Revision 0b
Standards:
        Used: unknown (minor revision code 0x0029)
        Supported: 8 7 6 5
        Likely used: 8
Configuration:
        Logical max current
        cylinders 16383 16383
        heads 16 16
        sectors/track 63 63
        --
        CHS current addressable sectors: 16514064
        LBA user addressable sectors: 268435455
        LBA48 user addressable sectors: 1953525168
        Logical Sector size: 512 bytes
        Physical Sector size: 4096 bytes
        Logical Sector-0 offset: 0 bytes
        device size with M = 1024*1024: 953869 MBytes
        device size with M = 1000*1000: 1000204 MBytes (1000 GB)
        cache/buffer size = unknown
        Form Factor: 3.5 inch
        Nominal Media Rotation Rate: 7200
Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 32
        Standby timer values: spec'd by Standard, no device specific minimum
        R/W multiple sector transfer: Max = 16 Current = 16
        Advanced power management level: disabled
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
        Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4
        Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
        Enabled Supported:
                * SMART feature set
                  Security Mode feature set
                * Power Management feature set
                * Write cache
                * Look-ahead
                * Host Protected Area feature set
                * WRITE_BUFFER command
                * READ_BUFFER command
                * NOP cmd
                * DOWNLOAD_MICROCODE
                  Advanced Power Management feature set
                  Power-Up In Standby feature set
                * SET_FEATURES required to spinup after power up
                  SET_MAX security extension
                * 48-bit Address feature set
                * Device Configuration Overlay feature set
                * Mandatory FLUSH_CACHE
                * FLUSH_CACHE_EXT
                * SMART error logging
                * SMART self-test
                  Media Card Pass-Through
                * General Purpose Logging feature set
                * WRITE_{DMA|MULTIPLE}_FUA_EXT
                * 64-bit World wide name
                * URG for READ_STREAM[_DMA]_EXT
                * URG for WRITE_STREAM[_DMA]_EXT
                * WRITE_UNCORRECTABLE_EXT command
                * {READ,WRITE}_DMA_EXT_GPL commands
                * Segmented DOWNLOAD_MICROCODE
                  unknown 119[7]
                * Gen1 signaling speed (1.5Gb/s)
                * Gen2 signaling speed (3.0Gb/s)
                * Gen3 signaling speed (6.0Gb/s)
                * Native Command Queueing (NCQ)
                * Host-initiated interface power management
                * Phy event counters
                * NCQ priority information
                  Non-Zero buffer offsets in DMA Setup FIS
                * DMA Setup Auto-Activate optimization
                  Device-initiated interface power management
                 In-order data delivery
                * Software settings preservation
                * SMART Command Transport (SCT) feature set
                * SCT Write Same (AC2)
                * SCT Error Recovery Control (AC3)
                * SCT Features Control (AC4)
                * SCT Data Tables (AC5)
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.
Logical Unit WWN Device Identifier: 5000039fd3cc4d45
        NAA : 5
        IEEE OUI : 000039
        Unique ID : fd3cc4d45
Checksum: correct

Информация о поддерживаемых параметрах безопасности 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 ... suported"), которая на момент регистрации параметров накопителя отключена ("not enabled").

Установка пароля

При установке пароля следует помнить, что:

  • На устройствах, подключенных через USB, снятие пароля может не работать;
  • При загрузке компьютера некоторые BIOS-ы и/или операционные системы выдают всем подключенным дискам команды, запрещающие изменение параметров безопасности (до момента перезапуска по питанию).
    Поэтому для снятия пароля может понадобиться "горячее" подключение диска к уже загруженному компьютеру;

Установка пользовательского пароля выполняется командой (в примере - установка пароля 12345678 на устройство /dev/sdb) :

sudo hdparm --user-master u --security-set-pass 12345678 /dev/sdb

Разблокировка

После подключения диска разблокировка диска (действующая до следующего отключения питания) осуществляется командой (для примера используется пароль 12345678):

sudo hdparm --user-master u --security-unlock 12345678 /dev/sdb

Отключение блокировки

Полностью отключить блокировку можно командой:

sudo hdparm --user-master u --security-disable 12345678 /dev/sdb

TCG OPAL

Программное обеспечение для реализации режима защиты данных FDE не является сертифицированным решением, и не входит в репозитории и дистрибутивы ОС Astra Linux.

При работе ПО  используются специальные служебные команды  ATA (TPM), использование которых по умолчанию запрещено в параметрах ядра (точнее, в параметрах входящей в ядро библиотеки libata). И, как указано в документации к библиотеке libata, разрешение этих команд

"... обеспечивает по сути неконтролируемый зашифрованный "черный ход" между приложениями и диском. Устанавливайте libata.allow_tpm = 1, только если вы имеете для этого реальную причину...".
Данная статья является переводом инструкций производителя.

Для пользователей с нестандартными клавиатурами

Рассматриваемое ПО предполагает, что всегда используется стандартная клавиатура us_english. Это может привести к проблемам при использовании других раскладок клавиатуры.
Для того, чтобы убедиться, что пароль распознаётся правильно, рекомендуется настраивать диск с использованием загрузки временной системы как описано далее.

Подготовка загрузочной системы

Скачать образ загрузочной системы: для  BIOS и для 64bit UEFI.

Это можно сделать командами

wget -O RESCUE32.img.gz https://github.com/Drive-Trust-Alliance/exec/blob/master/RESCUE32.img.gz?raw=true
или
wget -O RESCUE64.img.gz https://github.com/Drive-Trust-Alliance/exec/blob/master/RESCUE64.img.gz?raw=true

Для использования UEFI необходимо отключить Secure Boot.


Распаковать скачанные файлы:

gunzip RESCUE32.img.gz
или
gunzip RESCUE64.img.gz
Подключить USB-накопитель и скопировать на него распакованный образ,  указав название устройства:

Данная операция полностью уничтожит данные на накопителе.

dd if=RESCUE32.img of=/dev/sd?
или
dd if=RESCUE64.img of=/dev/sd?
Перезагрузить компьютер с созданного накопителя.

После появления приглашения 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? и правильный образ.

Включение блокировки и предзагрузочной авторизации

Введите следующие команды  (для теста используется пароль debug, который будет изменён позднее):

Данная операция полностью уничтожит данные на накопителе.

sedutil-cli --initialsetup debug /dev/sdc
sedutil-cli --enablelockingrange 0 debug /dev/sdc
sedutil-cli --setlockingrange 0 lk debug /dev/sdc
sedutil-cli --setmbrdone off debug /dev/sdc
# Укажите правильное имя образа
gunzip /usr/sedutil/UEFI64-n.nn.img.gz
# Укажите правильное имя диска
sedutil-cli --loadpbaimage debug /usr/sedutil/UEFI64-n.nn.img /dev/sdc


Пример выполнения:

#sedutil-cli --initialsetup debug /dev/sdc
- 14:06:39.709 INFO: takeOwnership complete
- 14:06:41.703 INFO: Locking SP Activate Complete
- 14:06:42.317 INFO: LockingRange0 disabled
- 14:06:42.694 INFO: LockingRange0 set to RW
- 14:06:43.171 INFO: MBRDone set on
- 14:06:43.515 INFO: MBRDone set on
- 14:06:43.904 INFO: MBREnable set on
- 14:06:43.904 INFO: Initial setup of TPer complete on /dev/sdc

#sedutil-cli --enablelockingrange 0 debug /dev/sdc
- 14:07:24.914 INFO: LockingRange0 enabled ReadLocking,WriteLocking

#sedutil-cli --setlockingrange 0 lk debug /dev/sdc
- 14:07:46.728 INFO: LockingRange0 set to LK

#sedutil-cli --setmbrdone off debug /dev/sdc
- 14:08:21.999 INFO: MBRDone set off

#gunzip /usr/sedutil/UEFI64-1.15.img.gz

#sedutil-cli --loadpbaimage debug /usr/sedutil/UEFI64-1.15.img /dev/sdc
- 14:10:55.328 INFO: Writing PBA to /dev/sdc 33554432 of 33554432 100% blk=1500 - 14:14:04.499 INFO: PBA image /usr/sedutil/UEFI64.img written to /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 --setsidpassword debug yourrealpassword /dev/sdc
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
Примерный диалог

#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 -–disableLockingRange 0 <password> <drive>
sedutil-cli –-setMBREnable off <password> <drive>
Примерный диалог:

#sedutil-cli --disablelockingrange 0 debug /dev/sdc
- 14:07:24.914 INFO: LockingRange0 disabled
#sedutil-cli --setmbrenable off debug /dev/sdc
- 14:08:21.999 INFO: MBREnable set off

Восстановление блокировки и предзагрузочной авторизации

sedutil-cli -–enableLockingRange 0 <password> <drive>
sedutil-cli –-setMBREnable on <password> <drive>
Примерный диалог:

#sedutil-cli --enablelockingrange 0 debug /dev/sdc
- 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 --revertnoerase <password> <drive>
sedutil-cli --reverttper <password> <drive>

Примерный диалог:

#sedutil-cli --revertnoerase debug /dev/sdc
- 14:22:47.060 INFO: Revert LockingSP complete
#sedutil-cli --reverttper debug /dev/sdc
- 14:23:13.968 INFO: revertTper completed successfully
#

Уязвимости

Уязвимость "сохранение питания"

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

Скомпрометированное встроенное ПО

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

  • Нет меток