Инструмент для измерения качества энтропии?

26

Существует ли инструмент для систем Linux, который может измерить «качество» энтропии в системе?

Я умею считать энтропию

cat /proc/sys/kernel/random/entropy_avail

И я знаю, что некоторые системы имеют «хорошие» источники энтропии (аппаратные ключи энтропии), а некоторые нет (виртуальные машины).

Но есть ли инструмент, который может обеспечить показатель «качества» энтропии в системе?

Дастин Киркланд
источник
Мне интересно, почему вы хотите рассчитать энтропию системы?
whoami

Ответы:

26

http://www.fourmilab.ch/random/ работает для меня.

sudo apt-get install ent
head -c 1M /dev/urandom > /tmp/out
ent /tmp/out
Marcin
источник
4
Прикольный инструмент. Вы можете проверить устройство всего одной командой с помощьюdd if=/dev/urandom bs=1M count=1 | ent
l0b0
7
Обратите внимание, что запуск оценки энтропии /dev/urandomабсолютно бесполезен. /dev/urandomявляется выходом PRNG криптографического качества, и оценщик энтропии всегда будет давать полную оценку любому полуприличному PRNG. Вам нужно запустить оценщик энтропии на безусловном источнике энтропии , который Linux не предоставляет вне ядра. Cc @DustinKirkland
Жиль "
@ Жиль, нет пути?
Фелипе
@FelipeMicaroniLalli Нет способа сделать что? Оценить энтропию по выходу /dev/urandom? Да. Выход /dev/urandom(или /dev/randomаналогичная проблема) является выходом PRNG криптографического качества, который всегда будет иметь высшие оценки для оценки энтропии. Если вы хотите оценить энтропию, вам нужно покопаться в ядре, выяснить, что он использует для источников энтропии, и измерить ОЧЕНЬ долгое время.
Жиль "ТАК - перестань быть злым"
1
@FelipeMicaroniLalli Нет, источник энтропии не влияет на PRNG способом, который можно измерить. Это довольно не по теме для Unix и Linux, но я знаю, что видел, как это обсуждалось в криптографии , попробуйте поискать там теги [entropy] и [randomness].
Жиль "ТАК - перестань быть злым"
6

«ent» - отличный инструмент командной строки для простой и быстрой оценки энтропии.

Я использовал его, чтобы узнать, как работают линейные конгруэнтные генераторы. Но если под «измерением энтропии» вы подразумеваете «измерение случайности» ... проблема становится более сложной.

Для более надежного теста случайности вы должны проверить комплект тестов dieharder: http://www.phy.duke.edu/~rgb/General/dieharder.php

Его не так легко использовать, как «ent», но он гораздо более строгий.

Для более глубокого изучения "Cipher's by Ritter" также предоставляет хороший выбор ссылок:

http://www.ciphersbyritter.com/NETLINKS.HTM#RandomnessLinks

Морган
источник
3

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

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

Я могу легко написать генератор файлов, который генерирует файлы с очень низкой энтропией, но все равно пройдет ваши энтропийные тесты. Просто используйте крипто-PRNG с небольшим семенем.

CodesInChaos
источник
0

Вы можете использовать Binwalk с -Eопцией:

# binwalk -E data

DECIMAL       HEXADECIMAL     ENTROPY
--------------------------------------------------------------------------------
0             0x0             Falling entropy edge (0.000000)
2443264       0x254800        Rising entropy edge (0.988510)

Вы можете получить исходный код из его репозитория GitHub .

Матеуш Пиотровский
источник
0

ncomputers.org/entropyarray выполняет более быстрое тестирование энтропии, чем entтесты последовательной корреляции 16, 32, 64, 128, 256 и 512 бит.

с помощью инструмента ncomputers.org/entropy вы также можете проводить визуальные проверки частоты и распределения, нанося на график выходные данные entropy.freq и entropy.gaus.

Например, вы можете выполнить онлайн-тестирование объемом до 1 ГБ, используя servertest.online/entropytest

entropy.freq entropy.gaus

ncomputers
источник
-5

Я думаю, что вы ищете:

cat /proc/sys/kernel/random/entropy_avail
ramonovski
источник
Извините, нет, я хорошо знаю entropy_avail. Я пытаюсь измерить качество этой энтропии.
Дастин Киркланд