stringtranslate.com

Генерация случайных чисел

Игральные кости являются примером механического аппаратного генератора случайных чисел. При броске кубика выпадает случайное число от 1 до 6.

Генерация случайных чисел — это процесс, с помощью которого, часто с помощью генератора случайных чисел ( ГСЧ ), генерируется последовательность чисел или символов , которую невозможно предсказать лучше, чем случайным образом. Это означает, что конкретная последовательность результатов будет содержать некоторые закономерности, которые можно обнаружить задним числом, но невозможно предвидеть. Настоящие генераторы случайных чисел могут представлять собой аппаратные генераторы случайных чисел (HRNG), в которых каждое поколение является функцией текущего значения атрибута физической среды, которое постоянно меняется таким образом, что практически невозможно смоделировать. Это будет контрастировать с так называемой «генерацией случайных чисел», выполняемой генераторами псевдослучайных чисел (ГПСЧ), которые генерируют числа, которые только выглядят случайными, но на самом деле являются заранее определенными — эти генерации можно воспроизвести, просто зная состояние ГПСЧ. [1]

Различные применения случайности привели к разработке различных методов генерации случайных данных. Некоторые из них существуют с древних времен, в том числе хорошо известные примеры, такие как бросок игральных костей , подбрасывание монет , перетасовка игральных карт , использование стеблей тысячелистника (для гадания ) в И Цзин , а также бесчисленное множество других техник. Из-за механического характера этих методов генерация больших количеств достаточно случайных чисел (важных для статистики) требовала много труда и времени. Таким образом, результаты иногда собирались и распространялись в виде таблиц случайных чисел .

Существует несколько вычислительных методов генерации псевдослучайных чисел. Все они не достигают цели истинной случайности, хотя они могут с разным успехом соответствовать некоторым статистическим тестам на случайность , предназначенным для измерения того, насколько непредсказуемы их результаты (то есть, насколько различимы их закономерности). Обычно это делает их непригодными для использования в таких приложениях, как криптография . Однако существуют также тщательно разработанные криптографически безопасные генераторы псевдослучайных чисел (CSPRNGS) со специальными функциями, специально разработанными для использования в криптографии.

Практическое применение и использование

Генераторы случайных чисел находят применение в азартных играх , статистической выборке , компьютерном моделировании , криптографии , полностью рандомизированном проектировании и других областях, где желательно получение непредсказуемого результата. Как правило, в приложениях, в которых непредсказуемость является первостепенной функцией, например, в приложениях безопасности, аппаратные генераторы обычно предпочтительнее псевдослучайных алгоритмов, где это возможно.

Генераторы псевдослучайных чисел очень полезны при разработке моделирования методом Монте-Карло , поскольку отладка облегчается за счет возможности снова запустить ту же последовательность случайных чисел, начиная с того же случайного начального числа . Они также используются в криптографии – при условии, что начальное число является секретным. Отправитель и получатель могут автоматически генерировать один и тот же набор чисел для использования в качестве ключей.

Генерация псевдослучайных чисел — важная и распространенная задача в компьютерном программировании. Хотя криптография и некоторые численные алгоритмы требуют очень высокой степени кажущейся случайности, для многих других операций требуется лишь умеренная степень непредсказуемости. Простыми примерами могут быть предоставление пользователю «случайной цитаты дня» или определение того, каким образом управляемый компьютером противник может двигаться в компьютерной игре. Более слабые формы случайности используются в хеш-алгоритмах и при создании амортизированных алгоритмов поиска и сортировки .

Некоторые приложения, которые на первый взгляд кажутся подходящими для рандомизации , на самом деле не так просты. Например, система, которая «случайным образом» выбирает музыкальные треки для системы фоновой музыки, должна выглядеть только случайной и может даже иметь способы контролировать выбор музыки: настоящая случайная система не будет иметь ограничений на появление одного и того же элемента два или три. раз подряд.

Истинные и псевдослучайные числа

Существует два основных метода, используемых для генерации случайных чисел. Первый метод измеряет какое-то физическое явление, которое, как ожидается, будет случайным, а затем компенсирует возможные погрешности в процессе измерения. Примеры источников включают измерение атмосферного шума , теплового шума и других внешних электромагнитных и квантовых явлений. Например, космическое фоновое излучение или радиоактивный распад, измеренные за короткие промежутки времени, представляют собой источники естественной энтропии (как меру непредсказуемости или неожиданности процесса генерации чисел).

Скорость, с которой энтропия может быть получена из природных источников, зависит от измеряемых физических явлений. Таким образом, источники естественной «истинной» энтропии называются блокирующими  — они ограничены по скорости до тех пор, пока не будет собрано достаточно энтропии для удовлетворения спроса. В некоторых Unix-подобных системах, включая большинство дистрибутивов Linux , файл псевдоустройства /dev/random будет блокироваться до тех пор, пока из среды не будет собрано достаточно энтропии. [2] Из-за такого поведения блокировки большие объемы чтения из /dev/random , такие как заполнение жесткого диска случайными битами, часто могут быть медленными в системах, использующих этот тип источника энтропии.

Второй метод использует вычислительные алгоритмы , которые могут создавать длинные последовательности явно случайных результатов, которые на самом деле полностью определяются более коротким начальным значением, известным как начальное значение или ключ . В результате вся, казалось бы, случайная последовательность может быть воспроизведена, если известно начальное значение. Этот тип генератора случайных чисел часто называют генератором псевдослучайных чисел . Этот тип генератора обычно не полагается на источники естественной энтропии, хотя он может периодически заполняться естественными источниками. Этот тип генератора является неблокирующим, поэтому его скорость не ограничивается внешним событием, что делает возможным массовое чтение.

Некоторые системы используют гибридный подход, обеспечивая случайность, полученную из естественных источников, когда они доступны, и возвращаясь к периодически повторно заполняемым программным криптографически безопасным генераторам псевдослучайных чисел (CSPRNG). Откат происходит, когда желаемая скорость случайного чтения превышает способность подхода естественного сбора данных удовлетворить спрос. Этот подход позволяет избежать ограниченного по скорости поведения блокировки генераторов случайных чисел, основанных на более медленных и чисто экологических методах.

Хотя генератор псевдослучайных чисел, основанный исключительно на детерминированной логике, никогда не может рассматриваться как «истинный» источник случайных чисел в чистом смысле этого слова, на практике их обычно достаточно даже для требовательных к безопасности приложений. Тщательно спроектированные и реализованные генераторы псевдослучайных чисел могут быть сертифицированы для критически важных с точки зрения безопасности криптографических целей, как в случае с алгоритмом тысячелистника и фортуны . Первый является основой источника энтропии /dev/random во FreeBSD , AIX , OS X , NetBSD и других. OpenBSD использует алгоритм псевдослучайных чисел, известный как arc4random . [ сомнительно ] [3]

Методы генерации

Физические методы

Самые ранние методы генерации случайных чисел, такие как игра в кости, подбрасывание монеты и колесо рулетки, все еще используются сегодня, в основном в играх и азартных играх, поскольку они, как правило, слишком медленны для большинства приложений в статистике и криптографии.

Физический генератор случайных чисел может быть основан на случайном атомном или субатомном физическом явлении, непредсказуемость которого можно объяснить законами квантовой механики . [4] [5] Источники энтропии включают радиоактивный распад , тепловой шум , дробовой шум , лавинный шум в стабилитронах , дрейф тактового сигнала , синхронизацию реальных движений головки чтения-записи жесткого диска и радиошум . Однако физические явления и инструменты, используемые для их измерения, обычно характеризуются асимметрией и систематическими отклонениями , из-за которых их результаты не являются абсолютно случайными. Экстрактор случайности , такой как криптографическая хэш-функция , может использоваться для достижения равномерного распределения битов из неравномерно случайного источника, хотя и с более низкой скоростью передачи данных.

Появление широкополосных источников фотонной энтропии, таких как оптический хаос и усиленный спонтанный эмиссионный шум, во многом способствует развитию физического генератора случайных чисел. Среди них оптический хаос [6] [7] обладает высоким потенциалом для физического создания высокоскоростных случайных чисел из-за его широкой полосы пропускания и большой амплитуды. Прототип высокоскоростного физического генератора случайных битов в реальном времени на основе хаотического лазера был построен в 2013 году. [8]

Были разработаны различные творческие способы сбора этой энтропийной информации. Один из методов — запустить хеш-функцию для кадра видеопотока из непредсказуемого источника. Лаваранд использовал эту технику с изображениями ряда лавовых ламп . HotBits измерял радиоактивный распад с помощью трубок Гейгера-Мюллера [9] , а Random.org использует вариации амплитуды атмосферного шума, записанные с помощью обычного радиоприемника.

Демонстрация простого генератора случайных чисел, основанного на том, где и когда нажимается кнопка.

Еще одним распространенным источником энтропии является поведение пользователей системы. Хотя люди по запросу не считаются хорошими генераторами случайности, они довольно хорошо генерируют случайное поведение в контексте игр со смешанной стратегией . [10] Некоторые компьютерные программы, связанные с безопасностью, требуют от пользователя выполнения длительной серии движений мышью или ввода с клавиатуры для создания достаточной энтропии, необходимой для генерации случайных ключей или инициализации генераторов псевдослучайных чисел. [11]

Вычислительные методы

В большинстве случайных чисел, генерируемых компьютером, используются ГПСЧ — алгоритмы, которые могут автоматически создавать длинные серии чисел с хорошими случайными свойствами, но в конечном итоге последовательность повторяется (или использование памяти неограниченно увеличивается). Эти случайные числа хороши во многих ситуациях, но они не так случайны, как числа, генерируемые из электромагнитного атмосферного шума, используемого в качестве источника энтропии. [12] Серия значений, генерируемых такими алгоритмами, обычно определяется фиксированным числом, называемым начальным числом . Одним из наиболее распространенных ГПСЧ является линейный конгруэнтный генератор , который использует рекуррентный алгоритм.

для генерации чисел, где a , b и m — большие целые числа, и является следующим в X как серия псевдослучайных чисел. Максимальное количество чисел, которые может выдать формула, — это модуль m . Рекуррентное соотношение можно распространить на матрицы, чтобы они имели гораздо более длинные периоды и лучшие статистические свойства. [13] Чтобы избежать определенных неслучайных свойств одного линейного конгруэнтного генератора, несколько таких генераторов случайных чисел со слегка разными значениями коэффициента множителя a могут использоваться параллельно с «главным» генератором случайных чисел, который выбирает из среди нескольких разных генераторов. [ нужна цитата ]

Простой метод генерации случайных чисел с помощью ручки и бумаги — это так называемый метод среднего квадрата, предложенный Джоном фон Нейманом . Несмотря на простоту реализации, его результаты имеют низкое качество. Он имеет очень короткий период и серьезные недостатки, такие как выходная последовательность, почти всегда сходящаяся к нулю. Недавнее нововведение — объединение среднего квадрата с последовательностью Вейля . Этот метод обеспечивает высокое качество продукции в течение длительного периода. [14]

Большинство языков компьютерного программирования включают функции или библиотечные процедуры, которые предоставляют генераторы случайных чисел. Они часто предназначены для предоставления случайного байта или слова или числа с плавающей запятой , равномерно распределенного между 0 и 1.

Качество, то есть случайность таких библиотечных функций, широко варьируется от полностью предсказуемого вывода до криптографически безопасного. Генератор случайных чисел по умолчанию во многих языках, включая Python, Ruby, R, IDL и PHP, основан на алгоритме Mersenne Twister и недостаточен для целей криптографии, как явно указано в документации языка. Такие библиотечные функции часто имеют плохие статистические свойства, а некоторые повторяют шаблоны уже после десятков тысяч испытаний. Они часто инициализируются с использованием компьютерных часов реального времени в качестве начального числа, поскольку такие часы являются 64-битными и измеряют секунды в наносекундах, что намного превосходит человеческую точность . Эти функции могут обеспечить достаточную случайность для определенных задач (например, видеоигр), но они непригодны там, где требуется высококачественная случайность, например, в приложениях криптографии, статистики или численного анализа. [ нужна цитата ]

В большинстве операционных систем доступны источники случайных чисел гораздо более высокого качества; например /dev/random в различных версиях BSD, Linux, Mac OS X, IRIX и Solaris или CryptGenRandom для Microsoft Windows. Большинство языков программирования, включая упомянутые выше, предоставляют средства доступа к этим источникам более высокого качества.

Люди

Генерация случайных чисел также может выполняться людьми путем сбора различных входных данных от конечных пользователей и использования их в качестве источника рандомизации. Однако большинство исследований показывают, что люди имеют некоторую степень неслучайности при попытке создать случайную последовательность, например, цифр или букв. Они могут слишком сильно чередовать варианты по сравнению с хорошим генератором случайных чисел; [15] таким образом, этот подход не получил широкого распространения.

Постобработка и статистические проверки

Даже при наличии источника правдоподобных случайных чисел (возможно, от аппаратного генератора на основе квантовой механики) получение совершенно несмещенных чисел требует осторожности. Кроме того, поведение этих генераторов часто меняется в зависимости от температуры, напряжения питания, возраста устройства или других внешних воздействий. Точно так же трудно обнаружить программную ошибку в программе псевдослучайных чисел или аппаратную ошибку в аппаратном обеспечении, на котором она работает.

Сгенерированные случайные числа перед использованием иногда подвергаются статистическим тестам, чтобы убедиться, что основной источник все еще работает, а затем подвергаются последующей обработке для улучшения их статистических свойств. Примером может служить аппаратный генератор случайных чисел TRNG9803 [16] , который использует измерение энтропии в качестве аппаратного теста, а затем выполняет постобработку случайной последовательности с помощью потокового шифрования с помощью сдвигового регистра. Обычно сложно использовать статистические тесты для проверки сгенерированных случайных чисел. Ван и Никол [17] предложили метод статистического тестирования на основе расстояния, который используется для выявления слабых мест нескольких генераторов случайных чисел. Ли и Ван [18] предложили метод проверки случайных чисел на основе лазерных источников хаотической энтропии с использованием свойств броуновского движения.

Другие соображения

Изменение распределения

Равномерные распределения

Большинство генераторов случайных чисел изначально работают с целыми числами или отдельными битами, поэтому для достижения «канонического» равномерного распределения между 0 и 1 требуется дополнительный шаг. Реализация не так тривиальна, как деление целого числа на его максимально возможное значение. В частности: [19] [20]

  1. Целое число, используемое при преобразовании, должно обеспечивать достаточное количество битов для требуемой точности.
  2. Сама природа математики с плавающей запятой означает, что точность тем выше, чем ближе число к нулю. Эта дополнительная точность обычно не используется из-за огромного количества требуемых битов.
  3. Ошибка округления при делении может исказить результат. В худшем случае предположительно исключенная граница может быть получена вопреки ожиданиям, основанным на математических вычислениях с действительными числами.

Основной алгоритм, используемый OpenJDK , Rust и NumPy , описан в предложении для STL C++ . Он не использует дополнительную точность и страдает от смещения только в последнем бите из-за округления до четного. [21] Другие числовые проблемы оправданы при сдвиге этого «канонического» равномерного распределения в другой диапазон. [22] Предлагаемый метод для языка программирования Swift утверждает, что везде используется полная точность. [23]

Равномерно распределенные целые числа обычно используются в таких алгоритмах, как перетасовка Фишера-Йейтса . Опять же, простая реализация может привести к смещению результата по модулю, поэтому необходимо использовать более сложные алгоритмы. Метод, который почти никогда не выполняет деление, был описан в 2018 году Дэниелом Лемиром [24], при этом на данный момент современным состоянием является «оптимальный алгоритм» 2021 года, вдохновленный арифметическим кодированием, разработанный Стивеном Кэноном из Apple Inc. [25]

Большинство ГСЧ от 0 до 1 включают 0, но исключают 1, в то время как другие включают или исключают оба.

Другие дистрибутивы

Учитывая источник однородных случайных чисел, существует несколько методов создания нового случайного источника, соответствующего функции плотности вероятности . Один метод, называемый методом инверсии , включает в себя интегрирование до площади, большей или равной случайному числу (которое должно генерироваться между 0 и 1 для правильного распределения). Второй метод, называемый методом принятия-отклонения , включает в себя выбор значений x и y и проверку того, превышает ли функция x значение y. Если это так, значение x принимается. В противном случае значение x отклоняется и алгоритм пытается повторить попытку. [26] [27]

В качестве примера бракованной выборки, чтобы сгенерировать пару статистически независимых стандартных нормально распределенных случайных чисел ( x , y ), можно сначала сгенерировать полярные координаты ( r , θ ), где r 2 ~ χ 2 2 и θ ~ UNIFORM( 0,2π) (см. преобразование Бокса–Мюллера ).

Отбеливание

Выходные данные нескольких независимых ГСЧ можно объединить (например, с помощью побитовой операции XOR ), чтобы получить комбинированный ГСЧ, по крайней мере, не хуже лучшего используемого ГСЧ. Это называется программным отбеливанием .

Вычислительные и аппаратные генераторы случайных чисел иногда объединяют, чтобы отразить преимущества обоих типов. Вычислительные генераторы случайных чисел обычно могут генерировать псевдослучайные числа гораздо быстрее, чем физические генераторы, в то время как физические генераторы могут генерировать «истинную случайность».

Последовательности с низким расхождением как альтернатива

Некоторые вычисления с использованием генератора случайных чисел можно суммировать как вычисление общего или среднего значения, например вычисление интегралов методом Монте-Карло . Для таких задач можно найти более точное решение с помощью так называемых последовательностей с низким расхождением , также называемых квазислучайными числами. Такие последовательности имеют определенную структуру, которая качественно заполняет пробелы; действительно случайная последовательность может (и обычно так и происходит) оставлять большие пробелы.

Мероприятия и демонстрации

Следующие сайты предоставляют образцы случайных чисел:

Бэкдоры

Поскольку большая часть криптографии зависит от криптографически безопасного генератора случайных чисел для генерации ключей и криптографических одноразовых номеров, если генератор случайных чисел можно сделать предсказуемым, злоумышленник может использовать его в качестве лазейки для взлома шифрования.

Сообщается, что АНБ внедрило бэкдор в сертифицированный NIST криптографически безопасный генератор псевдослучайных чисел Dual EC DRBG . Если, например, SSL-соединение будет создано с использованием этого генератора случайных чисел, то, по мнению Мэтью Грина, это позволит АНБ определять состояние генератора случайных чисел и, таким образом, в конечном итоге иметь возможность читать все данные, отправленные через SSL-соединение. [28] Хотя было очевидно, что Dual_EC_DRBG был очень плохим генератором псевдослучайных чисел и, возможно, имел бэкдор задолго до того, как бэкдор АНБ был подтвержден в 2013 году, он широко использовался на практике до 2013 года, например, известной охранной компанией RSA Security . [29] Впоследствии были обвинения в том, что RSA Security сознательно вставила в свои продукты бэкдор АНБ, возможно, в рамках программы Bullrun . RSA отрицает намеренное использование бэкдора в своих продуктах. [30]

Также высказывалась теория, что аппаратные ГСЧ могут быть тайно модифицированы, чтобы иметь меньшую энтропию, чем заявлено, что сделает шифрование с использованием аппаратного ГСЧ уязвимым для атаки. Один из таких опубликованных методов заключается в изменении маски легирующих примесей чипа, которую невозможно обнаружить при оптическом реверс-инжиниринге. [31] Например, для генерации случайных чисел в Linux считается неприемлемым использовать аппаратный RDRAND RNG от Intel без смешивания выходных данных RDRAND с другими источниками энтропии для противодействия любым лазейкам в аппаратном RDRAND, особенно после раскрытия Программа АНБ Bullrun. [32] [33]

В 2010 году розыгрыш лотереи в США был сфальсифицирован директором по информационной безопасности Ассоциации лотереи нескольких штатов (MUSL), который тайно установил вредоносное ПО с бэкдором на защищенный компьютер RNG MUSL во время планового обслуживания. [34] В ходе хакерских атак мужчина выиграл общую сумму в 16 500 000 долларов, правильно предсказав числа несколько раз в году.

Рандомизация расположения адресного пространства (ASLR), средство защиты от rowhammer и связанных с ним атак на физическое оборудование микросхем памяти, по состоянию на начало 2017 года было признано VUSec неадекватным. Алгоритм случайных чисел, если он основан на сдвиговом регистре, реализованном аппаратно, предсказуем при достаточно больших значениях p и может быть реконструирован с достаточной вычислительной мощностью ( Brute Force Hack ). Это также косвенно означает, что вредоносное ПО, использующее этот метод, может работать как на графических процессорах, так и на центральных процессорах, если это запрограммировано, даже используя графический процессор для взлома ASLR на самом процессоре. [35]

Смотрите также

Рекомендации

  1. ^ Лугрин, Томас (2023), Малдер, Валентин; Мермуд, Ален; Кредиторы, Винсент; Телленбах, Бернхард (ред.), «Генератор случайных чисел», Тенденции в области защиты данных и технологий шифрования , Cham: Springer Nature Switzerland, стр. 31–34, doi : 10.1007/978-3-031-33386-6_7 , ISBN 978-3-031-33386-6, получено 13 октября 2023 г.
  2. ^ random(4)  -  Руководство программиста Linux - Специальные файлы
  3. ^ arc4random(3)  -  Руководство по функциям библиотеки OpenBSD
  4. ^ Эрреро-Коллантес, Мигель; Гарсиа-Эскартин, Хуан Карлос (2016). «Квантовые генераторы случайных чисел». Обзоры современной физики . 89 . arXiv : 1604.03304 . doi : 10.1103/RevModPhys.89.015004. S2CID  118592321.
  5. ^ Ячак, Марцин М.; Йозвяк, Петр; Немчук, Якуб; Ячак, Януш Э. (2021). «Квантовые генераторы случайных чисел». Научные отчеты . 11 (1): 16108. doi : 10.1038/s41598-021-95388-7 . ПМЦ 8352985 . ПМИД  34373502. 
  6. ^ Ли, Пу; Ван, Юн-Цай; Чжан, Цзянь-Чжун (13 сентября 2010 г.). «Полностью оптический быстрый генератор случайных чисел». Оптика Экспресс . 18 (19): 20360–20369. Бибкод : 2010OExpr..1820360L. дои : 10.1364/OE.18.020360 . ISSN  1094-4087. ПМИД  20940928.
  7. ^ Ли, Пу; Сунь, Юаньюань; Лю, Сянлянь; И, Сяоган; Чжан, Цзяньго; Го, Сяоминь; Го, Яньцян; Ван, Юньцай (15 июля 2016 г.). «Полностью основанный на фотонике физический генератор случайных битов». Оптические письма . 41 (14): 3347–3350. Бибкод : 2016OptL...41.3347L. дои : 10.1364/OL.41.003347. ISSN  1539-4794. PMID  27420532. S2CID  2909061.
  8. ^ Ван, Анбанг; Ли, Пу; Чжан, Цзяньго; Чжан, Цзяньчжун; Ли, Лей; Ван, Юньцай (26 августа 2013 г.). «Высокоскоростной физический генератор случайных битов в реальном времени, 4,5 Гбит/с». Оптика Экспресс . 21 (17): 20452–20462. Бибкод : 2013OExpr..2120452W. дои : 10.1364/OE.21.020452 . ISSN  1094-4087. PMID  24105589. S2CID  10397141.
  9. ^ Уокер, Джон. «HotBits: настоящие случайные числа» . Проверено 27 июня 2009 г.
  10. ^ Халприн, Ран; Наор, Мони . «Игры на извлечение случайности» (PDF) . Институт науки Вейцмана . Архивировано из оригинала (PDF) 7 августа 2011 г. Проверено 27 июня 2009 г.
  11. ^ Фонд TrueCrypt. «Урок для начинающих по TrueCrypt, часть 3» . Проверено 27 июня 2009 г.
  12. ^ "RANDOM.ORG - Служба настоящих случайных чисел" . www.random.org . Проверено 14 января 2016 г.
  13. ^ «Генератор псевдослучайных чисел большой размерности» . Проверено 21 ноября 2018 г.
  14. Видынски, Бернар (19 мая 2020 г.). «ГСЧ последовательности Вейля среднего квадрата». arXiv : 1704.00358 [cs.CR].
  15. ^ В. А. Вагенаар (1972). «Генерация случайных последовательностей людьми: критический обзор литературы». Психологический вестник . 77 (1): 65–72. CiteSeerX 10.1.1.211.9085 . дои : 10.1037/h0032060. 
  16. ^ Домштедт, Б. (2009). «TRNG9803 Генератор истинных случайных чисел». Производитель: www.TRNG98.se.
  17. ^ Ван, Юнге (2014). «Статистические свойства псевдослучайных последовательностей и эксперименты с PHP и Debian OpenSSL». Компьютерная безопасность – ESORICS 2014 . Конспекты лекций по информатике. Том. 8712. Гейдельберг: Springer LNCS. стр. 454–471. дои : 10.1007/978-3-319-11203-9_26. ISBN 978-3-319-11202-2.
  18. ^ Ли, Пу; И, Сяоган; Лю, Сянлянь; Ван, Юньцай; Ван, Юнге (11 июля 2016 г.). «Свойства броуновского движения оптоэлектронных генераторов случайных битов на основе лазерного хаоса». Оптика Экспресс . 24 (14): 15822–15833. Бибкод : 2016OExpr..2415822L. дои : 10.1364/OE.24.015822 . ISSN  1094-4087. ПМИД  27410852.
  19. ^ Гуалар, Ф. (2020). «Генерация случайных чисел с плавающей запятой путем деления целых чисел: практический пример». Вычислительная наука – ICCS 2020 . ICCS. Конспекты лекций по информатике. Том. 12138. стр. 15–28. дои : 10.1007/978-3-030-50417-5_2 . ISBN 978-3-030-50416-8. S2CID  219889587.
  20. ^ Кэмпбелл, Тейлор Р. (2014). «Равномерные случайные числа с плавающей запятой: как генерировать число двойной точности с плавающей запятой в [0, 1] равномерно случайным образом с учетом однородного случайного источника битов» . Проверено 4 сентября 2021 г.
  21. ^ «Новая спецификация для std::generate_canonical». www.open-std.org .
  22. ^ Гуалар, Фредерик (июль 2021 г.). «Извлечение случайных чисел с плавающей запятой из интервала». ХЭЛ . Проверено 4 сентября 2021 г.
  23. ^ НевинБР. «[stdlib] Улучшения случайных чисел с плавающей запятой от NevinBR · Запрос на извлечение № 33560 · apple/swift». Гитхаб .
  24. Лемир, Дэниел (23 февраля 2019 г.). «Быстрая генерация случайных целых чисел за интервал». ACM-транзакции по моделированию и компьютерному моделированию . 29 (1): 1–12. arXiv : 1805.10941 . дои : 10.1145/3230636. S2CID  44061046.
  25. ^ «Оптимальный алгоритм для ограниченных случайных целых чисел от Stephentyrone · Запрос на извлечение № 39143 · apple/swift» . Гитхаб .
  26. ^ MathWorks. «Общие методы генерации» . Проверено 13 октября 2011 г.[ постоянная мертвая ссылка ]
  27. ^ Группа числовых алгоритмов. «G05 – Генераторы случайных чисел» (PDF) . Руководство по библиотеке НАГ, Марк 23 . Проверено 9 февраля 2012 г.
  28. ^ Мэтью Грин (18 сентября 2013 г.). «Многие недостатки Dual_EC_DRBG».
  29. ^ Мэтью Грин (20 сентября 2013 г.). «RSA предупреждает разработчиков не использовать продукты RSA».
  30. ^ «Мы не используем бэкдоры в наших криптопродуктах, — сообщает RSA клиентам». Арс Техника . 20 сентября 2013 г.
  31. ^ «Исследователи могут внедрить необнаружимый троян в процессоры Intel Ivy Bridge» . Арс Техника . 18 сентября 2013 г.
  32. ^ Теодор Цо. «Я так рад, что сопротивлялся давлению со стороны инженеров Intel, требующих, чтобы /dev/random полагался только на инструкцию RDRAND». Гугл плюс.
  33. ^ Теодор Цо. «Re: [PATCH] /dev/random: на многих архитектурах недостаточно энтропии». ЛВН.
  34. ^ Nestel, ML (7 июля 2015 г.). «Внутри крупнейшего лотерейного мошенничества в истории». Ежедневный зверь . Проверено 10 июля 2015 г.
  35. ^ "AnC – VUSec" . Проверено 13 июля 2018 г.

дальнейшее чтение

Внешние ссылки