Jump to content
zyxmon

Тестируем зашифрованную файловую систему (encfs)

Нужен ли пакет encfs в Entware  

15 members have voted

  1. 1. Нужен ли пакет encfs в Entware

    • Да
      10
    • Нет
      0
    • Не знаю
      4
    • Ничего не понимаю
      1


Recommended Posts

Собран пакет encfs (EncFS — свободная криптографическая файловая система, основанная на FUSE, прозрачно шифрующая файлы, используя произвольную директорию в качестве места для хранения зашифрованных файлов. Распространяется под лицензией GPL.)

Необходимо, чтобы

Была установленная система пакетов Entware-keenetic - viewtopic.php?f=4&t=333

Был установлен модуль ядра fuse - viewtopic.php?f=3&t=471

1. Установка

opkg install http://pkg.entware-keenetic.ru/binaries/keenle/t/encfs_1.9-20160630-1_keenle.ipk
 

2. Использование (в интернете много подробных статей).

2.1 Создадим две папки. Первая, где хранятся "секретные данные", вторая "точка монтирования"

Например (используйте свои названия)

mkdir -p /opt/crypto
mkdir -p /opt/mcrypto
 

2.2 Запустим шифрование

encfs /opt/crypto/ /opt/mcrypto/
 

Внимание! В команде нужно указывать полные пути к папкам.

У Вас спросят тип шифрования (я проверял на стандартном) и пароль (если потеряете, данные не восстановите).

Creating new encrypted volume.
Please choose from one of the following options:
enter "x" for expert configuration mode,
enter "p" for pre-configured paranoia mode,
anything else, or an empty line will select standard mode.
?>

Standard configuration selected.

Configuration finished.  The filesystem to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 3:0:2
Filename encoding: "nameio/block", version 4:0:2
Key Size: 192 bits
Block Size: 1024 bytes
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File holes passed through to ciphertext.

Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism.  However, the password can be changed
later using encfsctl.

New Encfs Password:
Verify Encfs Password:
 

Проверяем, что все "сработало", командой mount.

mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,relatime)
none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
/dev/mtdblock/7 on /storage type jffs2 (rw,nosuid,relatime)
none on /proc/bus/usb type usbfs (rw,nosuid,noexec,relatime)
/dev/sda1 on /tmp/mnt/entware type ext2 (rw,relatime)
/dev/sda1 on /opt type ext2 (rw,relatime)
encfs on /opt/mcrypto type fuse.encfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)
 

Как видим у нас появилась точка монтирования /opt/mcrypto.

Именно в эту папку и следует помещать секретные данные. А в папке /opt/crypto Вы увидите, как они будут отображаться в зашифрованном виде.

2.3 Закончили. Отключаем зашифрованную папку

fusermount -u /opt/mcrypto
 

2.4 Снова нужен доступ

encfs /opt/crypto/ /opt/mcrypto/
 

Вводим пароль - все отобразиться расшифрованным в /opt/mcrypto.

На параметрах шифрования по умолчанию у меня на медленную флешку скорость записи была около 1.5 МБ/с.

Отписываемся о проблемах (на ядре 2.6.22 прошивка v1 все повисло). Отписываемся - устраивает ли скорость?

Подбираем оптимальные для скорости параметры.

По результатам Ваших ответов решим, нужно ли включать encfs в репозиторий.

Share this post


Link to post
Share on other sites

Эм, а модуль fuse есть у кого-нить, чтоб на ndms v2.05(AAFS.5)C4 подкинуть его? Или это надо разработчикам писать, или кому, чтобы стабильная прошивка начала поддерживать?

Share this post


Link to post
Share on other sites

Эм, а модуль fuse есть у кого-нить, чтоб на ndms v2.05(AAFS.5)C4 подкинуть его? Или это надо разработчикам писать, или кому, чтобы стабильная прошивка начала поддерживать?

По модулям отдельный топик! Там и спрашивайте. Может для 2.05 fuse в ядре или в основной прошивке.

Не могу сказать. что encfs - верх стабильности. Вчерашняя сборка периодически вылетала в segfault. Сегодня обновил сырцы - заработала. На 2.6.22 и ndms v1 fuse есть в ядре. Там завис при попытке просмотреть даже пустую смонтированную папку. Может на v2 и будет лучше, но гарантий нет!

PS Если `cat /proc/filesystems` выдает fuse в поддрживаемых файловых системах, можете попробовать encfs.

cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   tmpfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   anon_inodefs
nodev   devpts
       squashfs
nodev   ramfs
nodev   mtd_inodefs
       ext3
       ext2
       ext4
       fuseblk
nodev   fuse
nodev   fusectl

Share this post


Link to post
Share on other sites

Немного тестов.

Extra. Была попытка немного оптимизировать шифрование. Большого эффекта не дало.

Выполнялись операции:

(1) запись файла 164МБ на флешку.

(2) запись аналогичного файла в зашифрованную FS.

(3) чтение файла с зашифрованной FS.

Результаты:

[Extra@~]>dd if=/dev/zero of=/opt/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 22,753 s, 7,2 MB/s

[Extra@~]>dd if=/dev/zero of=/opt/mcr/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 56,8658 s, 2,9 MB/s

[Extra@~]>dd if=/opt/mcr/test of=/dev/null
320000+0 records in
320000+0 records out
163840000 bytes (164 MB) copied, 31,8112 s, 5,2 MB/s

Загрузка CPU 100%.

Аналогичные операции на arm роутере ((Broadcom BCM4708 ARMv7, 800Mhz, 2 ядра) с флешкой usb3 дали

23.3 MB/s, 6.7 MB/s и 11.2 MB/s. Загрузка cpu превышает 90% но маршрутизатор остается "отзывчивым".

А теперь UltraII. Использовалась флешка usb2, прошивка Падавана, загрузка не превышала 25%, скорости

7,9 MB/s, 4,6 MB/s и 7,5 MB/s.

Примечание. Загрузка CPU считывалась с морды. Поскольку три разные прошивки,..... неизвестно что там они показывают....

Share this post


Link to post
Share on other sites

То же, на GIGA II (см. выше)

Диск с NTFS

~ # dd if=/dev/zero of=/tmp/mnt/hdd/test/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 4,63578 s, 35,3 MB/s

~ # dd if=/dev/zero of=/tmp/mnt/hdd/mycrypt/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 72,8121 s, 2,3 MB/s

~ # dd if=/tmp/mnt/hdd/mycrypt/test of=/dev/null
320000+0 records in
320000+0 records out
163840000 bytes (164 MB) copied, 31,3866 s, 5,2 MB/s

Диск c ext2

~ # dd if=/dev/zero of=/tmp/mnt/hdd/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 5,0803 s, 32,3 MB/s

~ # dd if=/dev/zero of=/tmp/mnt/hdd/mycrypt/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 64,5946 s, 2,5 MB/s

~ # dd if=/tmp/mnt/hdd/mycrypt/test of=/dev/null
320000+0 records in
320000+0 records out
163840000 bytes (164 MB) copied, 44,0339 s, 3,7 MB/s

Диск с ext3

~ # dd if=/dev/zero of=/tmp/mnt/hdd/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 6,06516 s, 27,0 MB/s

~ # dd if=/dev/zero of=/tmp/mnt/hdd/mycrypt/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 72,1289 s, 2,3 MB/s

~ # dd if=/tmp/mnt/hdd/mycrypt/test of=/dev/null
320000+0 records in
320000+0 records out
163840000 bytes (164 MB) copied, 43,408 s, 3,8 MB/s

На флешке с ext2

~ # dd if=/dev/zero of=/opt/tmp/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 29,3155 s, 5,6 MB/s

~ # dd if=/dev/zero of=/opt/mycrypto/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 60,6527 s, 2,7 MB/s

~ # dd if=/opt/mycrypto/test of=/dev/null
320000+0 records in
320000+0 records out
163840000 bytes (164 MB) copied, 43,2835 s, 3,8 MB/s

до кучи (Ultra II+hdd c ext4 USB3) CPU ~25-30%

~ # dd if=/dev/zero of=/tmp/mnt/hdd/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 1,61661 s, 101 MB/s

~ # dd if=/dev/zero of=/tmp/mnt/hdd/mycrypt/test bs=16k count=10000
10000+0 records in
10000+0 records out
163840000 bytes (164 MB) copied, 51,1632 s, 3,2 MB/s

~ # dd if=/tmp/mnt/hdd/mycrypt/test of=/dev/null
320000+0 records in
320000+0 records out
163840000 bytes (164 MB) copied, 30,7169 s, 5,3 MB/s

Share this post


Link to post
Share on other sites

По результатам Ваших ответов решим, нужно ли включать encfs в репозиторий.

Лично меня вроде все устраивает, ИМХО нужно однозначно! Попытаюсь сейчас запускать шифрование через телеграм.. еще бы davfs прикрутить к стабильной ndms v2.05(AAFS.5)C4. Есть такая возможность?

Share this post


Link to post
Share on other sites

Лично меня вроде все устраивает, ИМХО нужно однозначно! Попытаюсь сейчас запускать шифрование через телеграм.. еще бы davfs прикрутить к стабильной ndms v2.05(AAFS.5)C4. Есть такая возможность?

Нужно не спрашивать, а проверять. davfs2 это же fuse - должно работать.

Share this post


Link to post
Share on other sites

Обращаю внимание, что у encfs куча, да-да целая куча опций.

Начиная от опций шифрования (алгоритмы, типы и длины ключей) и заканчивая опциями монтирования.

Для embeded устройств следует подбирать оптимальные.

Опции монтирования:

>encfs -H
encfs [options] rootDir mountPoint -- [FUSE Mount Options]
valid FUSE Mount Options follow:

usage: ... mountpoint [options]

general options:
   -o opt,[opt...]        mount options
   -h   --help            print help
   -V   --version         print version

FUSE options:
   -d   -o debug          enable debug output (implies -f)
   -f                     foreground operation
   -s                     disable multi-threaded operation

   -o allow_other         allow access to other users
   -o allow_root          allow access to root
   -o auto_unmount        auto unmount on process termination
   -o nonempty            allow mounts over non-empty file/dir
   -o default_permissions enable permission checking by kernel
   -o fsname=NAME         set filesystem name
   -o subtype=NAME        set filesystem type
   -o large_read          issue large read requests (2.4 only)
   -o max_read=N          set maximum size of read requests

   -o hard_remove         immediate removal (don't hide files)
   -o use_ino             let filesystem set inode numbers
   -o readdir_ino         try to fill in d_ino in readdir
   -o direct_io           use direct I/O
   -o kernel_cache        cache files in kernel
   -o [no]auto_cache      enable caching based on modification times (off)
   -o umask=M             set file permissions (octal)
   -o uid=N               set file owner
   -o gid=N               set file group
   -o entry_timeout=T     cache timeout for names (1.0s)
   -o negative_timeout=T  cache timeout for deleted names (0.0s)
   -o attr_timeout=T      cache timeout for attributes (1.0s)
   -o ac_attr_timeout=T   auto cache timeout for attributes (attr_timeout)
   -o noforget            never forget cached inodes
   -o remember=T          remember cached inodes for T seconds (0s)
   -o nopath              don't supply path if not necessary
   -o intr                allow requests to be interrupted
   -o intr_signal=NUM     signal to send on interrupt (16)
   -o modules=M1[:M2...]  names of modules to push onto filesystem stack

   -o max_write=N         set maximum size of write requests
   -o max_readahead=N     set maximum readahead
   -o max_background=N    set number of maximum background requests
   -o congestion_threshold=N  set kernel's congestion threshold
   -o async_read          perform reads asynchronously (default)
   -o sync_read           perform reads synchronously
   -o atomic_o_trunc      enable atomic open+truncate support
   -o big_writes          enable larger than 4kB writes
   -o no_remote_lock      disable remote file locking
   -o no_remote_flock     disable remote file locking (BSD)
   -o no_remote_posix_lock disable remove file locking (POSIX)
   -o [no_]splice_write   use splice to write to the fuse device
   -o [no_]splice_move    move data while splicing to the fuse device
   -o [no_]splice_read    use splice to read from the fuse device

Module options:

[subdir]
   -o subdir=DIR           prepend this directory to all paths (mandatory)
   -o [no]rellinks         transform absolute symlinks to relative

[iconv]
   -o from_code=CHARSET   original encoding of file names (default: UTF-8)
   -o to_code=CHARSET      new encoding of the file names (default: UTF-8)

Для опций шифрования в режиме эксперта следует задавать минимальные длины ключей. Очень важной величиной может оказаться block size.

Share this post


Link to post
Share on other sites

Нужно не спрашивать, а проверять.

ок, попробую. Пока что мои пять копеек к тесту, с практической точки зрения, без цифр) Запустил с зашифрованной флешки кино по dlna и пошло - поехало, играет и не тупит. Супер!

<?xml version="1.0" encoding="UTF-8"?>



20100713
EncFS 1.9.0

ssl/aes
3
0


nameio/block32
4
0

128
1024
0
0
0
0
0
1
36

Share this post


Link to post
Share on other sites

А что насчет google-docs-fs или какого-нибудь fuse-google-drive? griv не устраивает, т.к. нужно не синхронизировать а монтировать как шару.

Share this post


Link to post
Share on other sites

Для вопросов по entware и заявок на пакеты есть другие места. Не будем увеличивать вселенскую энтропию и разводить offtopic!!!

Share this post


Link to post
Share on other sites

Может лучше не нагружать CPU роутера, а имея раздел (на диске) доступный из инета для клиента использовать ПО на клиентах например - https://www.boxcryptor.com/ru он есть и для Windows и для Android

Share this post


Link to post
Share on other sites

Может лучше не нагружать CPU роутера, а имея раздел (на диске) доступный из инета для клиента использовать ПО на клиентах например - https://www.boxcryptor.com/ru он есть и для Windows и для Android
Это зависит от вашей задачи, в частности, от возможностей клиентов. encfs всего лишь один из ваших инструментов, как и любой другой инструмент, его надо использовать правильно.

Share this post


Link to post
Share on other sites

Уважаемый vasek00, спасибо, но лично меня не устраивает предложенная Вами реализация и мне кажется чтоэто самый очевидный, можно сказать банальный вариант использования. Лично мне он не подходит, ввиду использования encfs в облаках, который адекватно поддерживается в андрюше только на дропбоксе, для того же гуглодиска нужны как минимум гуглосервисы, а чем покупать всей семье новые смарты я предпочел бы хагрузить проц, ну не солить же эти ресурсы. Уж сколько было высказываний о том что шифрование будет вешать деаайс я у себя такого не наблюдаю. При самых ужасных раскладах пиковые значения исп-я процессора порядка 80%. При копировании больших файлов и так были примерно такие же "показания". Оттого таки ИМХО весьма полезная фича. Вам не нужно - берегите свой CPU.

Share this post


Link to post
Share on other sites

....Уж сколько было высказываний о том что шифрование будет вешать деаайс я у себя такого не наблюдаю. При самых ужасных раскладах пиковые значения исп-я процессора порядка 80%. При копировании больших файлов и так были примерно такие же "показания". Оттого таки ИМХО весьма полезная фича. Вам не нужно - берегите свой CPU.

Если речь о смартфонах или планшетах, то это же очевидно. Они все сейчас многоядерные.

Encfs можно на многоядерном устройстве запустить с флагом -s (в 1 поток). На практике это почти не влияет. На одном arm устройстве было даже быстрее с -s. Реально encfs не грузит все ядра-потоки и вполне юзабельно на многоядерных устройствах (Ultra II, Giga III).

Share this post


Link to post
Share on other sites

Реально encfs не грузит все ядра-потоки и вполне юзабельно на многоядерных устройствах (Ultra II, Giga III).

Напомню, у меня Giga II и тоже весьма юзабельно! Мне очень нравится.

Share this post


Link to post
Share on other sites

emlen

Скорей всего вы не поняли

HDD-USB---роутер-----Инет------ПК

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

Не большая ремарка

Boxcryptor — это всего лишь удобная графическая надстройка над encfs+fuse

emlen

Вам не нужно - берегите свой CPU.

Да без проблем, пусть занимается тем что он умеет лучше всего делать.

Share this post


Link to post
Share on other sites

Приветствую всех Кинетикоманов!

 

Гайд - замечательный!

Только хотелось бы его сделать оконченным с точки зрения юзабилити.

Не могли бы вы подсказать, как примонтировать вместо /opt/mcrypto smb шару? (Чтобы был доступ к расшифрованным данным по сети)

И как заставить это работать после перезагрузки роутера?

 

Share this post


Link to post
Share on other sites

Сейчас опять пользуюсь encfs, но столкнулся с неприятным моментом, при копировании больших файлов сам процесс копирования может спонтанно намертво фризиться, при том что htop кажет, что проц загружен не на 100%, другие сервисы на роутере продолжают работать нормально, все шары доступны... и получается возобновить копирование только после перемонтирования криптопапки с удалением недокопированного файла. Как с этим можно побороться?

Share this post


Link to post
Share on other sites

как же заставить его пусть медленно, но стабильно без вылетов работать?!

Edited by emlen

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...