Оглавление

Шифрование файлов

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 -        # Дешифровка директории

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                 # Может содержать больше одного ключа
Некоторые часто используемые опции:

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

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

# 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)

Оглавление