Skip to content

Latest commit

 

History

History
 
 

11_crypto_assymetric

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Домашнее задание к занятию «Ассиметричные криптосистемы»

В качестве результата пришлите ответы на вопросы в личном кабинете студента на сайте netology.ru.

Общие замечания по безопасности

При скачивании любых файлов перед их открытием рекомендуем вам проверять их с помощью сервиса VirusTotal.

Общие замечания по выполнению ДЗ

Если у вас что-то не получилось, то пишите в канал курса, обязательно указывая:

  1. Номер ДЗ
  2. ОС
  3. На каком шаге остановились
  4. Скриншот ошибки
  5. Краткое описание того, что сделали

Пожалуйста, не пишите сообщения в стиле я всё сделал по инструкции, ничего не работает - это никоим образом не поможет решить проблему.

Работа в терминале

Ознакомьтесь с руководством по работе в терминале для вашей операционной системы.

Задача LibreSSL & OpenSSL

Справка

OpenSSL - Open Source криптографическая библиотека.

LibreSSL - форк (ответвление) от библиотеки OpenSSL, развиваемое в рамках проекта OpenBSD.

Установка

Windows

Пользователем Windows мы предлагаем воспользоваться возможностями проекта Cygwin, который предоставляет набор инструментов из мира Linux для ОС Windows.

Инструкция по установке
Шаг 0. Перейдите на главную страницу и скачайте установочный файл:

Шаг 1. После чего запустите его на установку и нажмите на кнопку Далее:

Шаг 2. Оставьте значение по умолчанию (Install from Internet) и нажмите на кнопку Далее:

Шаг 3. Оставьте значения по умолчанию и нажмите на кнопку Далее:

Шаг 4. Оставьте значения по умолчанию и нажмите на кнопку Далее:

Шаг 5. Оставьте значения по умолчанию и нажмите на кнопку Далее:

Шаг 6. Выберите любой сервер из списка и нажмите на кнопку Далее:

Шаг 7. Оставьте значения по умолчанию и нажмите на кнопку Далее:

Шаг 8. Оставьте значения по умолчанию и нажмите на кнопку Готово:

Шаг 9. Откройте Cygwin Terminal через иконку на Рабочем Столе:

Шаг 10. Введите команду openssl version (можете продолжать работу):

По умолчанию вы будете находиться в каталоге C:/cygwin64/home/<Имя вашего пользователя>.

Linux

Для пользователей Linux (Ubuntu) необходимо выполнить в терминале команду: openssl version. Если в результате вы видите вывод вроде OpenSSL 1.1.1f 31 Mar 2020 (версия и дата могут отличаться) а не Command 'openssl' not found, тогда вам не нужно ничего устанавливать.

Если же вы получили сообщение о том, что команда openssl не найдена, выполните следующую команду: sudo apt-get install openssl.

Mac OS

Для пользователей 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 (кодовую фразу).

Шаг 1. Создайте закрытый ключ с длиной 2048:

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-----

Шаг 2. Сгенерируйте открытый ключ на базе закрытого:

openssl pkey -pubout -in private.key -out public.key

Где pkey - подкоманда, отвечающая за обработку ключей.

Откройте файл public.key (можете просмотреть в терминале с помощью команды cat private.key) в любом текстовом редакторе, удостоверьтесь, что он выглядит примерно так:

-----BEGIN PUBLIC KEY-----
...
МНОГО БУКВ
...
-----END PUBLIC KEY-----

Шаг 3. Создайте файл message.txt со своей фамилией

Шаг 4. Зашифруйте сообщение с помощью публичного ключа:

openssl pkeyutl -encrypt -pubin -inkey public.key -in message.txt -out cypher.txt

Где pkeyutl - подкоманда, отвечающая за низкоуровневые операции с публичными ключами (включая шифрование и расшифрование).

Откройте файл cypher.txt в любом текстовом редакторе, удостоверьтесь, что он не читабелен.

Шаг 5. Убедитесь, что файл cyper.txt расшифровывается:

openssl pkeyutl -decrypt -inkey private.key -in cypher.txt -out decrypted.txt

Результат

В качестве результата пришлите:

  1. Публичный и приватный ключ
  2. Passphrase
  3. Зашифрованный файл