Как зашифровать отдельные папки?
Допустим, у меня есть папка в папке "Документы", в которой есть файлы, к которым никто не хочет обращаться без пароля.
Есть ли способ заблокировать эту папку, чтобы она была защищена паролем / зашифрована?
На самом деле, возможно ли защитить паролем любую отдельную папку?
6 ответов
ПРЕДУПРЕЖДЕНИЕ. Недавно сообщалось, что CryptKeeper содержит универсальную ошибку пароля, которая подвергает ваши данные потенциальному риску. Эта проблема еще не может быть решена в Ubuntu, используйте это решение на свой страх и риск.
Соответствующие ссылки на информацию об ошибках:
Ошибка вверх по течению: https://github.com/tomm/cryptkeeper/issues/23
Ошибка Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=852751
sudo apt-get install cryptkeeper
После установки перейдите в Приложения -> Системные инструменты -> Cryptkeeper.
Cryptkeeper автоматически прикрепится к верхней панели
Чтобы создать зашифрованную защищенную папку, нажмите на апплет Cryptkeeper и выберите "Новая зашифрованная папка".
Затем введите имя папки и место для сохранения папки и нажмите "Вперед".
Введите пароль и нажмите "Вперед".
Папка будет создана и готова к использованию.
Чтобы получить доступ ко всем зашифрованным папкам, нажмите апплет Cryptkeeper на панели и выберите каждую папку.
Введите пароль перед его монтированием для доступа.
Готово
Чтобы удалить папку или изменить пароль, щелкните правой кнопкой мыши папку в панели-апплета.
Метод EncryptedPrivateDirectory
Официальные документы Ubuntu
Найдите и установите "ecryptfs-utils" в программном центре Ubuntu:
После установки перейдите в Приложения -> Аксессуары -> Терминал и выполните команду ниже:
ecryptfs-setup-private
Вам будет предложено ввести пароль для входа в систему (пароль) и создать его для вашей личной папки:
Когда вы закончите создание пароля, выйдите и снова войдите в систему:
Далее перейдите в Places -> Home Folder:
И новая папка должна быть создана в вашем домашнем каталоге под названием "Private". Эта папка зашифрована и защищена паролем. Переместите все свои личные вещи в эту папку, чтобы обезопасить их:
Пользователям без доступа к папке будет отказано:
У вас есть 2 варианта, если вы хотите заблокировать папку от других пользователей
Зашифруйте или создайте сжатый пароль для защиты архива файлов. Методы в https://Ask-ubuntu.ru/a/104545/25863 и /questions/589550/kak-zashifrovat-otdelnyie-papki/589569#589569 идеально подходят для этого случая, когда нужно быть на 100% уверенным, что никто никогда не взглянет на ваш файлы, не зная пароль, используемый там.
Используйте права доступа к папке / файлу вашего компьютера, чтобы запретить доступ к вашей папке другому пользователю.
Во-первых, необходимо убедиться, что ни один пользователь не сможет открыть результат, не зная используемого пароля.
Второй изменит только привилегии файла / папки, так что другой пользователь без прав не сможет открыть его. Папка все еще существует, доступ к ней может получить любой пользователь с правами sudo в вашей системе или с помощью LiveCD и чтения раздела. Это также проще в реализации и не требует ввода пароля все время, когда вам нужно открыть / смонтировать зашифрованную папку / архив.
Простой и быстрый способ сделать это - использовать chmod
изменить привилегии для файла или папки.
Откройте терминал и перейдите к месту, где находится ваша папка, давайте предположим, что имя папки foo
и что мы в настоящее время находимся там, где находится папка.
chmod 700 foo
сделаю foo
доступен только для ваших глаз, он не зашифрован (что также возможно), но только ваш пользователь (или пользователь с правами sudo) может прочитать или открыть этот файл / папку.
Вы также можете сделать это графически, щелкнув правой кнопкой мыши файл или папку и изменив их разрешения вручную. В приведенном ниже примере вы как владелец обладаете всеми привилегиями, и вы отказываете любой другой группе или пользователю в доступе, чтении или изменении этого файла / папки.
Для получения дополнительной информации о разрешениях файлов / папок посетите Ubuntu. Understanding and Using File Permissions
вики-страница
Вы можете попробовать Vault, недавний проект участника ubuntu-gr (греческое местное сообщество): http://clepto.github.com/ - https://github.com/Clepto/Vault
PPA: https://launchpad.net/~vault/+archive/ppa
sudo add-apt-repository ppa:vault/ppa
sudo apt-get update
sudo apt-get install vault
Это графическая утилита для encfs (пакет в репозиториях). Я цитирую описание пакета:
$ apt-cache show encfs
Package: encfs
[...]
Description-en: encrypted virtual filesystem
EncFS integrates file system encryption into the Unix(TM) file system.
Encrypted data is stored within the native file system, thus no
fixed-size loopback image is required.
.
EncFS uses the FUSE kernel driver and library as a backend.
Homepage: http://www.arg0.net/encfs
Вы создаете точку монтирования / папку, которую затем можете закрыть или удалить. Если вы закрываете его, вам нужен пароль, чтобы открыть его.
Другой способ, в зависимости от ваших потребностей, - заархивировать папку как zip-файл, защищенный паролем.
Это похоже на другой вопрос о файлах защиты паролем.
Вы можете использовать CryFS
cryfs basedir mountdir
Он используется по умолчанию в хранилищах KDE и особенно интересен, если вы синхронизируете зашифрованный контент через Dropbox, Freefilesync, rsync или подобное программное обеспечение, потому что он хранит свои данные в небольших зашифрованных блоках, а изменение небольшого файла приводит к небольшому объему данных. быть перезагружен.
Шифрование на уровне каталогов - вещь рискованная, по возможности предпочитайте шифрование на уровне блочного устройства.
Я думаю, что Жиль прибил несколько точек ключевых здесь, что я буду воспроизводить:
Используйте шифрование на уровне блочного устройства. Linux предоставляет это с помощью dm-crypt. Вы можете зашифровать либо весь диск (кроме небольшой области для загрузчика), либо зашифровать
/home
или какой-то другой раздел. Если вы не зашифруете весь диск, имейте в виду, что конфиденциальная информация может оказаться в других местах, особенно в области подкачки (если у вас где-либо есть зашифрованные данные, вам следует зашифровать свой своп). Обратите внимание, что если вы выберете шифрование всего диска, ваш компьютер не сможет загрузиться без присмотра, вам придется ввести кодовую фразу с клавиатуры.Поскольку все блочное устройство зашифровано, расположение содержимого файла и метаданных не может быть обнаружено злоумышленником, который украл диск. Помимо заголовка в начале зашифрованной области, содержимое неотличимо от случайного шума. Злоумышленник может получить некоторую информацию, просмотрев несколько снимков зашифрованных данных и изучив, как различные секторы развиваются с течением времени, но даже при этом будет сложно найти что-нибудь интересное, и это не применимо, если вы перестанете изменять данные после злоумышленник увидел зашифрованный текст (как в случае кражи диска).
Также обратите внимание, что если вы шифруете что-то внутри своего дома, а не весь дом, несколько распространенных программ могут привести к утечке данных, если вы не будете осторожны с секущими волосами. Например:.bash_history
, сеансы редактирования и истории отмен и т. д.
Несколько советов о том, как это сделать:
- Полнодисковое шифрование
- Во время установки: см. Раздел "Полное шифрование диска во время установки" ниже.
- После установки: скорее всего, невозможно.
- LUKS против TrueCrypt.
- Этот главный ответ на вопрос описывает, как зашифровать ваш дом с помощью
fscrypt
после незашифрованной установки (у установщика есть возможность зашифровать домашний каталог)
eCryptfs ручная настройка
В этом ответе описаны помощники Ubuntu для него (например,ecryptfs-setup-private
), но вы можете получить больший контроль (например, разделить разные каталоги монтирования) и понимание, смонтировав его самостоятельно.
eCryptfs уже является частью ядра Linux и уже включен по умолчанию в Ubuntu черезCONFIG_ECRYPT_FS=y
, так что вы можете просто смонтировать его. Быть частью ядра также обычно является положительным показателем качества и стабильности.
У меня есть следующие помощники:
export ECRYPTFS_DIR="$HOME/ecryptfs"
export ECRYPTFS_DATA_DIR="$HOME/.ecryptfs-data"
ecry() (
# Mount ecryptfs.
if ! mountpoint -q "$ECRYPTFS_DIR"; then
sudo mount -t ecryptfs \
-o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes \
"$ECRYPTFS_DATA_DIR" \
"$ECRYPTFS_DIR"
fi
)
ecryu() (
# Unmount ecryptfs.
sudo umount "$ECRYPTFS_DIR"
)
Использование происходит следующим образом.
Сначала смонтируйте зашифрованный каталог:
ecry
Теперь вам будет предложено ввести кодовую фразу:
Passphrase:
Допустим, мы неразумно выбрали:
asdf
так что теперь он напечатает:
Filename Encryption Key (FNEK) Signature [87d04721f6b4fff1]:
87d04721f6b4fff1
это тип хэша, полученный из нашего asdf
пароль. Теперь вы можете нажать Enter, и он скажет:
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=87d04721f6b4fff1
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=87d04721f6b4fff1
Mounted eCryptfs
что означает, что монтирование прошло успешно.
Теперь сделаем несколько тестовых зашифрованных файлов:
echo AAAA > ~/ecryptfs/aaaa
echo BBBB > ~/ecryptfs/bbbb
dd if=/dev/zero bs=1k count=1k > ~/ecryptfs/zzzz
Если мы его размонтируем:
ecry
как и ожидалось, каталог пуст:
ls -l ~/ecryptfs
Сами данные eCryptfs содержатся в ~/.ecryptfs-dat
каталог, который мы передали команде монтирования.
Независимо от того, куда мы монтируемся, пока мы используем этот каталог в качестве каталога данных, содержимое незашифрованной точки монтирования будет таким же.
Рассмотрим его содержимое:
ls -lh ~/.ecryptfs-data
Это показывает три зашифрованных файла:
-rw-rw-r-- 1 ciro ciro 12K Nov 11 17:15 ECRYPTFS_FNEK_ENCRYPTED.FWa5o2QVxfHzwEQ-GALjie5YM3J8aETCQqcZB.pJ2KyM4SRZWVvHGnAYi---
-rw-rw-r-- 1 ciro ciro 12K Nov 11 17:15 ECRYPTFS_FNEK_ENCRYPTED.FWa5o2QVxfHzwEQ-GALjie5YM3J8aETCQqcZMnVJY0WbH6bqRaee1cD5xU--
-rw-rw-r-- 1 ciro ciro 1.1M Nov 11 17:15 ECRYPTFS_FNEK_ENCRYPTED.FWa5o2QVxfHzwEQ-GALjie5YM3J8aETCQqcZf.vz0tLUzh41PwVFAnHc5k--
Итак, мы наблюдаем, что:
- у нас есть один незашифрованный файл данных для каждого файла в основном незашифрованном монтировании
- имена файлов зашифрованы
- минимальный размер файла составляет 12 КБ, даже для тех небольших файлов, которые содержат только 5 байтов, которые мы только что создали, поэтому мы получили бы большое увеличение использования диска, если бы таких небольших файлов было много
- для большого файла размером 1 МБ новый размер составляет 1,1 МБ, поэтому есть также пропорциональное увеличение размера примерно на 10% в дополнение к минимальному размеру 12 КБ.
- временные метки просочились. TODO: как этого избежать?
Теперь мы можем проверить, действительно ли эти файлы зашифрованы:
grep aaaa ~/.ecryptfs-data/*
grep AAAA ~/.ecryptfs-data/*
который не дает совпадений, поэтому они, вероятно, зашифрованы.
Самое замечательное в том, как хранятся эти зашифрованные файлы, заключается в том, что вы можете легко сделать резервную копию зашифрованных файлов в любом месте, просто скопировав их на незашифрованный носитель с помощью rsync
, и будут скопированы только устаревшие файлы. В этом случае нет необходимости даже сначала вводить пароль!
Не самое крутое в этом то, что злоумышленник, который пытается доказать, что у вас есть известная информация, может доказать это, сравнив размеры файлов и структуру каталогов, как упомянул Джайлс.
Теперь снова смонтируем:
ecry
Еще раз запрашивает пароль.
Предположим, вы ввели неправильный пароль:
asdfqwer
теперь он напечатает:
Filename Encryption Key (FNEK) Signature [c55c6f13e73332d3]:
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=c55c6f13e73332d3
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=c55c6f13e73332d3
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.
Would you like to proceed with the mount (yes/no)? :
Итак, мы видим, что FNEK для asdfqwer
отличается от правильного asdf
пароль: c55c6f13e73332d3
.
Если мы все-таки решим смонтировать yes
, затем спрашивает:
Would you like to append sig [c55c6f13e73332d3] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? :
и если мы войдем yes
, он, как и обещал, добавит FNEK в /root/.ecryptfs/sig-cache.txt
. Скажем пока нет. Мы можем проверить, что содержит этот файл:
sudo cat /root/.ecryptfs/sig-cache.txt
в настоящее время он содержит только asdf
ФНЕК:
87d04721f6b4fff1
поэтому мы понимаем, что это просто белый список известных надежных паролей.
Теперь посмотрим, что мы получим с неправильным паролем:
ls -l ~/ecryptfs
и мы видим, что каталог пуст, как и следовало ожидать. Кажется, что каждый файл в каталоге данных должен содержать какие-то данные для проверки пароля и просто не монтируется.
Если мы размонтируем и вернемся к правильному паролю asdf
, он снова запросит подтверждение FNEK, что немного раздражает.
Filename Encryption Key (FNEK) Signature [87d04721f6b4fff1]:
Мы можем предотвратить это каждый раз, как упоминалось в разделе Как автоматически указать ключ шифрования имени файла с помощью ecryptfs? добавлением:
-o ecryptfs_fnek_sig=
команде монтирования. TODO поможет ли злоумышленникам взломать пароль, зная, что FNEK?
Наконец, когда каталог ecryptfs смонтирован, мы можем увидеть его под:
grep ecryptfs /proc/mounts
который содержит строку типа:
/home/ciro/.ecryptfs-data /home/ciro/ecryptfs ecryptfs rw,relatime,ecryptfs_fnek_sig=d066f6dcf72ad65a,ecryptfs_sig=d066f6dcf72ad65a,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs 0 0
Проверено на Ubuntu 20.04, ядро Linux 5.4.
ecryptfs против CryFS против EncFS
Все это методы уровня каталога, поэтому было бы неплохо понять их компромиссы. Некоторые сравнения:
https://wiki.archlinux.org/index.php/EncFS
eCryptFS реализована в пространстве ядра, поэтому ее немного сложнее настроить. Вы должны запомнить различные варианты шифрования (используемые шифры, тип ключа и т. Д.). С EncFS это не так, потому что он хранит информацию о метаданных шифрования в файле конфигурации для каждого каталога (.encfs6.xml). Таким образом, вам не нужно ничего запоминать (кроме ключевой фразы).
Производительность обоих зависит от типа активности диска. В то время как eCryptFS может работать быстрее в некоторых случаях из-за меньших накладных расходов при переключении контекста (между ядром и пользовательским пространством), EncFS имеет преимущества в других случаях, поскольку метаданные шифрования централизованы и не хранятся в заголовках отдельных файлов. Для получения дополнительной информации примеры тестов предоставлены проектом EncFS.
Полное шифрование диска во время установки (кроме /boot
)
Я не могу найти "вопрос" для этого, так что здесь идет QEMU эксперимент на основе здесь с Ubuntu 20.04.1.
Вы нажимаете:
- Сотрите диск и установите Ubuntu
- Расширенные возможности
- Используйте LVM с новой установкой Ubuntu
- Зашифруйте новую установку Ubuntu для безопасности
Затем он запрашивает пароль на следующем шаге:
Теперь при каждой загрузке первое, что вы видите (TODO до или после загрузчика?), - это запрос пароля:
И после этого, если вы введете правильный пароль, он перейдет в обычную загрузку.
После входа в систему из оболочки мы делаем:
lsblk
и это дает:
sda 8:0 0 1T 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 1K 0 part
├─sda5 8:5 0 731M 0 part /boot
└─sda6 8:6 0 1022.8G 0 part
└─sda6_crypt 253:0 0 1022.8G 0 crypt
├─vgubuntu-root 253:1 0 1021.8G 0 lvm /
└─vgubuntu-swap_1 253:2 0 976M 0 lvm [SWAP]
так кажется, что загрузчик второй ступени под /boot
сам по себе не зашифрован, но корневой каталог и файл подкачки зашифрованы.
Как упоминалось по адресу: https://help.ubuntu.com/community/Full_Disk_Encryption_Howto_2019, это подвергает вас риску того, что злоумышленник сможет скомпрометировать вашу машину, взломав загрузочную папку без вашего ведома, и использовать ее для последующего извлечения ваши ключи дешифрования, если вы продолжите использовать машину.
Полное шифрование диска во время установки (включая /boot
)
По состоянию на 20.04, похоже, не существует автоматического способа сделать это, но, надеюсь, он будет реализован рано или поздно, некоторые руководства:
- https://help.ubuntu.com/community/Full_Disk_Encryption_Howto_2019
- https://help.ubuntu.com/community/ManualFullSystemEncryption
- https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1773457
Переключатель Kill включил безопасность шифрования ноутбука
Хорошо, сейчас мы приближаемся к уровню паранойи opsec в ЦРУ / Шелковом пути: как быстро гарантировать, что ваши данные не могут быть расшифрованы, если вас поймают с включенным компьютером и у вас есть секунда для действий.
Во-первых, приостановка в ОЗУ кажется недостаточно хорошей, переход в спящий режим будет более разумным шагом:
- Приостановить в ОЗУ и зашифрованных разделах
- https://superuser.com/questions/648333/how-to-make-suspend-to-ram-secure-on-ubuntu-with-full-disk-encryption-lvm-on-to
- https://unix.stackexchange.com/questions/74200/how-to-encrypt-my-system-such-that-suspend-to-ram-works-and-is-also-encrypted
Кажется, что в режиме гибернации данные сохраняются в разделе подкачки, поэтому, пока ваш своп зашифрован (что, очевидно, должно быть в настройках шифрования, иначе ваша оперативная память будет протекать туда), это должно быть безопасно.
На ноутбуке лучшим методом, вероятно, будет закрытие крышки, например, в этом посте упоминается, что:
HandleLidSwitch=hibernate
на /etc/systemd/logind.conf
должно сработать
В качестве альтернативы следует настроить сочетание клавиш или действие кнопки питания. Как перейти в спящий режим из интерфейса командной строки: как перейти в спящий режим в Ubuntu 16.04? упоминает:
sudo systemctl hibernate
Вы также можете использовать gocryptfs. По моему опыту, это значительно быстрее, чем cryfs с большими зашифрованными общими ресурсами, но не скрывает структуру (размеры файлов и количество файлов). в зависимости от вашей модели угрозы это может быть или не быть проблемой.
Установить
apt install gocryptfs
Для инициализации baseir (один раз)
gocryptfs -init basedir
Чтобы смонтировать basedir (зашифрованная версия) на mountdir (незашифрованная версия)
gocryptfs basedir mountdir