Назад
Генератор випадкових чисел AMD не повертає 0? На форумі тестують RDRAND і RDSEED
SiTech AI Team2 წთ. საკითხავი

Генератор випадкових чисел AMD не повертає 0? На форумі тестують RDRAND і RDSEED

У темі на форумі flat assembler ідеться про те, що на процесорах AMD інструкції RDRAND і RDSEED не повертають повністю нульове значення потрібної ширини. Автор опублікував тестову програму, обхідний шлях і результати бенчмарків.

У темі, відкритій у травні 2026 року на форумі flat assembler, описано незвичне спостереження: на процесорах AMD інструкції RDRAND і RDSEED, схоже, ніколи не повертають повністю нульове значення тієї ширини, яку запросили. Автор, користувач форуму Jessé, каже, що виявив це випадково під час роботи над кодом на асемблері, який виводив дані у вигляді діаграм.

Нуль, якого не видно

Ті самі програми на машині Intel справді видають нулі потрібного розміру. Автор підтверджує: запит на 32 або 64 біти може мати нульові молодші біти, але «справжній нуль» потрібної ширини на AMD «не трапляється ніколи». Саме це питання поставив інший учасник, і відповідь стала обхідним шляхом, опублікованим разом із тестовою програмою.

Тестова програма та обхідний шлях

Jessé додав невелику графічну програму для Linux — gtk4-bargraph.tar.gz (7,25 КБ), яка рахує нулі RDRAND (червоний), RDSEED (синій) і власної техніки на основі лічильника міток часу (зелений), а решта стовпців показує інші 65 535 значень 16-бітного простору.

Результати тесту автора

У примітці до вкладення він описує виправлення: генерувати в 32- або 64-бітні регістри, а 16-бітні дані брати лише для графіка. Його скриншот із результатами переглянули понад 11 000 разів, а архів завантажили близько 134 разів.

Відповідь AMD і бенчмарки

15 травня 2026 року він написав, що AMD відповіла, але відповідь, схоже, неправильно прочитала його результати й нагадувала те, що він уже отримував від чатбота, коли перевіряв, чи відома ця проблема. Він надіслав друге, детальніше повідомлення з фрагментом коду, що відтворює проблему. За тиждень він повідомив, що справу ескальовано всередині компанії; тим часом із двох доступних йому машин AMD не вийшло жодного нуля.

Оновлення програми додало бенчмарк: Core i5 2012 року видавав 12,6 млн чисел за секунду, Core i7 7700 2017 року — «лише» 750 тис., а AMD Ryzen 7 — близько 2,6 млн. Генератор AMD майже не реагував на зміну частоти, тоді як старіша модель Intel повністю залежала від неї — схеми RNG, за його висновком, дуже різняться.

Що це означає для апаратної випадковості

Інші учасники використали тему, щоб обговорити довіру до генераторів випадкових чисел у процесорах. Один згадав ранню документацію Intel щодо RDRAND: однобітне джерело шуму, тактований семплер, схема усунення зміщення та послідовний зсув формують внутрішнє 128-бітне зерно, яке живить AES-генератор у режимі лічильника, а RDSEED віддає сирі біти. На його думку, RDRAND ніколи не варто використовувати окремо, а лише в суміші з іншою ентропією, і виявити «бекдор» без реверс-інженерії кремнію було б украй важко.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.