Комментарии 15
Надеюсь никто не додумается запустить CPUID на 486 машине, ибо ее там еще не было.
На каких-то не было, а на каких-то и была.
качество уникальности генерируемых значений значительно выше
Интересно, кто и как это определил?
Вообще, как раз для криптографии очень нежелательно использовать один источник случайных чисел, особенно встроенный в процессор. Не знаю, как под виндой, но в линухе используется смесь из нескольких источников, чтобы возможные закладки в любом из них были нивелированы: вышеупомянутый RDRAND плюс события от клавы/мыши/диска/etc.
RDRAND: Стандарт NIST SP 800-90A
RDSEED: Стандарт NIST SP 800-90B and NIST SP800-90C.
Стандарты конечно не наши, но все же.
И как это отвечает на мой вопрос? Наличие сертификата говорит только о том, что кто-то вложил ресурсы в сертификацию. Сама по себе сертификация качество продукта не изменяет, и ничего не говорит о качестве этого продукта относительно других.
И как это отвечает на мой вопрос?
Вы пишите: используется смесь из нескольких источников...
В этой статье как раз описывается как устроены данные функции:
habr.com/ru/post/128666
Они тоже берут данные из нескольких источников.
Это не имеет значения, потому что работа RDRAND полностью контролируется одной компанией, и провести аудит как она на самом деле работает в конкретном куске кремния — крайне проблематично.
Была даже петиция на тему убрать rdrand из /dev/random
:-) но Торвальдс заявляет что если там есть бэкдор то это никак не повляет т.к используются и другие способы как вы упомянули.
.text
Filename: In[35]
pushq %rbp
movq %rsp, %rbp
Source line: 1
mulsd %xmm0, %xmm0
popq %rbp
retq
nopw (%rax,%rax)
не представлялось какой-то магией, чтоб можно было такую вещь окинуть взором и сделать вывод, де, тут сумма и цикл, можно сделать и лучше
Монитор откалиброван, а больше мне ничего калибровать не надо.
Генерация данных:
Всего итераций (x64): 100 000 000
Функция: RDRand32
Время: 8,47 сек.
11 807 769,51 в сек.
Функция: RDRand64
Время: 8,25 сек.
12 121 212,12 в сек.
Функция: System.Random
Время: 0,23 сек.
427 350 427,35 в сек.
Всего итераций (x64): 10 000 000
Функция: RDSeed32
Время: 9,86 сек.
1 014 301,65 в сек.
Функция: RDSeed64
Время: 9,86 сек.
1 014 198,78 в сек.
CPU-функции RDRAND и RDSEED стали доступнее