💾 Archived View for tilde.team › ~rami › gocryptfs.gmi captured on 2023-05-24 at 19:30:58. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
רמי
SUBJECT: GoCryptFS: Прозрачное шифрование каталогов и файлов
AUTHOR: Rami Rosenfeld
DATE: 01/08/22
TIME: 02.00
LANG: en, ru
LICENSE: GNU FDL 1.3
TAGS: gnu, gnome, software, opensource, linux, system, gui, man, manual, bash, privacy, security, shred, gocryptfs, crypto, droidfs
Резонный вопрос: "Для чего нужна дополнительная защита данных, если у меня установлена ОС с полнодисковым шифрованием?"
Отвечу кратко: хотя системные и пользовательские разделы надежно зашифрованы LUKS, GoCryptFS - ваш последний рубеж защиты личных каталогов и файлов от несанкционированного доступа; допустим - на работающем компьютере, от которого вы (никогда так не делайте!) отвлеклись на минутку-другую.
О программе
GoCryptFS - свободное ПО; создано, чтобы устранить недостатки более старой EncFS (по состоянию на середину 2022 г. - не обновляется уже четыре года). Если мне не изменяет память, схожее шифрование (исключительно каталога /home/username/), основанное на EncFS, использовалось в ранних версиях Ubuntu, да и то - не по умолчанию, а лишь по желанию пользователя.
Это основанная на FUSE криптографическая файловая система, прозрачно шифрующая данные - с обфускацией имен файлов и каталогов (но без обфускации размеров файлов - насколько я понимаю, это существует только в планах). Использует произвольные, заданные при первоначальной активации каталог-источник (шифрованный) и каталог-приемник (точка монтирования расшифрованных файлов). Т.н. "тома" не имеют фиксированного объема, и каталог-источник будет увеличиваться в зависимости от имеющегося свободного дискового пространства. На одной ОС и в пространстве одного пользователя может быть создано несколько таких томов.
Отличается высокой скоростью операций (по сравнению с EncFS), простотой и удобством в работе.
Вначале установим ПО из стандартного репозитория:
dnf install gocryptfs
Примечание: В свежем релизе Fedora GNU/Linux отсутствует возможность инсталляции gocryptfs из стандартных или иных репозиториев. Поэтому необходимо скачать текущую версию с сайта производителя, распаковать архив и разместить бинарный файл в каталоге /usr/local/bin/
При необходимости выполните:
chmod a+rx /usr/local/bin/gocryptfs
Все дальнейшие команды выполняются от текущего непривилегированого пользователя!
В корневом каталоге пользователя ~/ создадим два подкаталога:
$ mkdir ~/.unmount ~/.mount
где:
.unmount - шифрованный (каталог-источник);
.mount - точка монтирования (каталог-приемник).
Эта операция производится один раз!
$ gocryptfs -init ~/.unmount
[будет запрошен пароль; используйте надежный!]
Вместо более слабого алгоритма GCM рекомендую медленный, но надежный AES-SIV. И тогда первоначальная команда инициализации будет выглядеть следующим образом:
$ gocryptfs -init -aessiv ~/.unmount
$ gocryptfs ~/.unmount ~/.mount
[будет запрошен пароль]
Теперь можно приступать к работе. Копируйте те файлы или каталоги, которые вы хотите зашифровать, в каталог ~/.mount
Попутно с этой операцией в каталоге ~/.unmount будут возникать зашифрованные данные с обфусцированными именами. Это можно легко проверить:
$ touch ~/.mount/mytest.txt
$ ls ~/.unmount
gocryptfs.conf (служебный файл! не удалять!)
gocryptfs.diriv (служебный файл! не удалять!)
ZSuIZVzYDy5-TbhWKY-ciA== (ваш зашифрованный файл)
Точно так же производятся другие файловые операции: монтируем файловую систему -- переходим в каталог-приемник -- переносим/удаляем/переименовываем данные.
$ fusermount -u ~/.mount
После исполнения этой команды каталог-приемник /.mount окажется пустым.
Операция производится при отмонтированном каталоге-источнике:
$ gocryptfs -passwd ~/.unmount
[будут запрошены старый и новый пароли]
Операция производится при отмонтированном каталоге-источнике:
$ gocryptfs -fsck ~/.unmount
[будет запрошен пароль]
Decrypting master key
fsck summary: no problems found
$ gocryptfs -info ~/.unmount
Creator: gocryptfs v1.8.0-Fedora-1.8.0-5.fc35
FeatureFlags: GCMIV128 HKDF DirIV EMENames LongNames Raw64
EncryptedKey: 64B
ScryptObject: Salt=32B N=65536 R=8 P=1 KeyLen=32
Для удобства использования в терминале можно создать два алиаса (ВКЛ/ВЫКЛ) в .bashrc:
alias on='gocryptfs ~/.unmount ~/.mount'
alias off='fusermount -u ~/.mount'
Подсказываю: чтобы исключить возможность несанкционированного доступа (и последующего анализа/расшифрования данных), в критической ситуации, требующей быстрых и осмысленных действий, нет необходимости уничтожать все зашифрованные данные. Достаточно уничтожить несколько ключевых файлов GoCryptFS с помощью общеизвестной команды shred:
gocryptfs.conf
gocryptfs.diriv
Проще всего создать еще один "панический" алиас (panic) в .bashrc:
alias panic='shred -n 7 -f -u -z ~/.unmount/gocryptfs.conf ~/.unmount/gocryptfs.diriv'
Будьте осторожны: данные невосстановимы!
Важное примечание: совет хорошо работал в EncFS. С GoCryptFS я не могу перепроверить эту информацию - тестируйте самостоятельно.
Каталоги GoCryptFS являются переносимыми (честно говоря, никогда не пробовал этот опционал; вполне возможно, что на новой ОС потребуется дополнительная инициализация).
ПО изначально создавалось под GNU/Linux, но, если верить создателю, работает на Mac и Windows.
Отличным образом используется в Android (см. отдельное описание Droid FS в разделе Software / Free Droid - с иллюстрациями GUI.
У GoCryptFS имеется неплохая документация на сайте производителя, плюс - стандартный man со множеством интересных опций: man gocryptfs
Дополнительно см.:
Официальная страница GoCryptFS
🄯 Rami Rosenfeld, 2022. GNU FDL 1.3.