====== Шифрование файлов в Юникс-системах ====== ===== Шифрование с помощью openssl ===== // Верховный суд США одобрил поправки в законодательство, дающие правоохранительным органам право на доступ к компьютерам, находящимся в любом месте, даже за границей. (с)Би-Би-Си // В связи с этим вот, что хочу сказать. Надежное шифрование файлов делается так: openssl enc -e -aes-256-cbc -md sha256 -in FILE -out CRYPTFILE Где FILE - это исходный файл, а CRYPTFILE - зашифрованный результат. Расшифровка: openssl enc -d -aes-256-cbc -md sha256 -in CRYPTFILE -out FILE Пароль вам предложат ввести. Конечно, шифрующих программ очень много, но это будет работать везде и всегда. Скажем, вы можете шифровать файл в IBM AIX, а расшифровать в Убунте или OpenBSD. Ничего устанавливать не нужно, это вcтроено в Юниксы. ===== Шифрование с помощью GPG ===== Этот способ подходит как для создания бэкапов, так и для шифрования файлов с последующей безопасной отправкой какому-либо получателю. Если шифруете свой бэкап для себя же, в качестве публичного ключа получателя выбирайте свой публичный ключ (и желательно, чтобы он был бессрочным). Смотрим список ключей GPG: gpg --list-keys Сжимаем и шифруем: tar -cz ./catalog/* | gpg --trust-model always -e -r 'User ' -o ./catalog.tar.gz.gpg #или так (c использованием ID ключа): tar -cz ./catalog/* | gpg --trust-model always -e -r 9719AC4AE23BBAF5399FE03AA997BBAC69B92B43 -o ./catalog.tar.gz.gpg #или так (c максимальным сжатием): tar -c ./catalog/* | gzip -9 | gpg --trust-model always -e -r 9719AC4AE23BBAF5399FE03AA997BBAC69B92B43 -o ./catalog.tar.gz.gpg Расшифровываем и распаковываем: gpg -d catalog.tar.gz.gpg | tar -xz #gpg попросит ввести пароль от приватного ключа. #файлы будут извлечены в текущий каталог. Для удобства распаковки архивов, созданных с использованием разных архиваторов, можно применять подобный скрипт: \\ (можно прописать в ~/.bash_aliases) #!/bin/sh #в качестве параметра указывать имя файла вида *.tar.gz.gpg или *.bz2.gpg if [ -z "$1" ] then echo 'Не указано имя файла для обработки. Выход.' exit 0 elif [ ! -f "$1" ] then echo "Указанный файл ($1) не существует. Выход." exit 0; fi DIR=$(dirname "$0") FNAME=$(echo "$1" | sed 's/.gpg$//g') gpg -o "$DIR/$FNAME" -d "$1" echo 'Расшифровка завершена.' case $FNAME in *'tar.gz'*) echo 'Распаковываем *.tar.gz...' tar -xf "$DIR/$FNAME" #rm -f "$DIR/$FNAME" echo 'Архивный файл распакован.' ;; *'bz2'*) echo 'Распаковываем *.bz2...' bzip2 -d "$DIR/$FNAME" #rm -f "$DIR/$FNAME" echo 'Архивный файл распакован.' ;; esac ====== Ссылки ====== GnuPG: [[wpru>GnuPG|https://ru.wikipedia.org/wiki/GnuPG]]