Skip to content

Шифрование с openssl и gpg

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

OpenSSL шифрование

openssl aes-256-cbc -salt -in file.txt -out file.txt.aes    # зашифровать файл
openssl aes-256-cbc -d -salt -in file.txt.aes -out file.txt   # расшифровать файл

Архивирование и шифрование каталога

tar -cf - directory | openssl aes-256-cbc -salt -out directory.tar.aes      # заархивировать и зашифровать директории
openssl aes-256-cbc -d -salt -in directory.tar.aes | tar -x -f -         # расшифровать директории и распаковать архив

То-же самое, только тип архива tar.xz

tar -cJf - directory | openssl aes-256-cbc -salt -out directory.tar.xz.aes  # заархивировать и зашифровать директории
openssl aes-256-cbc -d -salt -in directory.tar.xz.aes | tar -xJ -f -     # расшифровать директории и распаковать архив
  • -e - шифровть (можно не указывать)
  • -d - дешифровать
  • -in <file> - входящий файл
  • -out <file> - исходящий файл после процесса
  • -k <text> - это будет паролем (не безопасно)
  • -kfile <file> - первая строка в файле будет паролем

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)

Денис Валентинович