На всех переносимых устройствах (ноутбуках) использую полное шифрование диска (с шифрованием swap раздела). Это оправдано, ведь ноутбук могут украсть. Долго не понимал, зачем может понадобится шифрование одной папки, а не диска. Ведь если украдут ноутбук, то наверняка найдут обрывки конфиденциальной информации за пределами этой папки.
Внезапно понял: шифрование папок нужно для флешек. Представьте ситуацию: собираетесь отдыхать на юга. И копируете на флешку файлы с паролями, куками, кешем браузера, кешем программ, чтобы перенести файлы со своей рабочей машины на ноутбук, и не мучиться с перезаходом на любимые сайты, и не перенастраивать программы. Что делаете после этого с флешкой? Правильно! Делаете полное долгое форматирование с обнулением всех ячеек памяти, чтобы нельзя было восстановить данные. От такого прожига жизненный ресурс флешки сокращается. Но выход есть - перенести зашифрованную папку!
Чем зашифровать папку?
Использую Linux Mint 18, поэтому все операции будут описаны для этой ОС.
Сначала устанавливаем инструмент для шифрования eCryptfs. Это можно сделать через стандартный менеджер пакетов в Mint. Нам нужен пакет "ecryptfs-utils":
Либо можно установить его из командной строки:
sudo apt-get install ecryptfs-utils
Как зашифровать папку?
Логика использование шифрования папки такая: монтируем папку как диск, но через утилиту шифрования. Работаем с папкой через обычный файловый менеджер, как с диском: читаем/ добавляем/ удаляем файлы/ папки. Потом отмонтируем папку - её содержимое начинает выглядит как файлы и папки с непонятными названиями и бинарным содержанием.
Папка должна существовать. Поэтому создаём папку, открываем терминал и монтируем её командой:
sudo mount -t ecryptfs /путь/к/папке /путь/к/папке/после/монтирования
Обратите внимание, что пути могут совпадать. Ради удобства мы так и поступим:
sudo mount -t ecryptfs /путь/к/папке /путь/к/папке
Теперь нам предложат выбрать способ шифрования и другие опции. По порядку:
Passphrase - это пароль, с помощью которого будет шифроваться информация в папке
Select cipher - выбор алгоритма шифрования. Можно нажать Enter тогда выберется AES. Возможно, стоит выбрать способ шифрования с ключом большей длины. К примеру Blowfish или Twofish.
Select key bytes - длина ключа. Чем больше - тем безопаснее, но медленнее.
Enable plaintext passthrough (y/n) [n] - запретить доступ к файлам, которые не были зашифрованы. По умолчанию "n" - оставляем как есть.
Enable filename encryption (y/n) [n] - Надо ли шифровать имена файлов. Лучше поставить "y". Иначе названия файлов/ папок могут привлечь внимание. В нерасшифрованном виде они будут такими:
Далее увидите строку:
Filename Encryption Key (FNEK) Signature [09a8a73a4ff6c2c2]
Запомните как выглядит подпись "Signature" для вашего пароля (достаточно запомнить последние символы). Если при следующем монтировании подпись будет другая, то это значит, что неправильно ввели пароль (Passphrase) или выбрали не те способы шифрования.
Далее в терминале будут выведены параметры монтирования:
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=09a8a73a4ff6c2c2
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=09a8a73a4ff6c2c2
Это сделано специально, чтобы в следующей раз при монтировании можно было указать их в качестве параметра к команде, дабы не вводить руками. Смотрите пример команды со всеми параметрами в конце статьи, в параграфе "Как расшифровать?".
Если такой пароль (Passphrase) никогда не вводился ранее то выскочит уведомление:
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)? - Отвечаем "yes". Это значит, что хотим продолжить.
Would you like to append sig [09a8a73a4ff6c2c2] to[/root/.ecryptfs/sig-cache.txt] in order to avoid this warning in the future (yes/no)? - Надо ли запоминать Signature, чтобы в следующий раз не предупреждало? Отвечаем "yes", если уверены, что пароль Passphrase ввели верно.
В случае успешного завершения процесса монтирования, в терминале появится строчка Mounted eCryptfs. Это значит, что папка смонтирована и расшифрована. Можно читать/удалять/добавлять файлы в папку.
После окончания работы с содержимым папки, необходимо отмонтировать её командой:
sudo umount /путь/к/папке
Теперь для проверки работы шифрования можно зайти в папку заново (обновить страничку в файловом браузере через F5) и открыть какой-нибудь файл для проверки шифрования.
Как расшифровать папку?
Процесс расшифровки аналогичен описанному: надо смонтировать зашифрованную папку с теми же параметрами, что были использованы при шифровании (при первом монтировании, когда добавлялись файлы):
sudo mount -t ecryptfs /путь/к/папке /путь/к/папке
Вводим все те же команды, выбираем тот же способ шифрования, тот же ключ, ту же опцию "шифровать имена файлов". Если ввели всё аналогично, то получится смонтировать папку, и все данные будут расшифрованы.
Чтобы не вводить руками информацию о способе шифрования, длине ключа (и все остальные параметры), можно передавать эти данные в команде через параметр "-o":
sudo mount -t ecryptfs /путь/к/папке /путь/к/папке -o ecryptfs_key_bytes=16,ecryptfs_cipher=aes,ecryptfs_unlink_sigs,ecryptfs_fnek_sig=09a8a73a4ff6c2c2,ecryptfs_sig=09a8a73a4ff6c2c2
Можно даже передавать в качества параметра пароль Passphrase (параметр "key"). Но это как-то небезопасно, ведь он передаётся в открытом виде и будет сохранён в истории команд терминала...
Скорость шифрования
К сожалению, не нашёл описания, в какой именно момент происходит шифрование/дешифровка файла. Возможно, она выполняется "на лету", в момент обращения к файлу в смонтированном расшифрованном разделе. Но могу сказать, что скорость копирования файлов с компьютера в такой раздел на флешке составляет ~17 МБ/секунду через USB 3.0 при шифровании AES с ключом в 32 бита. Поэтому вполне возможно смотреть фильмы из зашифрованного раздела.
P.S.
Пожалуйста, напишите в комментариях, какой алгоритм используете.
Если бы были варианты шифрования по ГОСТУ - выбрал бы их.