1

Насколько я знаю, есть некоторая библиотека Intel для инструкции RDRAND https://software.intel.com/en-us/blogs/2012/09/14/rdrand-library-now-available-for-apple-os- Икс

Но действительно ли ядро OS X использует его для /dev /random устройства (как Linux, по крайней мере, для /dev /hwrng)?

1 ответ1

1

По словам man 4 random

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

В качестве дополнительного примечания /dev /urandom аналогичен /dev /random в OSX. (также в man 4 random)

/dev/urandom is a compatibility nod to Linux.

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

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

Кажется, что вы хотите гарантировать (как и большинство из нас), что числа, заданные /dev /random, действительно будут криптографически защищены, поэтому, когда мы создаем ключи DSA или RSA, мы знаем, что никто, кроме целевой аудитории, не сможет получить доступ. К сожалению, независимо от того, что вы можете найти о том, как OSX должен генерировать свои случайные числа, мы никогда не сможем это проверить, поскольку у нас нет источника.

Как это очень хорошо сказано в linux source 3.13.0:

Специфичная для арки hw RNG почти наверняка будет быстрее, чем то, что мы можем сделать в программном обеспечении, но невозможно проверить, что она реализована надежно (в отличие, скажем, от AES-шифрования порядкового номера с использованием ключа, известного АНБ). Так что это полезно, если нам нужна скорость, но только если мы готовы доверять производителю аппаратного обеспечения, не ставящему черный ход.

Если вы хотите прочитать, как это на самом деле делается в Linux, не полагаясь на аппаратное обеспечение, прочитайте root/drivers/char/random.c в исходном коде. Комментарии удивительно полезны, чтобы увидеть, что происходит, и дать вам полную картину теории, стоящей за всем этим.

В общем, если вы хотите получить лучшую гарантию того, что ваши случайные числа криптографически безопасны, я бы порекомендовал либо получить ваши случайные числа с помощью онлайн-генератора истинных случайных чисел, либо использовать Linux для создания ваших ключей (к которым вы также можете добавить входные данные из истинного случайного числа генератор).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .