В этой статье мы обсудим OpenSSL, зачем его использовать, и самое главное, как его использовать. Но прежде чем мы начнем: что такое OpenSSL?


OpenSSL

Описание изображения
Источник: OpenSSL

OpenSSL — это программа и библиотека, которая поддерживает множество различных криптографические операциинекоторые из которых:
Генерация пар открытого/закрытого ключа, хеш-функции, шифрование с открытым ключом, шифрование с симметричным ключом, цифровые подписи, создание сертификата и так далее. Каждая из операций, поддерживаемых OpenSSL, имеет множество опций и функций, таких как файлы ввода/вывода, параметры алгоритма и форматы. OpenSSL изначально реализует протоколы TLS/SSL в системах и на веб-сайтах. Компания разрабатывает технологию более 20 лет и широко используется такими гигантами индустрии программного обеспечения, как Google и Amazon.


Что такое АЕС?

Описание изображения
Источник: Магазин SSL

AES — Advanced Encryption Standard (также известный как Rijndael) — это криптографический примитив, предназначенный для создания систем симметричного шифрования (Symmetric Encryption и Asymmetric, подробнее см. здесь) и дешифрования. По сути, AES — это алгоритм с симметричным ключом, что означает, что он использует один и тот же ключ во время шифрования/дешифрования.

Криптография AES работает как блочный шифр, то есть работает с блоками фиксированного размера (128 бит или 16 байт). Как и все блочные шифры, его можно преобразовать в потоковый шифр (для работы с данными произвольного размера) с помощью одного режима работы, но здесь это не так. Он может работать со 128, 192 или 256-битными ключами (алгоритм Rijndael, который дал начало AES, позволяет использовать ключи большего размера).

Теперь, когда мы уже знаем, что такое AES и как он изначально работает, давайте получим доступ к его функциям через OpenSSL в нашем терминале. Список поддерживаемых шифров можно просмотреть с помощью следующей команды:

openssl list-cipher-commands

Описание изображения
Part of the algorithms in the list

Вот я выбираю -aes-26-cbc
Шифрование с симметричным ключом выполняется с помощью enc работу OpenSSL.
Метод, который мы собираемся использовать, заключается в указании пароля при подаче команды. Сначала я создал папку на рабочем столе с именем «open-ssl», куда я поместил файл, который я буду шифровать (файл изображения) «vaultree.jpeg».

Описание изображения


Давайте зашифруем наше изображение

Как мы видим на скриншоте выше, в папке «open_ssl» есть только один файл изображения, который мы собираемся зашифровать. И для этой цели мы используем команду ниже:

openssl enc -aes-256-cbc -pass pass:pedroaravena -p -in vaultree.jpeg -out file.enc

Описание изображения

Теперь наше изображение зашифровано, и мы получили значения соли, ключа и IV.
Теперь в нашей папке open-ssl у нас есть изображение и зашифрованное. Зашифрованный получает имя «enc.file».

Описание изображения

Описание изображения

Мы использовали множество команд для шифрования файла. Но что означает каждый из них? Вот список с объяснением каждой части команды:

-aes-256-cbc: имя шифра (симметричный шифр: AES; преобразование блока в поток: CBC (цепочка блоков шифра))
-pass pass: — назначить пароль (здесь пароль pedroaravena)
-P: Распечатайте использованную соль, ключ и капельницу.
-in file: входной файл / абсолютный путь к входному файлу (в нашем примере: vaultree.jpeg)
-out file: выходной файл / абсолютный путь к выходному файлу (здесь file.enc)


Давайте расшифруем зашифрованное изображение

openssl enc -aes-256-cbc -pass pass:pedroaravena -d -in file.enc -out vaultree_new.jpeg -P

Описание изображения

После процесса расшифровки мы теперь видим новое изображение с именем «vaultree_new.jpeg» в той же папке.

Опять же, давайте разберемся, какие именно коды мы использовали в нашей команде:

-d : Используется для расшифровки входных данных.
-in file: введите абсолютный путь к файлу (в нашем случае file.enc)
-out file: выходной файл абсолютный путь (vaultree_new.jpeg в нашем примере)
-P: Распечатайте использованную соль, ключ и IV (точно так же, как информацию, которую мы получили ранее).


Обратите внимание на разрывы строк

При работе с шифрованием AES вы сталкиваетесь с ситуацией, когда кодировщик создает данные в кодировке base 64 с разрывами строк или без них. Чтобы решить эту возможную проблему, вы просто добавляете -A в свою командную строку. Итак, это должно выглядеть так:

openssl enc -aes-256-cbc -pass pass:pedroaravena -d -A -in file.enc -out vaultree_new.jpeg -p

-A: кодирование/декодирование base64 в зависимости от флага шифрования.
openssl enc --help: для получения дополнительной информации и параметров (например, некоторые другие имена шифров, как указать соль и т. д.).


Теперь давайте сделаем это без указания флага пароля

Описание изображения

С помощью следующей команды для процесса шифрования:

openssl enc -aes-256-cbc -p -in vaultree.jpeg -out file.enc

Вам будет предложено ввести пароль и подтвердить его.


Следующая команда для расшифровки

openssl enc -aes-256-cbc -d -A -in file.enc -out vaultree_new.jpeg -p

Здесь он спросит пароль, который мы дали при шифровании.

-nosalt заключается в том, чтобы не добавлять соль по умолчанию. В большинстве случаев соль по умолчанию включена. Вы можете указать его, используя -Salt.

Вы также можете указать значение соли с помощью флага -S. Если вы предоставляете значение соли, то вы берете на себя ответственность за создание правильных солей, пытаясь сделать их как можно более уникальными (вы должны создавать их случайным образом). Мы настоятельно рекомендуем вам позволить openssl справиться с этим.

При использовании соли первые восемь байт зашифрованных данных резервируются для соли, она генерируется случайным образом при шифровании файла и считывается из зашифрованного файла при его расшифровке.
Итак, если вы откроете это файл.enc в текстовом редакторе вы должны увидеть что-то вроде этого:

Описание изображения


Вывод

Описание изображения

Довольно круто, да? Шифрование файлов с помощью OpenSSL (Подробнее об этом здесь), но, что, если вы хотите зашифровать всю базу данных? И не только это, давайте предположим, что вы хотите зашифровать всю базу данных и при этом выполнять вычисления и манипулировать зашифрованными данными?!

Описание изображения

Vaultree разработала технологию шифрования баз данных, и шифр AES — это только один из нескольких шифров, которые мы поддерживаем в нашем SDK. Vaultree SDK позволяет вам выбрать свой шифр: AES, DES, 3DES (TripleDES), Blowfish, Twofish, Skipjack и другие, с выбираемым пользователем размером ключа: вы буквально выбираете, какой стандарт шифрования лучше всего соответствует вашим потребностям.

Наш SDK интегрируется с базами данных и шифрует все данные полностью функциональным способом, от поиска до арифметических операций, вы выбираете, что вы хотите делать с вашими данными, без необходимости их раскрытия. Полностью зашифрованный SQL взаимодействует с базой данных в среде с нулевым доверием.

Компания Vaultree разработала первое в мире полнофункциональное решение для шифрования используемых данных, которое решает фундаментальную проблему безопасности отрасли: постоянное шифрование данных даже в случае утечки. Хотите узнать больше о революции шифрования баз данных, которую мы создаем прямо сейчас? Запросить бесплатную демоверсию с нами. = Д


О Волтри

Используемое шифрование Vaultree позволяет предприятиям любого размера обрабатывать (поиск и вычисление) полностью зашифрованные данные без необходимости расшифровки. Простое в использовании и интеграции, Vaultree обеспечивает максимальную производительность без ущерба для безопасности, нейтрализуя слабые места традиционного шифрования или других решений на основе технологии повышения конфиденциальности (PET). Следите за Vaultree на Твиттер (@Vaultree), LinkedIn, Реддит (r/Vaultree) или dev.to. Посещать www.vaultree.comа также подпишитесь на демонстрацию продукта и нашу рассылку новостей, чтобы быть в курсе разработки продуктов и новостей компании.