Я новый пользователь eCryptfs, и у меня есть очень простой вопрос, который я нигде не смог найти. Я заинтересован в использовании eCryptfs через NAS-устройство Synology, использующее Linux.
При попытке зашифровать мою папку (EXT4) с помощью приложения шифрования Synology (eCryptfs) я сталкиваюсь с ошибками, в которых утверждается, что длина моего имени файла не может превышать 45 символов (поэтому шифрование отсутствует).
Если ограничение на самом деле составляет 45 символов, eCryptfs не может быть полезным инструментом для большинства.
Каков максимально допустимый размер имени файла при шифровании файлов и папок с помощью eCryptfs? Является ли Linux 255 символов?
Ответы:
Полное раскрытие: я один из авторов и текущий сопровождающий утилит eCryptfs для пользователей.
Отличный вопрос!
Linux имеет максимальную длину имени файла 255 символов для большинства файловых систем (включая EXT4) и максимальный путь 4096 символов.
eCryptfs - это многоуровневая файловая система. Он располагается поверх другой файловой системы, такой как EXT4, которая фактически используется для записи данных на диск. eCryptfs всегда шифрует содержимое файла, но при желании может шифровать (скрывать) имена файлов (или нет).
Если имена файлов не зашифрованы, вы можете безопасно написать имена файлов длиной до 255 символов и зашифровать их содержимое, так как имена файлов, записанные в нижнюю файловую систему, будут просто совпадать. Хотя злоумышленник не сможет прочитать содержимое
index.html
илиbudget.xls
, он будет знать, какие имена файлов существуют. Это может (или не может) утечь конфиденциальную информацию в зависимости от вашего варианта использования.Если имена файлов зашифрованы, все становится немного сложнее. eCryptfs добавляет немного данных в начало зашифрованного имени файла, так что он может окончательно идентифицировать зашифрованные имена файлов. Кроме того, само шифрование включает «заполнение» имени файла.
Например, у меня есть зашифрованный файл
~/.bashrc
. Это имя файла зашифровано с использованием моего ключа для:Очевидно, что это 7-символьное имя файла теперь требует более 7 символов для шифрования. Опытным путем мы обнаружили, что имена файлов с именами длиннее 143 символов начинают требовать> 255 символов для шифрования. Поэтому мы (как разработчики eCryptfs), как правило, рекомендуем вам ограничить имена файлов до ~ 140 символов.
Теперь все это говорит о том, что Synology NAS - это коммерческий продукт, который встраивает и использует eCryptfs и Linux для шифрования и защиты данных на устройстве. Мы (ведущие разработчики eCryptfs) не имеем ничего общего с Synology или их продуктами, хотя, как правило, мы рады видеть, что eCryptfs используются в дикой природе . Мне кажется, что их рекомендация в 45 символов является либо опечаткой (из нашей 140-символьной рекомендации), либо просто более консервативной оценкой.
источник
Эта тема очень интересная, потому что мне было интересно то же самое. Я могу смириться с необходимостью переименовать 20 файлов из 50 000, если имена файлов должны быть 140 символов или менее, но 45 или менее не представляется возможным (в моей ситуации), потому что это потребовало бы, чтобы я переименовал слишком много файлов.
Я задал точно такой же вопрос непосредственно Synology (даже указав им на настоящую статью), и их ответ был интересным: «Ограничение имени файла зашифрованного общего ресурса составляет 143 байта. Это может быть до 140 символов чистой латиницы или 45 CJK (китайский язык) , Японские и корейские) персонажи. "
После этого ответа я провел больше тестирований, тестируя файлы размером 45, 46, 140, 143 и 144 символа. Мои тесты показывают, что файлы длиной до 143 символов (не байты, вопреки тому, что сказал мне Synology) будут зашифрованы, но файлы с 144 символами предотвратят зашифрование папки. Тем не менее, СООБЩЕНИЕ ОБ ОШИБКЕ, которое я получаю от моего NAS, состоит в том, что имя файла должно быть менее 45 символов (тогда как реальность такова, что оно должно быть менее 144 символов).
Я не делал тесты с символами CJK ... Но всем, кто читает это, кажется, что у вас все в порядке до 143 символов, несмотря на то, что система говорит вам.
источник
Я хотел бы уточнить, что Linux имеет ограничение 255 байт на имя файла, а не 255 символов. Это существенная разница, и если вы используете, например, кодировку UTF-8, вы можете получить имена файлов не более 100 символов.
источник
U+10FFFF
соответствия ограничениям UCS-2 (в основном UTF-16 без суррогатных пар), UTF-8 могло потребоваться до 6 байтов для представления 32-битной кодовой точки из-за того, как он кодирует «начало символа» и «продолжение символа», чтобы гарантировать, что синхронизация синтаксического анализатора может быть восстановлена независимо от того, где вы начинаете анализ в потоке байтов. Всегда есть вероятность, что они в конечном итоге решат отменить это решение, потому что у них заканчиваются неназначенные кодовые точки.Длина имени файла ecrypt была для меня только проблемой, потому что мне нужно было определенное поддерево моего домашнего каталога для поддержки длинных имен файлов, и в конце концов я понял, что могу просто создать файловую систему внутри файла и смонтировать это:
С этим, вероятно, связаны всевозможные проблемы с эффективностью, но для моего случая достаточно, когда файлы представляют собой просто результаты тестирования, периодически создаваемые для моих собственных локальных целей.
Мои коллеги поместили свое изображение в / tmp - данные теста не являются особо конфиденциальными: мы в основном хотим защитить наш исходный код, а не результаты нашего теста.
источник