From f7178646b400f28232974bec41c453ad608b90d9 Mon Sep 17 00:00:00 2001 From: Vladimir Protsenko Date: Wed, 7 Sep 2022 16:15:59 +0400 Subject: [PATCH] Added tasks for hash, ciphers, ssh, certs lesson. --- 05_hash_ciphers_ssh_certs/solutions.md | 0 05_hash_ciphers_ssh_certs/tasks.md | 72 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 05_hash_ciphers_ssh_certs/solutions.md create mode 100644 05_hash_ciphers_ssh_certs/tasks.md diff --git a/05_hash_ciphers_ssh_certs/solutions.md b/05_hash_ciphers_ssh_certs/solutions.md new file mode 100644 index 0000000..e69de29 diff --git a/05_hash_ciphers_ssh_certs/tasks.md b/05_hash_ciphers_ssh_certs/tasks.md new file mode 100644 index 0000000..71b3bc7 --- /dev/null +++ b/05_hash_ciphers_ssh_certs/tasks.md @@ -0,0 +1,72 @@ +# Задания + +1. Скачайте дистрибутив debian debian-11.4.0-amd64-netinst.iso c http://mirror.corbina.net/debian-cd/current/amd64/iso-cd/. +Рассчитайте хэш sha256 командой sha256sum для дистрибутива debian и проверьте целостность данных, сравнив значение +с значением в файле SHA256SUMS. + +2. Зашифруйте и расшифруйте данные с помощью openssl enc. Используйте команды: +``` +openssl enc -in infile.txt -out encrypted.dat -e -aes256 -k symmetrickey +openssl enc -d -aes-256-cbc -in encrypted.data -out un_encrypted.data +``` + +Для вывода информации о возможных шифрах используйте одну из команд: +``` +openssl help +openssl enc -list +``` + +3. Зашифруйте и расшифруйте данные с помощью openssl. Используйте команды: +``` +gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data +gpg --output un_encrypted.data --decrypt encrypted.data +``` + +4. Сгенерируйте ed25519 пару ключей `ssh-keygen -o -a 100 -t ed25519`. Перейдите в `~/.ssh/` и проверьте, появилась ли пара SSH-ключей. Настройте возможность беспарольного входа в систему по ssh, добавить содержимое публичного ключа (.pub) в `authorized_keys` в той же директории. + +5. Используйте `ssh-copy-id имя-удаленной-машины`, чтобы скопировать ваш ssh-ключ на сервер. Перед установкой попробуйте команду +в тестовом режиме с ключём `-n`. + +6. Отредактируйте `.ssh/config` на локальной машине, чтобы запись выглядела следующим образом +``` + Host псевдоним + User имя пользователя + HostName имя хоста или ip адрес хоста + IdentityFile ~/.ssh/id_ed25519 +``` + +7. Отредактируйте конфигурацию вашего SSH-сервера, выполнив `sudo vi /etc/ssh/sshd_config`. Отключите проверку по паролю, отредактировав значение `PasswordAuthentication`. Отключите вход с правами суперпользователя, отредактировав значение `PermitRootLogin`. Перезапустите службу ssh с помощью `sudo systemctl restart sshd`. Попробуйте подключиться ещё раз. +! Перед перезапуском сервера, установите в отдельном окне резервное соединение с удалённой машиной, на случай если +вход по ключу не работает. + +8. Сгенерируйте сертификат x.509 и ключ с помощью openssl. + + +Справка: + +### Хэш функция +``` +hash(value: массив байт) -> массив байт фиксированной длины N +``` +Примеры: sha1, sha256 + +### Симметричная криптография +``` +keygen() -> ключ (this function is randomized) + +encrypt(данные: массив байт, ключ) -> шифрованные данные +decrypt(шифрованные данные: массив байт, key) -> данные +``` +Примеры: DES, AES-256 + +### Асимметричная криптография +``` +keygen() -> (открытый ключ, закрытый ключ) (функция рандомизирована) + +encrypt(данные, открытый ключ) -> шифрованные данные +decrypt(шифрованные данные, закрытый ключ) -> данные + +sign(данные, закрытый ключ) -> массив<байт> (подпись) +verify(данные, подпись: массив<байт>, открытый ключ) -> bool (является ли подпись действительной или нет) +``` +Примеры: RSA, ed25519 \ No newline at end of file