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