Наши партнеры

UnixForum





Библиотека сайта 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