howto-db/data/pages/unix/file_encryption.txt
2024-02-10 12:53:55 +00:00

92 lines
4.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== Шифрование файлов в Юникс-системах ======
===== Шифрование с помощью openssl =====
//
Верховный суд США одобрил поправки в законодательство, дающие
правоохранительным органам право на доступ к компьютерам, находящимся в
любом месте, даже за границей.
(с)Би-Би-Си
//
В связи с этим вот, что хочу сказать. Надежное шифрование файлов делается так:
<code bash>
openssl enc -e -aes-256-cbc -md sha256 -in FILE -out CRYPTFILE
</code>
Где FILE - это исходный файл, а CRYPTFILE - зашифрованный результат.
Расшифровка:
<code bash>
openssl enc -d -aes-256-cbc -md sha256 -in CRYPTFILE -out FILE
</code>
Пароль вам предложат ввести.
Конечно, шифрующих программ очень много, но это будет работать везде и
всегда. Скажем, вы можете шифровать файл в IBM AIX, а расшифровать в Убунте
или OpenBSD. Ничего устанавливать не нужно, это вcтроено в Юниксы.
===== Шифрование с помощью GPG =====
Этот способ подходит как для создания бэкапов, так и для шифрования файлов с последующей безопасной отправкой какому-либо получателю.
Если шифруете свой бэкап для себя же, в качестве публичного ключа получателя выбирайте свой публичный ключ (и желательно, чтобы он был бессрочным).
Смотрим список ключей GPG:
<code bash>gpg --list-keys</code>
Сжимаем и шифруем:
<code bash>tar -cz ./catalog/* | gpg --trust-model always -e -r 'User <user@server.com>' -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</code>
Расшифровываем и распаковываем:
<code bash>gpg -d catalog.tar.gz.gpg | tar -xz
#gpg попросит ввести пароль от приватного ключа.
#файлы будут извлечены в текущий каталог.</code>
Для удобства распаковки архивов, созданных с использованием разных архиваторов, можно применять подобный скрипт: \\
(можно прописать в ~/.bash_aliases)
<code bash>
#!/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
</code>
====== Ссылки ======
GnuPG: [[wpru>GnuPG|https://ru.wikipedia.org/wiki/GnuPG]]