MCRYPT DEV СЛУЧАЙНЫМ образом зависает, но MCRYPT DEV URANDOM работает
Я пытаюсь создать IV с помощью функции:
mcrypt_create_iv(32, MCRYPT_DEV_RANDOM)
Это приводит к тому, что время ожидания сценария истекает более чем через 60 секунд. (может быть, больше?) но когда я использую URANDOM
, он работает нормально почти мгновенно. Из того, что я прочитал, это должно занять около 4 секунд с MCRYPT_DEV_RANDOM
, но это определенно занимает слишком много времени. В журнале ошибок ничего нет.
Я установил его с apache2 и php5 на сервере ubuntu 12.04.
Я запустил точно такой же код на своем сервере centos без вопросы.
2 answers
Как СЛУЧАЙНЫЙ, так и разблокированный - СЛУЧАЙНЫЙ (URANDOM) предоставит вам случайные данные, но в то время как СЛУЧАЙНЫЙ блокируется, если "колодец энтропии" высохнет из-за чрезмерного использования, и перезапустится, когда он будет пополнен, URANDOM не будет.
Pro: URANDOM не будет блокировать. Кон: УРАНДОМ, если его оставить без энтропии, будет кормить вас не совсем случайными данными.
Для криптографических целей, если вы действительно не параноик, я думаю, что УРАНДОМА должно быть достаточно.
Смотрите эту страницу Ubuntu: http://manpages.ubuntu.com/manpages/jaunty/man4/random.4.html
Я (ошибочно) думал, что СЛУЧАЙНЫЕ источники управляются пользователем, но, похоже, это не так. По-видимому, на этом компьютере ничего особенного не происходит, так что генератор энтропии ядра не находит ничего, что можно было бы измельчить.
С положительной стороны, генератор УРАНДОМА, как говорят, очень хорош и рекомендуется практически для всего.
(Я редактирую некоторые свои предыдущие предложения, которые не сработали бы для вас, так как они потребовали бы, по крайней мере, перекомпиляции PHP).
На самом деле и /dev/random, и /dev/urandom дают вам одинаковую случайность и безопасность. Существует длинная история о том, как возник миф о /dev/случайных блоках и почему вы должны его использовать. Ищите "миф о случайном/урандоме"