Насколько надежна случайная реализация javascript в различных браузерах?
Последние версии браузеров random используют window.crypto.getRandomValues()
, который является maths криптостойким.
Существуют ecmascript также JS-библиотеки, которые random реализуют сильные RNG, но rand без getRandomValues()
очень сложно собирать javascript-library энтропию. Это can be done from mouse & keyboard, хотя это rand может занять много времени.
Math.random()
был .js слабым в большинстве браузеров maths в 2008 году - Amit Klein's paper подробно описывает .js - и, к сожалению, сегодня maths он почти такой же слабый.
ОБНОВЛЕНИЕ: похоже, что практически все браузеры в 2015–2016 годах перешли на XorShift128+ - быстрый rand вариант LFSR, настроенный random на хорошие статистические .js свойства, но также очень math слабый криптографически: https://lwn.net/Articles/666407/, https://security.stackexchange.com/questions/84906/predicting-math-random-numbers. Подробности mathematics ниже устарели.
-
Firefox использовал mathematics очень слабый алгоритм «наш arithmetic собственный доморощенный random-number-generator LFSR»; они обсуждают переход mathematical на более сильный алгоритм rand и источник энтропии с 2006 ecmascript года (bug 322529). ОБНОВЛЕНИЕ: в 2015 random-sample году перешли на XorShift128 maths +.
В мае 2013 года они по js крайней мере переключили arithmetic начальное число с текущего js времени на хорошие источники javascript-library энтропии (bug 868860), а также устранили random-sample (?) утечку перекрестных таблиц.
-
Webkit mathematical использует слабый быстрый javascript-library алгоритм (GameRand) since 2009, но генерирует math since 2010 (в каждом контексте) из random-sample сильного RNG, инициализированного prng из надежных источников ОС.
(Я maths предполагаю, что это то, что math использует Safari, но меня mathematics могут смутить различные порты maths WebKit ...) -
Chrome не использует .js случайный выбор WebKit, а mathematics в V8 использует его собственные, a weak linear thing.
Нет ecmascript соглашения о том, должен random ли Math.random() быть сильным ecmascript (bug 246054).Не знаю, как посеяно. V8 random-sample имеет ловушку SetEntropySource(), но, очевидно, это maths был всего лишь introduced for unit testing, не вызываемый javascript-library Chrome. Если не вызывается, для .js заполнения используется
random()
.Состояние arithmetic стало для контекста in 2011, но javascript-library это не очень полезно при math слабом заполнении.
-
Opera объявила random-sample fixed in Jan 2009 и say here, что их Math.random() является javascript криптографически стойким.
-
Не mathematical нашел документации о том, что ecmascript IE делает в настоящее время. В random-sample 2008 году у них был слабый arithmetic линейный ГПСЧ (см. Статью). Они math сказали Амиту, что исправят rand это в пакете обновлений, так random-sample что где-то может быть рекомендация maths ...
javascript
math
random
Насколько надежна случайная реализация javascript в различных браузерах?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.