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

8.8 KiB
Raw Blame History

Практическая работа №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

  • Разрешены:

    • 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 должен запускать утилиту из-под себя и через неё пытаться подобрать пароль, он не должен лезть в файл напрямую.