Unix-way → Как шифровать файлы с помощью GPG в Linux

В статье показано как легко и просто зашифровать любой файл с помощью криптографии GnuPG. Это может быть очень полезно для файлов в которых хранятся пароли или какая-либо личная информация.

GNU Privacy Guard (GnuPG или GPG) распространяется по лицензия GPL. Совместим с текущим стандартам RFC 4880 спецификации OpenPGP.

Вариант 1 — Шифрование с симметрическим ключом

Это самый простой способ. Для шифрования файла нужно ввести пароль, и этот же пароль для расшифровки. К примеру возьмем файл file.txt в котором записана информация 1234.

Для шифрования файла Используем опцию -с или --symmetric:

gpg -c file.txt 


Получим:

gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/pubring.gpg' created


На этом компьютере — это было самый первый запуск GPG. Потому был создан каталог /root/.gnupg. Как только был введен 2 раза пароль создастся новый файл:

ls -l


Увидим файлы:

-rw-r--r--  1 root   root  file.txt
-rw-r--r--  1 root   root  file.txt.gpg


Теперь можно перемещать созданный gpg файл, а открытый текст удалить. Открывается зашифрованный файл командой с опцией -d:

gpg -d file.txt.gpg


Получим в терминал:

gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: CAST5 encrypted data
gpg: gpg-agent is not available in this session
gpg: encrypted with 1 passphrase
secret 1234
gpg: WARNING: message was not integrity protected


Для записи информации в файл можно использовать опцию -o:

gpg -o newfile.txt -d file.txt.gpg 


Проверяем:

ls -l

-rw-r--r-- 1 root root newfile.txt
-rw-r--r-- 1 root root file.txt
-rw-r--r-- 1 root root file.txt.gpg

cat newfile.txt

1234


Вариант 2 — Шифрование с открытым/закрытым ключом

Существует и другой подход к шифрованию. GPG нам позволяет использовать ключи шифрования для операций с файлами на Windows и Linux. Преимущество — вы можете сохранить открытый ключ и использовать его в любом месте. Нам надо будет использовать сертификат, который состоит из двух различных ключей private и public.

Private ключ должен оставаться исключительно у владельца сертификата. Он будет использоваться для расшифровки файлов, которые отправлены через почту, FTP или HTTP.

Public ключ может быть дан кому нужно. Он будет использоваться для шифрования файлов на имя владельца сертификата. Только владелец private ключа сможет расшифровать отправленный файл.

Ключи можно сгенирировать с помощью опции --gen-key:

gpg --gen-key


Посмотреть все ключи можно при помощи опции --list-keys или --list-secret-keys.

Шифрование с puclic ключом

Теперь можно попробовать зашифровать файл при помощи открытого ключа:

gpg -e -r admin@site.com file.txt


Получим файл с именем file.txt.gpg. Опции -e -r означают:

— шифрование данных.
-r — шифрование с ID пользователя. Если эта опция не указана — GnuPG запросит у вас эту информацию.

Расшифровка с помощью Private ключа

Для расшифровки файла можно использовать опции -d и -о:

gpg -d file.txt.gpg -o newfile.txt


Импорт новых ключей

Для шифрования файла нужно уметь импортировать открытые ключи:

gpg --import KEYFILE


Чтобы добавить ключ в доверенные. Выполните:

gpg --edit-key NAME


Через время вас спросят «trust: undefined validity: unknown». Введите trust. Для выхода из консоли введите quit.
  • avatar
  • pashtuun
  • 7761
  • +11
  • 13 января 2013, 10:45

Комментариум (1)

RSS свернуть / развернуть
+
+1
avatar

makenskiy

  • 14 января 2013, 16:11

  • Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/makenskiy/www/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Для просто хранения информации, можно любой архиватор с паролем пользоватать или openssl, благодаря этому получаем не только файл, но и каталог, что в разы удобней. Я делаю так c OpenSSL

# Шифрование директории
# tar -cf - directory_name | openssl aes-128-cbc -salt -out directory_name.tar.aes

# Дешифровка директории
# openssl aes-128-cbc -d -salt -in directory_name.tar.aes | tar -x -f -


# Шифрование файла
# openssl aes-128-cbc -salt -in file_name -out file_name.aes

# Дешифровка файла
# openssl aes-128-cbc -d -salt -in file_name.aes -out file_name 

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.