2013-12-01 4 views
1

Я столкнулся с проблемой, когда Java работает медленно при использовании через SSL. Решение состоит в том, чтобы добавить java slow: проблема, связанная с энтропией

-Djava.security.egd=file:/dev/./urandom
в java в командной строке. Так как у меня есть несколько JVM-х, я не хочу, чтобы изменить каждую JVM, чтобы содержать эту строку и, следовательно, хотел бы добавить его в файл
$JAVA_HOME/jre/lib/security/java.security

Теперь файл java.security уже содержит

securerandom.source=file:/dev/urandom

Два вопроса на это:

  1. Почему и как «/ dev/urandom» отличается от «/dev/./urandom». Почему оленья кожа ява принять «/ Dev/urandom»
  2. для виртуальной машины Java в том, что я работает, как я могу сказать, являются ли они с помощью правильного устройства urandmon (против случайных)
+0

'/ dev /./ urandom' и'/dev/urandom' - это один и тот же путь, нет разницы. – Mat

+0

Не должно быть, но видимо есть – bubbly

+0

гул. странно. http://stackoverflow.com/a/2325109/635608 – Mat

ответ

4

Это фактически хак введен в виртуальная машина еще в 1,3 или 1,4 дня

http://bugs.sun.com/view_bug.do?bug_id=4705093

http://bugs.sun.com/view_bug.do?bug_id=6202721

основной проблемой является то, что в родном коде JVM они зашиты /dev/urandom в фактически используйте /dev/random, чтобы попытаться обеспечить достаточную энтропию. Так как предполагается, что /dev/urandom не блокируется, это имеет непреднамеренные последствия блокировки, если не хватает энтропии.

Жесткий код выглядит конкретно для строки /dev/urandom, поэтому предоставление чего-то, что разрешает одно и то же, но не соответствует тому, что вызывает желаемое поведение. Если вы укажете /dev/./urandom, вы обходите жестко закодированное наложение и дойдете до предполагаемого источника энтропии urandom.

0

Я бы не рекомендовал использовать urandom для SSL. Ваша проблема в том, что ваша машина не обладает достаточной энтропией, а использование урбанда не решает эту проблему. Если предположить, что на Linux вы можете проверить имеющуюся энтропию с:

cat /proc/sys/kernel/random/entropy_avail

Если вы на машине, которая имеет Hw генератор случайных чисел, вы, скорее всего, нужно установить rngd. Вы можете проверить, если ваш процессор имеет один, выполнив команду:

cat /proc/cpuinfo

Посмотрите на флаги называемых рэнд. Вы также можете проверить, присутствует ли файл/dev/hwrng. Вы, возможно,/хочу, чтобы загрузить соответствующий модуль:

ls /lib/modules/*/kernel/drivers/char/hw_random

Для меня это:

sudo modprobe tpm-rng

Чтобы сделать его постоянным:

echo tpm-rng | sudo tee -a /etc/modules

Если вы на Ubuntu/Debian просто устанавливают rng-tools.

sudo aptitude install rng-tools

Если вы проверяете энтропии до и после установки RNG-инструментов вы должны увидеть значительное увеличение.

Следующая команда должна показать вам доступные источники энтропии:

sudo rngd -f -r /dev/hwrng -v

Обратите внимание, что если вам нужно более высокий уровень безопасности вы хотите смешать несколько источников энтропии. Не уверен, что rng-tools поддерживает это.

Смежные вопросы