В качестве результата пришлите ответы на вопросы в личном кабинете студента на сайте netology.ru.
При скачивании любых файлов перед их открытием рекомендуем вам проверять их с помощью сервиса VirusTotal.
Если у вас что-то не получилось, то пишите в канал курса, обязательно указывая:
- Номер ДЗ
- ОС
- На каком шаге остановились
- Скриншот ошибки
- Краткое описание того, что сделали
Пожалуйста, не пишите сообщения в стиле я всё сделал по инструкции, ничего не работает
- это никоим образом не поможет решить проблему.
Ознакомьтесь с руководством по работе в терминале для вашей операционной системы.
OpenSSL - Open Source криптографическая библиотека.
LibreSSL - форк (ответвление) от библиотеки OpenSSL, развиваемое в рамках проекта OpenBSD.
Пользователем Windows мы предлагаем воспользоваться возможностями проекта Cygwin, который предоставляет набор инструментов из мира Linux для ОС Windows.
Инструкция по установке
По умолчанию вы будете находиться в каталоге C:/cygwin64/home/<Имя вашего пользователя>
.
Для пользователей Linux (Ubuntu) необходимо выполнить в терминале команду: openssl version
. Если в результате вы видите вывод вроде OpenSSL 1.1.1f 31 Mar 2020
(версия и дата могут отличаться) а не Command 'openssl' not found
, тогда вам не нужно ничего устанавливать.
Если же вы получили сообщение о том, что команда openssl
не найдена, выполните следующую команду: sudo apt-get install openssl
.
Для пользователей Mac необходимо выполнить в терминале команду: openssl version
. Если в результате вы видите вывод вроде LibreSSL 2.8.3
(версия может отличаться) а не Command 'openssl' not found
, тогда вам не нужно ничего устанавливать.
Если же вы получили сообщение о том, что команда openssl
не найдена, выполните следующую команду: brew install openssl
.
Запустите терминал и начнём знакомиться с OpenSSL (LibreSSL):
1. Справка по основным командам OpenSSL
openssl help
2. Справка по конкретной команде:
openssl help genrsa
Более детальную справку вы можете найти по адресу: https://www.openssl.org/docs/manmaster/man1/
В этой задаче мы научимся шифровать данные с помощью публичного ключа и расшифровывать с помощью приватного.
Первое, с чего мы должны начать - это сгенерировать ключ. Для этого нужно выбрать алгоритм, размер ключа и passphrase (кодовую фразу).
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -aes256 -out private.key
Где genpkey
- подкоманда, отвечающая за генерацию ключей.
Введите кодовую фразу два раза (обратите внимание, символы не будут отображаться в целях безопасности).
Откройте файл private.key
в любом текстовом редакторе (можете просмотреть в терминале с помощью команды cat private.key
), удостоверьтесь, что он выглядит примерно так:
-----BEGIN ENCRYPTED PRIVATE KEY-----
...
МНОГО БУКВ
...
-----END ENCRYPTED PRIVATE KEY-----
openssl pkey -pubout -in private.key -out public.key
Где pkey
- подкоманда, отвечающая за обработку ключей.
Откройте файл public.key
(можете просмотреть в терминале с помощью команды cat private.key
) в любом текстовом редакторе, удостоверьтесь, что он выглядит примерно так:
-----BEGIN PUBLIC KEY-----
...
МНОГО БУКВ
...
-----END PUBLIC KEY-----
openssl pkeyutl -encrypt -pubin -inkey public.key -in message.txt -out cypher.txt
Где pkeyutl
- подкоманда, отвечающая за низкоуровневые операции с публичными ключами (включая шифрование и расшифрование).
Откройте файл cypher.txt
в любом текстовом редакторе, удостоверьтесь, что он не читабелен.
openssl pkeyutl -decrypt -inkey private.key -in cypher.txt -out decrypted.txt
В качестве результата пришлите:
- Публичный и приватный ключ
- Passphrase
- Зашифрованный файл