Я пытаюсь создать IV с функцией:
mcrypt_create_iv(32, MCRYPT_DEV_RANDOM)
это заставляет скрипт тайм-аут после более чем 60 секунд. (может быть больше?), но когда я использую URANDOM
, он работает нормально почти мгновенно. Из того, что я прочитал, это займет около 4 секунд с MCRYPT_DEV_RANDOM
, но это определенно занимает слишком много времени. В журнале ошибок ничего нет.
Я установил его с apache2 и php5 на сервере ubuntu 12.04.
Я без проблем запускал тот же самый код на моем сервере centos.
И RANDOM, и Unblocking-RANDOM (URANDOM) будут предоставлять вам случайные данные, но в то время как RANDOM будет блокироваться, если «энтропийная скважина» сохнет из-за чрезмерного использования и перезапустится, когда она будет пополнена, URANDOM не будет.
Pro: URANDOM не будет блокироваться. Con: URANDOM, если он оставлен без энтропии, подаст вам не очень-то-случайные данные.
Для криптографических целей, если вы действительно параноидны, я думаю, что URANDOM должно быть достаточно.
См. Эту страницу Ubuntu: http://manpages.ubuntu.com/manpages/jaunty/man4/random.4.html
Я (ошибочно) думал, что источники RANDOM управляемы пользователем, но, похоже, они не являются. По-видимому, на этом компьютере ничего особенного не происходит, так что генератор энтропии ядра не находит ничего, чтобы размалывать.
С положительной стороны, генератор URANDOM считается очень хорошим и рекомендуется практически для всего.
(Я редактирую некоторые предыдущие мои предложения, которые не сработают для вас, поскольку они потребуют, по крайней мере, перекомпиляции PHP).
Фактически оба / dev / random и / dev / urandom дают вам такую же случайность и безопасность. Существует длинная история о том, как миф о / dev / random block и почему вы должны его использовать. Ищите «миф о случайных / урбандах»,