В прошлом году мы провели подробное исследование технологии шифрования, использующейся в сетевых хранилищах от Synology. Единственный слой защиты в виде шифрования сетевых папок не убедил ни предлагаемым уровнем комфорта, ни обеспечиваемым уровнем безопасности. Оптимальным с точки зрения безопасности оказалось бы многоуровневая защита, комбинирующая шифрование диска с шифрованием сетевых папок. Именно так реализована защита данных в сетевых хранилищах QNAP.
Рынок «домашних» сетевых хранилищ насыщен предложениями. Здесь и «домашние» устройства WD My Cloud Home, и более консервативные модели, нацеленные на энтузиастов и сегмент SOHO, от Synology, QNAP и Asustor.
В моделях всех производителей, за исключением «домашних» устройств Western Digital, поддерживается шифрование данных по алгоритму AES-256. Несмотря на использование одного и того же алгоритма, детали реализации у разных производителей могут отличаться настолько, что сравнивать между собой различные схемы можно весьма условно. Так, в компании Synology сделали ставку на шифрование сетевых папок – eCryptFS и обнаруженная в DSM уязвимость в управлении депонированными ключами. В QNAP пошли другим путём.
В современных моделях QNAP, работающих под управлением актуальных версий QTS, может использоваться не один, а целых три варианта шифрования, из которых можно использовать хоть любой на выбор, хоть все вместе в любых комбинациях. Перечислю доступные методы:
Шифрование по методу self-encrypting drive — SED — возможно при использовании специфических моделей дисков, шифрование которых реализовано аппаратно в рамках контроллера и поддерживается прошивкой. Последняя ремарка имеет значение: подавляющее большинство современных контроллеров обладает возможностью аппаратного шифрования, но возможность эта активируется лишь в моделях, предназначенных для специфических применений. Эти применения далеко не всегда подразумевают использование в датацентрах. К примеру, популярные внешние диски WD My Cloud поставляются с дисками, в которых функция SED активирована.
К сожалению, свободного диска с SED для экспериментов у нас не нашлось, поэтому протестировать работу функции в NAS от QNAP в лаборатории не удалось.
Интересный момент: шифрование SED в NAS от QNAP можно использовать для создания полностью зашифрованных многодисковых пулов хранения. На таком зашифрованном пуле хранения можно затем создать обычный или зашифрованный логический раздел.
Согласно документации, в QTS существует возможность сохранить ключ шифрования для автоматического монтирования пула SED при загрузке устройства. При сохранении ключа необходимо понимать, что сохранение ключа шифрования может привести к несанкционированному доступу к данным, если у злоумышленника будет физический доступ к NAS.
В QNAP впервые была реализована именно защита на уровне тома. Этот тип защиты доступен для большинства накопителей QNAP, как тех, что оснащены процессорами Intel, так и основанных на архитектуре ARM.
Зашифрованный том можно создать как в виде статичного раздела, так и в виде раздела, созданного поверх пула хранения (в том числе зашифрованного SED). Шифрование тома – прекрасный первый слой шифрования, который работает на любых дисках, даже тех, которые не поддерживают SED. Обратная сторона – скорость: при использовании шифрования тома наблюдается небольшая потеря производительности, а время, требующееся накопителю для любых операций с зашифрованным разделом, исчисляется в минутах.
Шифрование тома: основные концепции
Шифрование тома реализовано на основе шифра AES-256 посредством стандартного механизма cryptsetup (LUKS) с одним исключением: пароль пользователя преобразуется в криптографический ключ посредством утилиты storage_util собственной разработки QNAP. Соответственно, чтобы смонтировать зашифрованный раздел за пределами NAS от QNAP, необходимо провести преобразование, воспользовавшись совместимым NAS от QNAP (это не обязательно должно быть то же устройство, на котором был создан том). Найти эквивалент этой утилите в Linux не удалось.
Реализация: cryptsetup (LUKS); утилита собственной разработки (storage_util) для преобразования пароля в ключ.
Шифрование тома с данными: нет. Зашифровать можно только новый том при его создании.
Расшифровка тома с данными: нет. Можно лишь удалить том и создать его заново.
Смена или отзыв скомпрометированного пароля: да. Пароль можно сменить в любой момент. Процесс длительный (порядка 5 минут), но возможный.
Ключ шифрования: пароль (преобразовывается собственной утилитой от QNAP) или файл с ключом размером 256 байт.
Потенциальные уязвимости: см. раздел «сохранение ключей».
Зашифрованный том можно заблокировать, в результате чего том будет размонтирован. Этот процесс занимает длительное время (порядка 5 минут на нашей тестовой системе QNAP TS-453Be). Вероятно, с точки зрения разработчиков блокировка зашифрованного тома не является рутинной операцией и, соответственно, не нуждается в оптимизации.
Ключ шифрования можно сохранить в файл с расширением .key и размером 256 байт. Способ преобразования ключа LUKS в содержимое файла не исследовался. Содержимое файла меняется каждый раз при его сохранении, поэтому определить, меняется ли ключ после изменения пароля, не удалось.
Разблокировать том можно вводом пароля или предоставлением файла с ключом.
Разблокировка тома на тестовом устройстве QNAP TS-453Be занимает порядка 5 минут. Это – ещё одна операция, которую пользователи не будут проделывать регулярно, а посему в оптимизации не нуждающаяся.
Пароль шифрования можно сменить через пользовательский интерфейс. Смена пароля также относится к вещам, которые пользователи не будут проделывать регулярно, а посему очевидно не нуждающимся в оптимизации. Смена пароля требует размонтирования зашифрованного тома (5 минут) и его последующего монтирования (ещё 5 минут). Итого – 10 минут на смену пароля.
Как уже было сказано выше, QNAP использует механизм cryptsetup и шифр AES-256. Подробные инструкции по монтированию зашифрованных томов есть на странице Mounting QNAP encrypted volumes; пароль для этого необходим.
Пароль пользователя нельзя передать непосредственно утилите cryptsetup; он должен быть предварительно закодирован утилитой storage_util собственной разработки QNAP:
# /sbin/storage_util --encrypt_pwd pwd=YOUR_PASSWORD
Утилита вернёт закодированный ключ (пример с форума QNAP):
Encrypted passwd is: $1$YCCaQNAP$11Ny1/mqEz2frukTALsHp/
Закодированный пароль можно указать в команде cryptsetup luksOpen.
cryptsetup luksOpen /dev/mapper/cachedev1 myencrypteddisk
Альтернативный способ – сохранить пароль в файле ключа:
/sbin/storage_util --encrypt_pwd pwd=YOUR_PASSWORD > /tmp/keyfile.key
Обратите внимание: это не тот ключ, который можно сохранить из веб-интерфейса QTS! Данный ключ можно использовать следующим образом:
cryptsetup -v luksOpen /dev/mapper/cachedev1 ce_cachedev1 --key-file=/keylocation/keyfile.key --key-slot 0
На форумах QNAP можно найти дополнительную информацию:
Шифрование сетевых папок появилось в QTS относительно недавно. Поддерживается этот способ шифрования только в NAS с процессорами на архитектуре x64. Изначально возможности создать зашифрованную сетевую папку на зашифрованном томе не существовало, и пользователю приходилось выбирать, какой из двух типов шифрования использовать. С недавних пор это ограничение сняли, и зашифрованные папки стало возможным создавать и на зашифрованных томах – что мы и проверим далее.
Шифрование сетевых папок: основные концепции
Шифрование папок реализовано посредством eCryptFS, и использует алгоритм AES-256. Ключ шифрования создаётся единожды на основе пароля, указанного пользователем. Сменить пароль нельзя, зато QTS позволяет расшифровать зашифрованную папку или зашифровать обычную. Таким образом, время, требующееся для смены пароля, находится в прямой зависимости от объёма данных в сетевой папки, и может занять от нескольких секунд до нескольких дней. Помимо пароля пользователь может сохранить файл с ключом шифрования (файл без расширения, 256 байт). Ключ шифрования можно сохранить на устройстве (см. раздел «Сохранение ключей»).
Механизм: eCryptFS.
Шифрование папок с данными: да.
Расшифровка зашифрованных папок: да.
Смена или отзыв скомпрометированного пароля: нет. Пользователю предлагается сначала расшифровать, а потом снова зашифровать сетевую папку.
Ключи шифрования: пароль или файл с ключом.
Потенциальные уязвимости: см. раздел «Сохранение ключей».
Сетевая папка может быть зашифрована как в процессе создания, так и в любой последующий момент.
Пользователи могут скачать файл с ключом шифрования. Название файла “foldername_keyfile” с пустым расширением. Длина – 256 байт. Если файл с ключом запросить и скачать несколько раз, его содержимое будет отличаться.
Существует возможность сохранить ключ на устройстве для автоматического монтирования зашифрованных папок в процессе загрузки NAS. Это – потенциальная уязвимость, подробнее о которой мы поговорим в соответствующем разделе.
Зашифрованные папки можно блокировать и разблокировать в любой момент. В отличие от операций с зашифрованными томами, монтирование и размонтирование зашифрованных сетевых папок происходят практически мгновенно.
Использование eCryptFS накладывает ряд ограничений, о некоторых из которых QTS предупредит пользователя.
А вот о том, что ограничения касаются и длины файла, система не предупреждает. Сравним с сообщением, которое выдаёт Synology DSM:
Проверка показала: файлы, длина имён которых превышает указанные цифры, создать в зашифрованной папке не удалось.
QNAP – единственный из известных нам производителей, поддерживающих в потребительских моделях многослойное шифрование. Попытка смонтировать зашифрованную папку при заблокированном зашифрованном томе ожидаемо окончилась ошибкой:
Что произойдёт с производительностью, если включить одновременно и шифрование тома, и шифрование сетевых папок? Большого падения скорости не замечено, по крайней мере, при использовании гигабитного сетевого линка.
Обычная сетевая папка на обычном томе
Чтение: 96 МБ/с, запись: 115 МБ/с
Обычная сетевая папка на зашифрованном томе
Чтение: 96 МБ/с, запись: 107 МБ/с
Зашифрованная сетевая папка на зашифрованном томе
Чтение: 96 МБ/с, запись: 95 МБ/с (наблюдались пиковые скорости порядка 100 МБ/с)
Сложно сказать, что именно в системе не позволило скорости чтения подняться сверх 96 МБ/с, однако по скорости записи можно пронаблюдать эффект, который оказывает на скорость дисковой подсистемы каждый последующий слой шифрования. Негативное влияние на скорость дисковых операций относительно невелико даже при использовании зашифрованных папок на зашифрованном томе.
«Сохранение ключа шифрования может привести к несанкционированному доступу к данным, если посторонний персонал сможет физически получить доступ к NAS». Это предупреждение находится на каждой странице документации QNAP, в которой упоминается сохранение ключа шифрования.
Ключи шифрования можно сохранять для всех поддерживаемых устройством типов защиты – от SED до шифрования сетевых папок включительно. При этом не предусмотрено возможности сохранить ключ на USB накопителе, защитив его дополнительно паролем, как это сделано в Synology. Ключ всегда сохраняется на устройстве. Где именно? «Секрет». Такова официальная позиция разработчиков QTS. Как известно, security through obscurity – прекрасная концепция, никогда не дающая сбоев; именно её придерживается компания QNAP в вопросе шифрования данных. Впрочем, в нашем случае концепция сработала: дважды (до и после сохранения ключа) загружать NAS с USB-накопителя и создавать образ хранилища DOM мы не стали, поэтому секретное место, в котором сохраняются ключи, так и осталось секретным.
В сетевых хранилищах QNAP реализована многослойная защита, которая позволяет защититься от более широкого спектра угроз, чем любой единственный слой. В свежих сборках QTS пользователю более не приходится выбирать между шифрованием тома и шифрованием сетевых папок – две эти возможности, которые защищают от разных сценариев угроз, можно использовать одновременно. Аппаратное шифрование диска SED эффективно защищает данные в случае, если диск требует гарантийного обслуживания, и обеспечивает мгновенное безопасное уничтожение данных. Шифрование тома достигает аналогичной цели в конфигурациях с несколькими дисками, а также в случаях, когда SED недоступен. Последний уровень, шифрование сетевых папок, защищает данные каждого ресурса или пользователя по отдельности, позволяя администраторам создавать зашифрованные резервные копии зашифрованных папок для всех пользователей, не сохраняя и не передавая ключей шифрования.