число Насколько надежной является случайная реализация javascript в разных браузерах?




random learn javascript ru (4)

Каждый из движков JavaScript, с которыми я знаком, не использует криптографически сильные ГСЧ.

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

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

Очевидно, что браузеры способны генерировать сильную случайность (для ssl). Вопрос заключается в том, что они дают доступ к javascript к такой же силе.


Одна интересная точка данных, которую я нашел, - это mozilla, имеющий криптографический объект javascript, который еще не полностью реализован.


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


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

Обычно генерируемые случайные функции не используют криптографически сильные методы генерации, потому что они занимают больше времени, чем простые (например, Yarrow сложнее, чем Mersenne Twister) и требуют тщательного управления энтропийным пулом, что не является гарантией того, что Mozilla, cstdlib, и т. д. хотят сделать вам.

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







random