Skip to content

estoniec/prandom

Repository files navigation

prandom

CI Clang-Tidy

Linux kernel модуль, предоставляющий генератор псевдослучайных чисел на основе полей Галуа (GF(2⁸)).

Описание

Драйвер создаёт misc-устройство /dev/gfrandom, которое возвращает псевдослучайные байты, сгенерированные с использованием арифметики полей Галуа GF(2⁸). Является аналогом /dev/urandom.

Алгоритм

Используется регистр сдвига с линейной обратной связью (LFSR) над полем GF(2⁸):

  • Состояние: 256 байт (коэффициенты)
  • Начальное состояние (seed): t^256 + t^10 + t^5 + t^2 + 1 (или пользовательский)
  • Генерируемое значение: сумма произведений ненулевых коэффициентов состояния на соответствующие коэффициенты

Используемые компоненты

Требования

  • Linux kernel headers (для сборки модуля)
  • GCC, make
  • Для запуска тестов: linux-headers или root доступ для загрузки модуля

Детерминированные тестовые данные

Для удобства пользователей, желающих получить детерминированные предсказуемые числа, в папке assets представлены стандартные бинарные файлы по 256 байт каждый:

  • seed_file.bin — начальное состояние (seed)
  • coeff_file.bin — коэффициенты

Эти же файлы используются в тестах №1 и №2. Первые 10 ожидаемых случайных байтов: (HEX: 47 6b 77 79 60 1c bd 3f c9 b2) — см. assets/expected1.bin.

Сборка

Linux модуль

make

Userspace тесты

make test_algo
./test

Использование

Загрузка модуля

sudo insmod gfrandom.ko

Параметры модуля

  • coeff_file — путь к файлу с коэффициентами (256 байт)
  • seed_file — путь к файлу с seed (256 байт)

Если параметры не указаны, используются автоматически сгенерированные значения.

Пример использования собственных параметров:

sudo insmod gfrandom.ko coeff_file=/path/to/coeffs.bin seed_file=/path/to/seed.bin

Чтение случайных данных

sudo cat /dev/gfrandom | head -c 1024 > /dev/null

Выгрузка модуля

sudo rmmod gfrandom

Тестирование

Тесты запускаются в CI и локально:

make test

Лицензия

  • gfrandom: GPL-3.0
  • Galois_Field_256 (Denis Potapov): MIT License

Подробности см. в LICENSE.

Автор

Макар Лилль

About

Analogue of /dev/urandom misc driver

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors