На главную

Памятка по OpenSSL

Сборка для Windows. На Linux-системах уже установлена. Версия OpenSSL openssl version Вывод краткой справки по параметрам, например, команды rand openssl help rand Более полное описание вы можете найти в интернете или посмотрев страницы man в Linux. Перекодировать двоичный файл в кодировку base64 openssl base64 -A -in W:\sym.key -out W:\pwds.txt Из кодировки обратно openssl base64 -A -d -in W:\pwds.txt -out W:\sym.key base64 можно использовать для отсылки двоичных файлов в виде текста либо для генерации парольного файла для OpenSSL из двоичного случайного файла, т.к. пароль для OpenSSL должен быть на первой строке файла. Уберите параметр "-A" если хотите, чтобы данные в base64 были многострочными (не подходит для парольного файла).
Вычисление хешей Вычислить 512-битный хеш по стандарту sha-3. Результат в файл W:\hash openssl dgst -sha3-512 -out W:\hash W:\data.txt Результат на экран консоли. Хеш sha-2 512 бит openssl dgst -sha512 W:\data.txt hmac: хеш sha-3 512 бит файла W:\data.txt с паролем из файла file:W:\pwd.txt . openssl dgst -sha3-512 -hmac file:W:\pwd.txt -out W:\hmac W:\data.txt hmac может применяться для дополнительного удостоверения подлинности сообщения. Если файл W:\pwd.txt есть у обоих собеседников, то они могут передать data.txt и hmac, не передавая при этом pwd.txt. Если hmac сходится, то файл подлинный. Все пароли в файлах паролей должны быть на первой строке текстового файла как для hmac, так и для симметричного шифрования. Строка должна быть только одна, т.к. вторая может тоже задать пароль (для выходного файла, но только в некоторых режимах).
Симметричное шифрование Доступные симметричные шифры openssl enc -ciphers OpenSSL никогда не выравнивает размер файлов. Поэтому, старайтесь при шифровании шифровать архивы, где один из файлов будет просто заполнен белибердой, чтобы скрыть истинный размер шифруемого файла. Особенно это касается небольших файлов. Сгенерировать файл со случайными байтами (1024 байта): openssl rand -out W:\noise 1024 В иных случаях (для генерации ключей) лучше использовать другие генераторы случайных чисел. Разумеется, вместо 1024 байтов вы можете сгенерировать гораздо больше данных openssl rand -out W:\noise 512000 (чуть меньше половины мегабайта данных). Это особенно хорошо, если вы генерируете файл для заполнения флешки, который затем будет расширен иной программой шифрования. Каждый раз вводите разные значения размера генерируемого файла, т.к. если злоумышленник будет знать, какой размер вы используете постоянно, то сможет догадаться о размере основного файла. Так что сегодня вы введёте openssl rand -out W:\noise 512000 завтра openssl rand -out W:\noise 387545 послезавтра openssl rand -out W:\noise 982884 и так далее. Размер можно задавать отбалды, просто набирая тот размер, который вам не жалко. Если вы хотите (зачем либо) сгенерировать файл в текстовом формате (HEX-кодировка случайных данных), введите openssl rand -hex -out W:\noise 1024 Шифруем AES 256 бит в режиме CBC с паролем из файла W:\pwds.txt (не используйте тот же файл пароля, что и для hmac! не забывайте, что этот файл также надо шифровать при хранении и расшифровывать при использовании). openssl enc -e -aes-256-cbc -md sha3-512 -salt -pbkdf2 -iter +1000000 -pass file:W:\pwds.txt -in W:\data.txt -out W:\data.txt.crypted Расшифровать openssl enc -d -aes-256-cbc -md sha3-512 -salt -pbkdf2 -iter +1000000 -pass file:W:\pwds.txt -in W:\data.txt.crypted -out W:\decrypted.txt Аналогично с шифром chacha20 openssl enc -e -chacha20 -md sha3-512 -salt -pbkdf2 -iter +1000000 -pass file:W:\pwds.txt -in W:\data.txt -out W:\data.txt.crypted openssl enc -d -chacha20 -md sha3-512 -salt -pbkdf2 -iter +1000000 -pass file:W:\pwds.txt -in W:\data.txt.crypted -out W:\decrypted.txt Если вы хотите вводить пароль с клавиатуры openssl enc -e -chacha20 -md sha3-512 -salt -pbkdf2 -iter +1000000 -in W:\data.txt -out W:\data.txt.crypted openssl enc -d -chacha20 -md sha3-512 -salt -pbkdf2 -iter +1000000 -in W:\data.txt.crypted -out W:\decrypted.txt На всякий случай проверяйте, что файлы действительно зашифровались. Если забыть ввести алгоритм шифрования, то файл просто скопируется в расшифрованном виде.
Асимметричное шифрование: генерация ключей В файле W:\rnd сгенерированная другим приложением псевдослучайная последовательность (не обязательно) openssl genrsa -rand W:\rnd -out W:\key.priv 16384 Извлечь публичный ключ openssl rsa -in W:\key.priv -out W:\key.pub -pubout -check Проверьте, что key.pub намного меньше, чем key.priv (например, 3 кб и 13 кб). key.priv нужно зашифровать вручную, как показано выше (варианты автошифрования ниже немного хуже). То же, но шифрованный AES с паролем с клавиатуры openssl genrsa -rand W:\rnd -out W:\key.priv -aes-256-cbc 16384 Извлечь публичный ключ openssl rsa -in W:\key.priv -out W:\key.pub -pubout -check То же, но шифрованный с паролем из файла W:\pwds.txt openssl genrsa -rand W:\rnd -out W:\key.priv -aes-256-cbc -passout file:W:\pwds.txt 16384 Извлечь публичный ключ openssl rsa -passin file:W:\pwds.txt -in W:\key.priv -out W:\key.pub -pubout -check
Асимметричное шифрование: шифрование Зашифровать RSA можно файл, несколько меньше размера ключа RSA. Так что не пытайтесь зашифровать 256-битный файл ключом длиной 2048 битов - не получится. Зашифровать ключевой файл W:\sym.key с помощью RSA (RSA шифрует только маленькие файлы) openssl rsautl -inkey W:\key.pub -pubin -encrypt -oaep -in W:\sym.key -out W:\sym.key.rsa Расшифровать ключевой файл openssl rsautl -inkey W:\key.priv -decrypt -oaep -in W:\sym.key.rsa -out W:\sym.key
Асимметричное шифрование: подписывание и проверка подписи Вычисляем подписываемый хеш openssl dgst -sha3-512 -out W:\hash W:\data.txt Подписываем хеш openssl rsautl -sign -inkey W:\key.priv -in W:\hash -out W:\sig Расшифровываем хеш для проверки openssl rsautl -verify -pubin -inkey W:\key.pub -in W:\sig -out W:\hash2 Далее проверяем на идентичность вычисленный от файла hash и расшифрованный из подписи hash2 вручную.
???