Методология и ограничения
В Randomchik нет единого алгоритма для всех инструментов. Метод зависит от задачи. Ниже отделены свойства реализации от ограничений, которые необходимо учитывать.
Выбор целых чисел и секретных строк
Общий модуль выбора целого числа использует crypto.getRandomValues и отбрасывание лишних значений: перед взятием остатка от деления отсекается неполный край диапазона. Это устраняет смещение из-за операции остатка. Модуль принимает безопасные целые границы с диапазоном не более 2^32 значений и прекращает работу, если Web Crypto недоступен.
Генератор чисел включает обе границы, поддерживает до 100 результатов и диапазон не более 1 000 000 значений. Режим без повторений выбирает из допустимых значений после исключений. Невыполнимый запрос даёт сообщение о настройках, а не неполный список.
Инструменты категории безопасности не переключаются на серверную генерацию при сбое браузерного кода. Результаты не добавляются в общую историю и ссылки для публикации в соцсетях. Это не защищает от вредоносных расширений, чтения буфера обмена или заражённого устройства.
Чего это не гарантирует
Другие инструменты и визуальные эффекты могут использовать Math.random, готовые словари и серверные реализации. Применение Web Crypto в одном модуле не является сертификацией всего сайта. Кубики и монетка не являются аттестованными системами для азартных игр. Настройка перекоса монетки намеренно меняет вероятность результата.
Генератор мнемоник использует сокращённый словарь без контрольной суммы BIP39 и не должен использоваться для криптовалюты. Словари парольных фраз небольшие и не равны полному списку EFF Diceware. У тестовых OTP-строк нет секретного ключа, временного шага, серверной проверки и автоматической одноразовости.
Воспроизводимые проверки
Открытый модуль и тест для Node.js проверяют границы диапазона, принудительное отбрасывание значения, недоступность криптографии и некорректные аргументы. Частотный эксперимент является только диагностикой, а не доказательством криптографической безопасности.
- random.js
- random-check.mjs (Node.js 20+,
node random-check.mjs)
Аналитика и приватность
Модуль измерений отправляет в Яндекс.Метрику только фиксированное название события, публичный идентификатор инструмента и язык. Значения полей и результаты генерации в эти события не включаются. Вебвизор и карты кликов отключены. Технические журналы и сообщения об ошибках являются отдельными каналами обработки: не добавляйте в сообщения пароли и другие секреты.