В лабораторной работе изучается метод генерации случайных зна-чений и проверки сгенерированных последовательностей на случайность на основе тестов NIST.
Цель работы – обучение общим принципам статисти-ческого анализа на примере генераторов случайных чисел и их применение в ИБ.
- Сгенерировать псевдослучайные последовательности с помощью стандартных ГПСЧ языков С/С++ и Java.
- Написать программу на любом языке программирования, реализующую представленные три теста линейки NIST и проверить с их помощью сгенерированные последовательности:
2.1. Частотный побитовый тест.
2.2. Тест на одинаковые подряд идущие биты.
2.3. Тест на самую длинную последовательность единиц в блоке. - Сделать вывод по полученным результатам и написать отчет по выполненной работе.
Итоговый репозиторий с результатами выполненной лабораторной работы должен содержать:
- Результат выполнения первой части задания:
- Сгенерированная случайная последовательность;
- Программный код генерации;
- Результат выполнения второй части задания:
- Программные коды тестов;
- Рассчитанные результаты тестов и полученные значения;
- Выводы по результатам тестирования.
Теоретическая информация приведена в методичке.
-
Для выполнения лабораторной работы сначала необходимо форкнуть этот репозиторий;
1.1. Имя форкнутого репозитория может быть каким вам удобно;
1.2. В дескрипшене репозитория будет полезно указать свои ФИО, номер группы; 1.3. Копировать необходимоmain
ветку; -
Склонировать полученный репозиторий себе на машину.
-
Создать проект в выбранной IDE, начать реализовывать необходимый по заданию код и коммитить результаты;
3.1. Преподаватель с большей вероятностью поверит в то, что код в репозитории написан вами лично, если коммитов в репозитории будет больше одного;
3.2. Коммиты должны иметь вменяемые описания на английском языке;
3.4. Если вы используете python, ваш репозиторий должен содержать файл requirements.txt; -
Когда необходимый код написан, соответствует принятым стандартам оформления кода и работает, необходимо сделать пул-риквест в исходный репозиторий;
4.1. Название пул риквеста должно формироваться следующим образом:<Номер группы> <ФИО> Лаб.<Номер лабы>
;
4.2. В описание пул риквеста было бы неплохо добавить описание того, что от вас требовалось сделать в данной лабораторной согласно вашему варианту. Хотя бы на русском языке;
4.3. Преподаватель поставит себя в ревьюеры, назначит вас исполнителем и произведет ревью; -
После успешного создания пул-риквеста производится ревью кода лабораторной;
5.1. Если к работоспособности и внешнему виду кода нет претензий, то преподаватель аппрувит и закрывает пул риквест;
5.2. Если претензии к коду есть, они указываются в ревью. После их устранения в рамках текущего пул риквеста, вам необходимо запросить повторное ревью; -
Поздравляю, практическая часть лабораторной принята, можно переходить к теоретической.
Для успешной сдачи лабораторной работы необходимо:
- Успешно закрыть пул-риквест;
- Ответить на вопросы по коду;
- Ответить на теоретические вопросы.
Количество и качество задаваемых вопросов может варьироваться.
Работать с git вы можете так, как вам удобно:
- через интерфейс командной строки,
- через плагин в IDE,
- через десктопный клиент, типа такого.
Если вы столкнулись с непреодолимыми трудностями в ходе выполнения лабораторной работы, вы можете задать вопрос в:
- дискорд-канале, посвященном предмету,
- телеграм-чате вашего курса.