Является ли Intel RdRand TRNG или PRNG?
Я долго искал в сети и не смог найти однозначного ответа. Я хочу знать качество случайных чисел, генерируемых инструкциями Intel rdrand. Как это сравнить с картами IDQ, например? Это действительно случайно или псевдослучайно?
Спасибо
3 ответа
Пожалуйста, прочитайте статьи и примеры кода Джона М. https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide раздел 2.2 описывает псевдо, а 2.3 - верно
RdRand подается из RNG, состоящего из источника энтропии, который питается, и экстрактора энтропии AES-CBC-MAC, который запитывает AES-CTR-DRBG. DRBG повторяется со скоростью примерно 1 миллион раз в секунду (она меняется, медленнее на медленных чипах, быстрее на более быстрых чипах). Таким образом, выходной сигнал DRBG представляет собой PRNG с произвольно выбранными значениями. Если вы читаете медленно (менее 1 миллиона раз / с), вы можете ожидать, что DRBG будет каждый раз обновляться заново, поэтому асимптота является полной энтропийной ГСЧ. Если вы читаете быстрее, чем позволяет процессор, аппаратное обеспечение DRNG достигает максимума с 511 128-битными выходами DRBG на начальное число. Сопротивление криптографическому предсказанию составляет O(2^128).
RdSeed предоставляет вариант конструкции NIST SP800-90C XOR, где каждое значение содержит свежее семя. Термин TRNG не очень хорошо определен, но RdSeed, вероятно, близок к тому, что люди думают, что они подразумевают под TRNG. Это более низкая производительность, чем RdRand, поскольку скорость является функцией скорости вывода экстрактора энтропии, а не скорости вывода DRBG.
Поэтому, спрашивая "что такое качество", вам нужно указать либо минимальную энтропию, либо вычислительную границу. Оба статистически неотличимы от равномерного, но RdRand также гарантирует устойчивость к криптографическому предсказанию O(2^128) (сколько работы вам нужно будет сделать, чтобы надежно предсказать следующее состояние), которая применяется только между повторными посевами (например, в течение периодов около 1us), когда предыдущее состояние перезаписывается свежими энтропийными данными. RdSeed предлагает более сильную гарантию минимальной энтропии, что выходной сигнал близок к равномерному. Практический эффект заключается в том, что вы можете безопасно объединять значения RdSeed для создания больших ключей и IV. Например, 512-битные ключи обеспечивают безопасность O(2^512). RdRand подходит для всех нужд, вплоть до безопасности O(2^128). Если вы хотите предоставить криптосистему с защитой более чем O(2^128) от RdRand, прочитайте SDG от Intel, где объясняется, как сделать это безопасно с помощью соответствующих криптографических алгоритмов.
Intel RdRand - это высококачественный криптографически безопасный генератор псевдослучайных чисел. Подробное описание того, что это такое, как его использовать, как оно использовалось и как быстро его использовать, приведено в статье здесь ( http://iopscience.iop.org/article/10.3847/1538-4357/aa7ede/meta;jsessionid=A9DA9DDB925E6522D058F3CEEC7D0B21.ip-10-40-2-120) или неоплаченная версия здесь ( https://arxiv.org/abs/1707.02212).
Я думаю, что разделы 2.2.1 и 5 имеют то, что вы ищете.