Шифрование и расшифровка файлов в Linux

Общие сведения о шифровании и расшифровке

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

Если нет времени искать информацию о методах шифрования, то на момент написания статьи вполне надежным, и одним из самых распространенных является алгоритм шифрования AES. Цифры после названия метода, например AES128, обозначают длину ключа (бит), чем больше число, тем надежнее шифр, но дольше будут идти процессы шифрования и расшифровки. Но тут тоже есть нюансы: посмотрите, как легко обнаружить изображение пингвина после шифрования файла в режиме шифрования ECB. Вывод прост - если требуется надежность, необходимо понимание, как работают современные методы шифрования.

В этой статье рассматривается только симметричное шифрование с использованием парольной фразы. Использование ключей и/или асимметричного шифра более надежно, но требует за собой хранения файлов-ключей. Главный недостаток симметричного шифрования заключается только в том, что чтобы передать пароль или ключ нужно использовать исключительно надежные каналы связи. Если передача паролей через интернет не планируется, то это метод вполне надежен.

Чтобы зашифровать все содержимое директории, необходимо сначала её сжать, например, при помощи Zip или Tar, а после расшифровки провести обратный процесс распаковки:

Zip: заархивировать директорию mydir в файл mydir.zip и разархивировать
$ zip -r mydir.zip mydir/
$ unzip mydir.zip
Tar: запаковать (бес сжатия) директорию mydir в файл mydir.tar и распаковать
$ tar -cf mydir.tar mydir/
$ tar -xf mydir.tar

OpenSSL

OpenSSL - программное обеспечение для криптографии с открытыми исходными кодами, присутствует практически на всех UNIX-ОС (Linux, CentOS, Ubuntu, FreeBSD и др.) из коробки, также можно установить и на Windows, но это потребует некоторых усилий.

Зашифровать файл
$ openssl aes-128-cbc -salt -in files.tar.gz -out files.tar.gz.aes -pass pass:111MYSUPERPASS
Расшифровать файл
$ openssl aes-128-cbc -d -salt -in files.tar.gz.aes -out files_decrypt.tar.gz -pass pass:111MYSUPERPASS

Как видно здесь содержимое файла files.tar.gz, находящегося в той же директории, из которой запускается OpenSSL шифруется в файл files.tar.gz.aes и следующей командой содержимое файла files.tar.gz.aes расшифровывается в файл files_decrypt.tar.gz.

Если процесс шифрования и расшифровки производится вручную из командной строки, то из команд лучше убрать параметр -pass (-pass pass:111MYSUPERPASS), в этом случае пароль (111MYSUPERPASS) будет запрашиваться после запуска команды и такой способ более безопасен, так как не оставляет следов - в истории запускаемых команд не будет виден пароль.

Просмотреть список всех доступных алгоритмов шифрования
$ openssl list-cipher-commands
Тестирование скорости работы алгоритмов шифрования
$ openssl speed

GPG

Полное название - GNU Privacy Guard, также можно еще встретить такие наименования: GnuPG, GPG. GnuPG - программа под свободной лицензией GNU General Public License для шифрования информации и создания электронных цифровых подписей.

GPG доступно на многих операционных системах: на Linux, Ubuntu, CentOS, FreeBSD (UNIX-подобных) в штатных репозиториях и без проблем устанавливается из пакетов/портов (зависит от ОС). Для установки в Windows можно использовать пакет утилит GPG4Win.

Зашифровать файл files.tar.gz
$ gpg -c -o files.tar.gz.gpg files.tar.gz
Расшифровать файл files.tar.gz.gpg
$ gpg files.tar.gz.gpg

Пароль шифрования и расшифровки будет запрошен в консоли. Как передать пароль из скрипта к GPG можно прочитать в статье: "Шифрование бекапов".

Для изменения алгоритма шифрования с того, что используется утилитой gpg по умолчанию на другой, можно воспользоваться опцией --cipher-algo.

Использовать для шифрования AES128
$ gpg -c --cipher-algo AES128 -o files.tar.gz.gpg files.tar.gz

Посмотреть все доступные алгоритмы шифрования можно такой командой (раздел Cipher):

Посмотреть версию gpg и все доступные алгоритмы шифрования
$ gpg --version
Опубликовано: 2017/03/13
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/linux.php?txt=708" target="_blank">Шифрование и расшифровка файлов в Linux по паролю</a>
526
Добавить комментарий
Ваш e-mail: (не виден посетителям сайта)
Ваше имя:
Комментарий:
Символы с картинки:
Только выделенные поля формы добавления комментариев обязательны к заполнению.