Перевод сборника команд Unix ToolBox. Часть 9 Шифрование файлов

513

И снова поговорим о безопасности. Допустим, вы включили свой Sony Vaio E, составили важный документ, имеющий определенную ценность, и значит предназначенный для узкого круга людей посвященных. Чтобы поделиться своей информацией мы обычно используем сменные носители. типа флэшек, либо отправляем файл по электронной почте. Но сеть несет в себе огромное количество «капканов» призванных похитить вашу информацию, да и сменные носители сплошная дыра. Не говоря уже о том, что флэшку у вас могут банально стырить.

Чтобы ваше авторское творчество, прайсы или схемы размещения ядерных ракет не попали в руки злоумышленников есть рецепт — шифрование файлов! Ниже привожу главу из перевода сборника команд Unix ToolBox, касающуюся именно шифрования информации в файлах.

Шифрование файлов
OpenSSL
Шифрование отдельного файла
# openssl aes-128-cbc -salt -in file -out file.aes # зашифровать файл
# openssl aes-128-cbc -d -salt -in file.aes -out file # расшифровать файл

Естественно файл может быть и архивом.

Архивирование и шифрование директории
# tar -cf — directory | openssl aes-128-cbc -salt -out directory.tar.aes # заархивировать и зашифровать директории
# openssl aes-128-cbc -d -salt -in directory.tar.aes | tar -x -f — # расшифровать директории и распаковать архив
То-же самое, только тип архива tar.gz
# tar -zcf — directory | openssl aes-128-cbc -salt -out directory.tar.gz.aes # заархивировать и зашифровать директории
# openssl aes-128-cbc -d -salt -in directory.tar.gz.aes | tar -xz -f — # расшифровать директории и распаковать архив

  • Используйте -k mysecretpassword после aes-128-cbc, что-бы не спрашивался пароль, но имейте в виду, это очень не безопасно.
  • Используйте aes-256-cbc вместо aes-128-cbc для получения более устойчивого шифра, увеличивается потребление процессора.

GPG шифрование

Альтернатива PGP, распространяемая по лицензии GPL(GNU General Public License).

GnuPG очень известный способ шифрования и подписи электронных писем или других данных, кроме того gpg предоставляет расширенную систему управления ключами. В данных примерах рассматривается только шифрование файлов.
Самым простым является симметричный шифр. В этом случае файл шифруется с помощью пароля, соответственно расшифровать его может тот, кто знает этот пароль, никаких ключей не требуется. GPG добавляет расширение «*.gpg» к имени зашифрованного файла.

# gpg -c file # Зашифровать файл по паролю
# gpg file.gpg # Расшифровать файл ( -o другой файл)
Шифрование с использованием пары ключей

Для более полной информации смотрите GPG Quick Start, GPG/PGP Basics и gnupg documentation.
Приватный ключ и публичный ключ, основа ассиметричной криптографии. О чем нужно помнить:

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

Сперва нужно сгенерировать пару ключей. Значения по-умолчанию вполне подойдут, однако вам нужно будет ввести имя, адрес электронной почты и комментарий (не обязательно). Комментарий полезен при создании более одного ключа для данного имени/e-mail. Так-же вам нужно будет задать ключевую фразу (именно фразу а не слово).

# gpg —gen-key # Это может занять некоторое время

Ключи сохраняются в ~/.gnupg/ в Unix подобных операционных системах и в C:/Documents and Settings/%USERNAME%/Application Data/gnupg/. в Windows.

~/.gnupg/pubring.gpg # Содержит ваш публичный ключ а так-же импортируемые ключи
~/.gnupg/secring.gpg # Может содержать больше одного ключа

Некоторые часто используемые опции:

  • -e Зашифровать данные
  • -d Расшифровать данные
  • -r ИМЯ зашифровать для получателя ИМЯ (или ‘полное имя’ или ’email@domain’)
  • -a Создать «ascii armored» вывод ключа
  • -o Вывести в файл

Шифрование только для персонального использования

Не требует экспорта/импорта какого либо ключа, они у вас уже есть.

# gpg -e -r ‘Your Name’ file # Зашифровать с помощью публичного ключа
# gpg -o file -d file.gpg # Расшифровать. Используется опция -o, иначе пойдкт в stdout
Шифрование — расшифровка с использованием ключей

Для начала вам нужно экспортировать ваш публичный ключ, что-бы им могли пользоваться для расшифровки данных. Так-же вы должны импортировать публичный ключ от Alice, что-бы шифровать файлы для нее. Ключи можно передать в обычном ascii файле.
Например Alice экспортирует ключ, вы его импортируете себе, теперь вы можете шифровать для нее файлы и расшифровать их сможет только она.

# gpg -a -o alicekey.asc —export ‘Alice’ # Alice экспортирует ключ в ascii файл.
# gpg —send-keys —keyserver subkeys.pgp.net KEYID # Alice кладет ключ на сервер.
# gpg —import alicekey.asc # Вы импортируете ключ себе.
# gpg —search-keys —keyserver subkeys.pgp.net ‘Alice’ # Или забираете его на сервере.
# gpg -e -r ‘Alice’ file # Зашифровать файл для Alice.
# gpg -d file.gpg -o file # Расшифровать файл, зашифрованный Alice для вас.
Управление ключами
# gpg —list-keys # Список публичных ключей с KEYIDS
KEYID следует за ‘/’ например для: pub 1024D/D12B77CE — KEYID это D12B77CE
# gpg —gen-revoke ‘Your Name’ # Сгенерировать CRL (certificate revocation list)
# gpg —list-secret-keys # Список приватных ключей
# gpg —delete-keys NAME # Удалмть публичный ключ с локальной «связки ключей»
# gpg —delete-secret-key NAME # Удалить приватный ключ с локальной «связки ключей»
# gpg —fingerprint KEYID # Показать отпечаток ключа
# gpg —edit-key KEYID # Редактировать ключ (например подпись или добавить/удалить email)