Библиотека сайта rus-linux.net
Шифрование сообщений и файлов в Linux с помощью OpenSSL
Оригинал: Using OpenSSL to encrypt messages and files on LinuxАвтор: Lubos Rendek
Дата публикации: январь 2013 года
Перевод: А. Кривошей
Дата перевода: октябрь 2013 г.
1. Введение
OpenSSL - это мощный криптографический инструментарий. Многие из нас уже использовали OpenSSL для создания приватных ключей RSA или CSR (Certificate Signing Request). Однако знаете ли вы, что с помощью OpenSSL можно тестировать производительность вашего компьютера, а также шифровать файлы и сообщения? В этой статье мы рассмотрим простые примеры применения OpenSSL для шифрования файлов и сообщений.
2. Шифрование и дешифровка сообщений
Мы начнем с шифрования простых сообщений. Приведенная ниже команда шифрует сообщение "Welcome to LinuxCareer.com", используя Base64 Encoding:
$ $ echo "Welcome to LinuxCareer.com" | openssl enc -base64 V2VsY29tZSB0byBMaW51eENhcmVlci5jb20K
Вывод команды представляет собой шифр, содержащий сообщение "Welcome to LinuxCareer.com". Для расшифровки этой строки используется та же команда с опцией -d:
$ echo "V2VsY29tZSB0byBMaW51eENhcmVlci5jb20K" | openssl enc -base64 -d Welcome to LinuxCareer.com
Описанный выше алгоритм шифрования прост в использовании, однако его важным недостатком является отсутствие пароля шифрования. Например, попробуйте расшифровать следующую строку, используя пароль "pass":
U2FsdGVkX181xscMhkpIA6J0qd76N/nSjjTc9NrDUC0CBSLpZQxQ2Db7ipd7kexj
Для этого снова используется OpenSSL с опцией -d и методом шифрования aes-256-cbc:
Как вы уже наверное догадались, для создания зашифрованного с паролем сообщения вы можете использовать следующую команду:
$ echo "OpenSSL" | openssl enc -aes-256-cbc -a enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: U2FsdGVkX185E3H2me2D+qmCfkEsXDTn8nCn/4sblr8=
Если вы хотите выводить зашифрованные сообщения в файл вместо STDOUT, просто перенаправляйте вывод с помощью ">". При сохранении шифра в файле, вы можете опустить опцию -a, так как вам больше не нужен вывод в виде ASCII-текста:
$ echo "OpenSSL" | openssl enc -aes-256-cbc > openssl.dat enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: $ file openssl.dat openssl.dat: data
Для расшифровки файла openssl.dat используем команду:
$ openssl enc -aes-256-cbc -d -in openssl.dat enter aes-256-cbc decryption password: OpenSSL
3. Шифрование и дешифровка файлов
Шифровать файлы с OpenSSL так же просто, как и сообщения. Единственное отличие в том, что вместо команды echo используется опция -in, чтобы задать исходный файл, и опция -out, чтобы задать имя, под которым будет сохранен зашифрованный файл:
$ openssl enc -aes-256-cbc -in /etc/services -out services.dat
расшифровка нашего файла:
$ openssl enc -aes-256-cbc -d -in services.dat > services.txt enter aes-256-cbc decryption password:
4. Шифрование и дешифровка директорий
В случае, если вам необходимо зашифровать всю директорию, сначала необходимо заархивировать ее, а затем зашифровать полученный архив. Все это можно сделать одной командой:
# tar cz /etc | openssl enc -aes-256-cbc -out etc.tar.gz.dat tar: Removing leading `/' from member names enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password:
Для дешифровки и извлечения содержимого в текущую директорию используется команда:
# openssl enc -aes-256-cbc -d -in etc.tar.gz.dat | tar xz enter aes-256-cbc decryption password:
Описанный выше метод можно использовать для автоматического резервного копирования с шифрованием резервных копий.
5. Заключение
Все описанное выше предсталяет собой только введение в возможности OpenSSL по шифрованию. Возможности OpenSSL как инструментария для шифрования практически безграничны. Если вы хотите узнать больше о различных методах шифрования, используемых OpenSSL, почитайте его man-страницу:
$ man openssl