92 lines
4.0 KiB
Plaintext
92 lines
4.0 KiB
Plaintext
====== Шифрование файлов в Юникс-системах ======
|
||
|
||
===== Шифрование с помощью 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]]
|