Генератор случайных чисел
Генерировать случайные числа в определенном диапазоне для статистической выборки и моделирования.
генерировать случайные числа
Таблица содержимого
Типы генераторов случайных чисел
Генераторы случайных чисел (RNG) являются фундаментальными компонентами в различных областях, от криптографии и безопасности до научного моделирования и игр. Понимание различных типов и их характеристик имеет решающее значение для выбора подходящего метода для ваших конкретных потребностей.
Генераторы истинных случайных чисел (TRNG)
Генераторы случайных чисел получают случайность из физических процессов, которые по своей природе непредсказуемы. Эти генераторы производят последовательности, которые теоретически невозможно предсказать, даже при полном знании генерирующего алгоритма и предыдущих значений.
Источники физической энтропии
- Атмосферный шум
- Радиоактивный распад
- Тепловой шум
- Квантовые явления (расщепление фотонов)
- Электронный шум и поведение цепи
Типы реализации TRNG
- Генератор случайных чисел
- Генераторы квантовых случайных чисел (QRNG)
- генераторы на основе шума
- Свободно работающие генераторы осцилляторов
- Генераторы на основе хаоса
TRNG необходимы для приложений, требующих высочайшего уровня безопасности и непредсказуемости, таких как генерация криптографических ключей, защищенные коммуникации и системы азартных игр с высокими ставками. Тем не менее, они обычно имеют более медленные темпы генерации и могут быть более дорогими для реализации.
- Источник шума (обеспечивает энтропию)
- Дигитайзер (преобразует аналоговые сигналы в цифровые)
- Кондиционер/экстрактор (повышает качество случайности)
- Тесты на здоровье (проверяет правильность работы)
Генераторы псевдослучайных чисел (PRNG)
Генераторы псевдослучайных чисел используют детерминированные алгоритмы для генерации последовательностей чисел, которые кажутся случайными. Хотя они не являются действительно случайными, они предназначены для прохождения различных статистических тестов на случайность и подходят для многих приложений.
Общий PRNG Типы
- Линейные конгруэнтные генераторы (LCG)
- Мерсенн Твистер
- Генераторы Xorshift
- Генератор Multiply-with-carry
- Генераторы WELL (Well-Equidistributed Long-period Linear)
Характеристики PRNG
- Детерминистский (одно и то же семя производит одну и ту же последовательность)
- Периодический (в конечном итоге повторяется после некоторого периода)
- Быстрое и эффективное поколение
- Легко воспроизводимые результаты
- Подходит для моделирования и приложений, не связанных с безопасностью
Криптографически безопасные PRNG (CSPRNG)
Криптографически безопасный псевдослучай Генераторы чисел - это особый класс PRNG, предназначенный для сопротивления прогнозированию. Они подходят для критически важных приложений, но все еще работают детерминировано.
СПРАНГ Примеры
- Генератор Blum-Blum-Shub (BBS)
- Генератор RSA/Rabin
- Алгоритм Fortuna
- HMAC-DRBG
- Генераторы на основе ChaCha20
- Генераторы режимов AES-CTR
СПРАНГ Свойства безопасности
- Передовая секретность (прошлые результаты защищены)
- Обратная секретность (будущие выходы защищены)
- Выступает за государственный компромисс
- На основе сложных вычислительных задач
- Проходит все полиномиальные тесты
Тестирование случайности и валидация
Тестирование качества генераторов случайных чисел имеет решающее значение для обеспечения соответствия требованиям для их предполагаемых применений. Доступно несколько стандартизированных тестовых наборов:
- Diehard аккумулятор для испытаний
- NIST Statistical Test Suite (SP 800-22)
- TestU01 Suite
- Чи-квадрат Тест
- Частотный тест (Monobit Test)
- Пройти тест
- Серийная корреляция Тест
- Колмогоров-Смирнов Тест
- Праздничные каникулы Тест
Гибридные подходы
Для достижения оптимальных результатов в приложениях безопасности часто используются гибридные подходы, объединяющие несколько типов генераторов случайных чисел:
- Использование TRNG для генерации семян для CSPRNG
- Пулы энтропии, которые собирают случайность из нескольких источников
- Постобработка вывода TRNG с использованием криптографических хеш-функций
- Комбинирование выходов от нескольких независимых генераторов
Лучшие практики для критических применений
- Используйте TRNG для генерации начальной энтропии (семян)
- Обработка энтропии через CSPRNG для улучшения статистических свойств
- Используйте установленные, хорошо проверенные алгоритмы и реализации
- Постоянно контролировать здоровье и качество продукции ГСЧ
- Применять криптографическую постобработку (хеширование) при необходимости
- Придерживаться соответствующих стандартов (NIST SP 800-90A/B/C, BSI AIS 20/31)
Что такое случайные числа?
Случайные числа — это числа, которые встречаются в последовательности, такой, что выполняются два условия:
- Значения равномерно распределены в течение определенного интервала
- Невозможно предсказать будущие ценности на основе прошлых или настоящих
- Каждое число имеет равную вероятность быть выбранным
- Последовательность является статистически независимой
Приложения
Статистические выборки
Выбор случайных выборок из популяций для статистического анализа.
Симуляция
Создание случайных сценариев для моделирования Монте-Карло.
Криптография
Создание ключей шифрования и безопасных случайных значений.
Игры
Создание случайных исходов в играх и лотереях.
Поколение случайных чисел
Наш генератор случайных чисел использует криптографически безопасный алгоритм для генерации действительно случайных чисел:
- Единообразное распределение по заданному диапазону
- Криптографически безопасное поколение случайных чисел
- Поддержка как целых, так и десятичных чисел
- Настраиваемое число десятичных мест
Примеры
Пример 1целые числа
Диапазон: 1-10
Счет: 5
Десятичные места: 0
3, 7, 1, 9, 4
Случайные целые числа от 1 до 10
Пример 2Десятичные числа
Диапазон: 0:1
Счет: 3
Десятичные места: 2
0.42, 0.87, 0.15
Случайные десятичные числа между 0 и 1
Пример 3Пользовательский диапазон
Диапазон: от -100 до 100
Счет: 4
Десятичные места: 1 1
-45.2, 78.9, -12.4, 56.7
Случайные числа между -100 и 100