Как зашифровать отдельные папки?

Допустим, у меня есть папка в папке "Документы", в которой есть файлы, к которым никто не хочет обращаться без пароля.

Есть ли способ заблокировать эту папку, чтобы она была защищена паролем / зашифрована?

На самом деле, возможно ли защитить паролем любую отдельную папку?

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, сеансы редактирования и истории отмен и т. д.

Несколько советов о том, как это сделать:

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"
)

GitHub вверх по течению.

Использование происходит следующим образом.

Сначала смонтируйте зашифрованный каталог:

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://www.cryfs.org/comparison/

  • 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, похоже, не существует автоматического способа сделать это, но, надеюсь, он будет реализован рано или поздно, некоторые руководства:

Переключатель Kill включил безопасность шифрования ноутбука

Хорошо, сейчас мы приближаемся к уровню паранойи opsec в ЦРУ / Шелковом пути: как быстро гарантировать, что ваши данные не могут быть расшифрованы, если вас поймают с включенным компьютером и у вас есть секунда для действий.

Во-первых, приостановка в ОЗУ кажется недостаточно хорошей, переход в спящий режим будет более разумным шагом:

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

На ноутбуке лучшим методом, вероятно, будет закрытие крышки, например, в этом посте упоминается, что:

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
Другие вопросы по тегам