Files
cyber-security/lab2/lab2.md
2026-03-16 12:08:42 +03:00

284 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Практическая работа №2
по дисциплине «Защита информации»
**Тема работы:** «Разработка и исследование системы аутентификации и авторизации»
**Преподаватель:** Силиненко А.В.
**Email:** [a_silinenko@mail.ru](mailto:a_silinenko@mail.ru)
---
## 1. Цели работы
* Разработать систему доступа пользователей к конфиденциальным данным;
* Исследовать стойкость паролей к атаке методом грубой силы.
---
## 2. Задачи работы
### 2.1.
При необходимости установить на компьютер целевую ОС (Linux или MacOS), в которой производится разработка и использование системы.
### 2.2.
Разработать систему доступа пользователей к конфиденциальным данным, включающую:
* Выделенный каталог для хранения всех файлов системы;
* Утилиту для работы с данными аутентификации и авторизации (паролями и правами доступа);
* Утилиту доступа к конфиденциальным данным, обеспечивающую аутентификацию и авторизацию пользователя.
### 2.3.
Разработать программу взлома паролей методом грубой силы и исследовать стойкость паролей в зависимости от длины пароля и алгоритма хэширования.
---
## 3. Требования к работе
### 3.1. ОС
Работа выполняется в ОС **Linux** или **MacOS**.
Необходим доступ с правами суперпользователя.
Если доступа нет — установить гипервизор **VirtualBox** ([https://www.virtualbox.org/](https://www.virtualbox.org/)) и развернуть гостевую ОС.
Допускается установка ОС как второй системы без VirtualBox.
---
### 3.2. Структура каталогов
Необходимо создать дерево каталогов:
```
/usr/local/practice2/
├── etc # хранение данных аутентификации и авторизации
├── confdata # хранение конфиденциальных файлов
├── bin # разработанные утилиты
└── log # файлы регистрации
```
**Права доступа:** чтение, запись и выполнение только для пользователя `root`.
---
### 3.3. Требования к утилите управления пользователями
#### Файл хранения данных
Файл:
```
/usr/local/practice2/etc/passwd
```
Структура записи:
```
<логин>:<хэш_пароля>:<идентификатор>:<права>:<ФИО>
```
Одна строка — один пользователь.
**Права на файл:** чтение и запись только для `root`.
#### Права доступа
* `r` — чтение
* `w` — запись
* `d` — удаление
#### Требования к функционалу
Утилита должна обеспечивать:
* Добавление нового пользователя:
* логин
* ФИО
* права доступа
* пароль + подтверждение
* Проверку корректности данных
* Хранение пароля в виде **хэш-значения**
* Использование алгоритма хэширования согласно индивидуальному заданию
* Редактирование существующего пользователя
* Изменение пароля
* Удаление пользователя
* Регистрацию всех действий с файлом `passwd`
#### Требования к паролю
* Кодировка: ASCII
* Разрешены:
* AZ
* az
* 09
* `!@#$%^&*()`
* Первый символ не может быть цифрой или спецсимволом
---
### 3.4. Требования к утилите доступа к конфиденциальным данным
#### Авторизация
При запуске:
1. Запрос логина
2. Запрос пароля
3. Проверка корректности
Если данные корректны:
* Вывод: `Привет, <ФИО>`
* Краткая справка
* Приглашение к вводу команд
Если данные некорректны:
* Повторный запрос
Остановка — по сигналу **SIGINT (Ctrl+C)**.
---
### Поддерживаемые команды
| Команда | Описание | Требуемые права |
| -------- | ------------------------ | --------------- |
| `read` | Вывод содержимого файла | r |
| `append` | Добавление данных в файл | w |
| `copy` | Копирование файла | r + w |
| `remove` | Удаление файла | d |
| `exit` | Выход | — |
| `help` | Справка | — |
#### Ограничения copy
* Разрешено копирование:
* в каталог `confdata`
* внутри `confdata`
* Запрещено:
* из `confdata` в другие каталоги
* перезапись существующих файлов внутри `confdata`
#### Дополнительные требования
* Утилита доступна для запуска всем пользователям ОС
* Все действия с конфиденциальными данными логируются
---
### 3.5. Программа взлома паролей
Должна:
* Запускать утилиту доступа
* Перебирать пароли методом brute force
* Учитывать используемый алгоритм хэширования
* Фиксировать:
* время перебора
* количество итераций до взлома
---
### 3.6. Общие требования
* Язык программирования — любой
* Код должен быть снабжен комментариями
---
### 3.7. Требования к исследованию
Провести исследование для длин паролей:
```
3, 4, 5, 6, 7, 8 символов
```
Необходимо:
* Рассчитать максимальное количество итераций
* По экспериментам (34 символа) оценить время для 58
* Проверить теорию экспериментально
* Прервать эксперимент, если длительность > 8 часов
* Проводить тестирование без активных задач на ПК
---
## 4. Требования к отчету
В отчете необходимо указать:
* Актуальность темы
* Цель и задачи
* Требования к системе
* Характеристики ПК (процессор, память)
* ОС и среду разработки
* Используемый язык
* Алгоритм хэширования
* Примеры сборки (если применимо)
* Примеры работы утилит
* Пример расчета количества итераций и времени взлома
* Таблицу или график с результатами:
* рассчитанное количество итераций и время
* полученные экспериментальные данные
* Выводы
---
## 5. Справочная информация
### Поддержка алгоритмов хэширования
**Linux:**
* `md5sum`
* `sha1sum`
* `sha256sum`
* `sha512sum`
* `b2sum`
* библиотека `openssl`
**C++:**
* `std::hash`
**Python:**
* модуль `hashlib`
**Java:**
* `java.security.MessageDigest`
* Spring Security
**Go:**
* пакет `hash`
---
Примечание:
Brute Force должен запускать утилиту из-под себя и через неё пытаться подобрать пароль, он не должен лезть в файл напрямую.