Как я могу проверить доступную энтропию?

14

В системах Linux можно проверить доступную энтропию (полезно знать, используете ли вы /dev/randomкакие-либо цели для PRNG) с

cat /proc/sys/kernel/random/entropy_avail

Тем не менее, нет эквивалента /procна Mac (AFAIK). Как я могу проверить доступную системную энтропию на Mac? Я использую OS X 10.7.3 (Lion)


Чтобы обновить некоторые из моих комментариев в ответе Кайла - Одна из причин, по которой компьютеры Mac не отображают эту информацию, заключается в том, что она не нужна (в большинстве случаев). Системы Linux будут блокировать вызовы, /dev/randomесли в пуле недостаточно энтропии. На компьютерах Mac он периодически добавляет данные в пул энтропии с помощью SecurityServerдемона.

Тем не менее, он также отмечает, что если демон по какой-то причине дает сбой, качество вывода будет ухудшаться без каких-либо признаков сбоя :

Однако качество его продукции зависит от регулярного добавления соответствующей энтропии. Если SecurityServerсистемный демон по какой-либо причине дает сбой, качество вывода со временем ухудшится без каких-либо явных указаний самого случайного устройства.

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

рм -рф
источник
Вам действительно нужно проверить, или просто убедиться, что там достаточно материала для использования? См. Developer.apple.com/library/mac/#documentation/Darwin/Reference/… Цитата: «Параноидальные программисты могут несколько противодействовать этому риску, собирая энтропию по своему выбору (например, из-за нажатия клавиш или времени мыши) и помещая ее randomнепосредственно перед получением важные случайные числа. "
Крис В. Ри
Мне просто нужно убедиться, что есть достаточно, чтобы использовать.
rm -rf

Ответы:

6

Это не решение, а пояснение того, как энтропия собирается и используется в Linux.

Linux на самом деле имеет два разных пула энтропии:

/dev/randomи /dev/urandom.

Первый представляет собой настоящий случайный пул, питаемый системными источниками энтропии.
Последний - больше PRNG, такой как найденный на BSD и OS X.

Однако даже случайный случай требует наличия «реальной» случайной энтропии для получения качественных псевдослучайных данных. В последних ядрах полное отсутствие энтропии в / dev / random по-прежнему не будет блокировать urandom, но urandom будет повторно использовать последнее действительное начальное число, пока не станет доступным больше энтропии. Поскольку urandom является неблокирующим, большинство сервисов, которым требуется постоянный поток энтропии, используют его, а не полагаются на / dev / random.

Однако все еще существуют некоторые службы, такие как различные наборы SSL, которые не могут справиться с псевдослучайной энтропией, но требуют действительно непредсказуемого источника энтропии. В этом случае urandom (или любой другой PRNG) не может быть использован, и / dev / random вступает в игру.

Крис
источник
2

Mac OS X просто использует Yarrow . Даже FreeBSD пошел дальше и переключился на улучшенную версию под названием «Fortuna».

Сила тысячелистника ограничена размером ключа. Например, Yarrow-160 имеет эффективный размер ключа 160 бит. Если безопасность требует 256 бит, Ярроу-160 не способен выполнить эту работу.

В общем, это еще одно напоминание, что приоритеты Apple не включают безопасность / надежность или что-то подобное.

poige
источник
1

Mac OS X, как и FreeBSD, не зависит от внешних источников энтропии. Вместо этого он использует генератор псевдослучайных чисел, основанный на алгоритме Ярроу . Поскольку он использует алгоритм, а не пул энтропии, нет необходимости убедиться, что энтропии «достаточно» - вы всегда сможете читать из / dev / random без блокировки .

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

Кайл Кронин
источник
4
Это не совсем правильно. Использование алгоритма не делает его бесконечной энтропией. Они имеют в виду, что в Linux он блокируется при низком уровне энтропии, а в Mac: «Дополнительная энтропия регулярно подается генератором SecurityServer из измерений случайного джиттера ядра». Таким образом, в основном, он заботится об этом, а также сохраняет некоторую энтропию на диск для использования сразу после запуска. Это также говорит о том, что, хотя Ярроу является устойчивым, качество зависит от регулярного добавления энтропии - чего-то, что не было бы необходимым, если бы это была действительно бесконечная энтропия
rm -rf
1
Он также говорит , что: «Если система SecurityServer демон не может по какой - либо причине, качество продукции будет страдать в течение долгого времени без какого - либо явного указания от самого случайного устройства» Я признаю , что OSX сделал это легко не придется беспокоиться о фактическом значение энтропии, но это не значит, что его нет ... Кстати, я упоминал эту страницу
руководства
@RM Правда, я больше думал о том, будет ли блокировать вызов / dev / random, чем о качестве энтропии
Кайл Кронин,
> Если только вы не «параноик» - Mac OS X просто не хватает разумного количества случайности, которую можно даже слегка назвать безопасным
poige