8.6 KiB
Практическая работа №2
по дисциплине «Защита информации»
Тема работы: «Разработка и исследование системы аутентификации и авторизации» Преподаватель: Силиненко А.В. Email: a_silinenko@mail.ru
1. Цели работы
- Разработать систему доступа пользователей к конфиденциальным данным;
- Исследовать стойкость паролей к атаке методом грубой силы.
2. Задачи работы
2.1.
При необходимости установить на компьютер целевую ОС (Linux или MacOS), в которой производится разработка и использование системы.
2.2.
Разработать систему доступа пользователей к конфиденциальным данным, включающую:
- Выделенный каталог для хранения всех файлов системы;
- Утилиту для работы с данными аутентификации и авторизации (паролями и правами доступа);
- Утилиту доступа к конфиденциальным данным, обеспечивающую аутентификацию и авторизацию пользователя.
2.3.
Разработать программу взлома паролей методом грубой силы и исследовать стойкость паролей в зависимости от длины пароля и алгоритма хэширования.
3. Требования к работе
3.1. ОС
Работа выполняется в ОС Linux или MacOS.
Необходим доступ с правами суперпользователя. Если доступа нет — установить гипервизор VirtualBox (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
-
Разрешены:
- A–Z
- a–z
- 0–9
!@#$%^&*()
-
Первый символ не может быть цифрой или спецсимволом
3.4. Требования к утилите доступа к конфиденциальным данным
Авторизация
При запуске:
- Запрос логина
- Запрос пароля
- Проверка корректности
Если данные корректны:
- Вывод:
Привет, <ФИО> - Краткая справка
- Приглашение к вводу команд
Если данные некорректны:
- Повторный запрос
Остановка — по сигналу 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 символов
Необходимо:
- Рассчитать максимальное количество итераций
- По экспериментам (3–4 символа) оценить время для 5–8
- Проверить теорию экспериментально
- Прервать эксперимент, если длительность > 8 часов
- Проводить тестирование без активных задач на ПК
4. Требования к отчету
В отчете необходимо указать:
-
Актуальность темы
-
Цель и задачи
-
Требования к системе
-
Характеристики ПК (процессор, память)
-
ОС и среду разработки
-
Используемый язык
-
Алгоритм хэширования
-
Примеры сборки (если применимо)
-
Примеры работы утилит
-
Пример расчета количества итераций и времени взлома
-
Таблицу или график с результатами:
- рассчитанное количество итераций и время
- полученные экспериментальные данные
-
Выводы
5. Справочная информация
Поддержка алгоритмов хэширования
Linux:
md5sumsha1sumsha256sumsha512sumb2sum- библиотека
openssl
C++:
std::hash
Python:
- модуль
hashlib
Java:
java.security.MessageDigest- Spring Security
Go:
- пакет
hash