Из-за бага/ошибки GNU GCC, использование RDRAND не было таким случайным, как ожидалось.
В теперь уже исправленном баге, RDRAND/RDSEED инструкции для генераторов случайных чисел на современных CPU могут быть не столь случайными, как этого бы хотелось при использовании GCC.
Использование более старых версий GCC может привести к созданию RDRAND/RDSEED instrinsics, производящим неслучайные результаты. Эта проблема была исправлена в GCC еще в марте, но информация об этом была раскрыта только сегодня в списке oss-sec как CVE-2017-11671:
seclists.org/oss-sec/2017/q3/218
Также есть сообщение об ошибке GCC об этой проблеме:
gcc.gnu.org/bugzilla/show_bug.cgi?id=80180м
Теперь, после обновления GCC должен работать нормально с RDRAND/RDSEED.
RDRAND был впервые добавлен в CPU Ivy Bridge, а инструкция RDSEED поддерживается процессорами Intel Broadwell и более новыми, а также процессорами AMD Zen.
К счастью, влияние real-world должно быть смягчено, так как существует «несвязанная проблема юзабилити GCC» ("unrelated GCC usability issue"), из-за чего эти random/seed свойства становятся сложными в использовании, и встроенная сборка не была затронута этой ошибкой. Опять же, многие люди предпочитают в наши дни не доверять аппаратным средствам крипто/RNG от крупных производителей.
Due To A GCC Bug, RDRAND Usage Wasn't As Random As Expected - Phoronix