Jump to content

РДРАНД

RDRAND (от «случайного чтения») — это инструкция для возврата случайных чисел из Intel чисел встроенного аппаратного генератора случайных , который был запрограммирован встроенным источником энтропии. [1] Она также известна как технология Intel Secure Key . [2] под кодовым названием Bull Mountain . [3] Intel представила эту функцию примерно в 2012 году, а AMD добавила поддержку этой инструкции в июне 2015 года. ( RDRAND доступен в Ivy Bridge процессорах [а] и является частью Intel 64 и IA-32 архитектур набора команд .) [5]

Генератор случайных чисел соответствует стандартам безопасности и криптографии, таким как NIST SP 800-90A , [6] ФИПС 140-2 и ANSI X9.82 . [1] В 2012 году Intel также обратилась к Cryptography Research Inc. с просьбой провести проверку генератора случайных чисел, в результате чего была опубликована статья « Анализ цифрового генератора случайных чисел Intel Ivy Bridge» . [7]

RDSEED похоже на RDRAND и обеспечивает доступ более низкого уровня к оборудованию, генерирующему энтропию. RDSEED инструкция генератора и процессора rdseed доступны с процессорами Intel Broadwell [8] и процессоры AMD Zen . [9]

The CPUID Инструкцию можно использовать как на процессорах AMD, так и на процессорах Intel , чтобы проверить, RDRAND инструкция поддерживается. Если да, то бит 30 регистра ECX устанавливается после вызова стандартной функции CPUID. 01H. [10] Процессоры AMD проверяются на наличие этой функции с помощью того же теста. [11] RDSEED доступность можно проверить на процессорах Intel аналогичным образом. Если RDSEED поддерживается, бит 18 регистра EBX устанавливается после вызова стандартной функции CPUID 07H. [12]

Код операции для RDRAND является 0x0F 0xC7, за которым следует байт ModRM, указывающий регистр назначения и дополнительно объединенный с префиксом REX в 64-битном режиме. [13]

Intel Secure Key — это Intel как для название RDRAND инструкция и базовая аппаратная реализация генератора случайных чисел (ГСЧ), [1] который во время разработки имел кодовое название «Bull Mountain». [14] Intel называет свой ГСЧ «цифровым генератором случайных чисел» или DRNG. Генератор берет пары 256-битных необработанных выборок энтропии, сгенерированных аппаратным источником энтропии , и применяет их к преобразователю Advanced Encryption Standard (AES) (в режиме CBC-MAC ), который сводит их к одной 256-битной условной выборке энтропии. Детерминированный генератор случайных битов, называемый CTR DRBG, определенный в NIST SP 800-90A, заполняется выходными данными кондиционера, предоставляя криптографически безопасные случайные числа приложениям, запрашивающим их через RDRAND инструкция. [1] [14] Перед изменением начального значения аппаратное обеспечение выдаст максимум 511 128-битных выборок. Используя RDSEED Операция обеспечивает доступ к обусловленным 256-битным выборкам из AES-CBC-MAC.

The RDSEED в Intel Secure Key добавлена ​​инструкция для заполнения другого генератора псевдослучайных чисел, [15] доступен в Broadwell процессорах . Источник энтропии для RDSEED Инструкция выполняется асинхронно по самосинхронной схеме и использует тепловой шум внутри кремния для вывода случайного потока битов с частотой 3 ГГц. [16] медленнее, чем эффективные 6,4 Гбит/с, получаемые от RDRAND (обе скорости распределяются между всеми ядрами и потоками ). [17] RDSEED Инструкция предназначена для заполнения программного PRNG произвольной ширины, тогда как команда RDRAND предназначен для приложений, которым просто требуются высококачественные случайные числа. Если криптографическая безопасность не требуется, программный PRNG, такой как Xorshift, обычно работает быстрее. [18]

Производительность

[ редактировать ]

На процессоре Intel Core i7-7700K, 4500 МГц (45×100 МГц) (микроархитектура Kaby Lake-S) одиночный RDRAND или RDSEED Инструкция занимает 110 нс или 463 такта, независимо от размера операнда (16/32/64 бита). Данное количество тактов применимо ко всем процессорам с микроархитектурой Skylake или Kaby Lake . В процессорах с микроархитектурой Silvermont каждая инструкция занимает около 1472 тактов, независимо от размера операнда; и на Ivy Bridge процессорах RDRAND занимает до 117 тактов. [19]

В процессоре AMD Ryzen каждая инструкция занимает около 1200 тактов для 16-битного или 32-битного операнда и около 2500 тактов для 64-битного операнда. [19]

Астрофизический симулятор Монте-Карло исследовал время генерации 10 7 64-битные случайные числа с использованием RDRAND на четырехъядерном процессоре Intel i7-3740 QM. Они обнаружили, что реализация C RDRAND работал примерно в 2 раза медленнее, чем генератор случайных чисел по умолчанию в C, и примерно в 20 раз медленнее, чем Mersenne Twister . Хотя модуль Python RDRAND был построен, оказалось, что он в 20 раз медленнее, чем генератор случайных чисел по умолчанию в Python, [20] хотя сравнение производительности между PRNG и CSPRNG невозможно.

Обновление микрокода, выпущенное Intel в июне 2020 года и призванное устранить уязвимость CrossTalk (см. раздел «Проблемы безопасности» ниже), отрицательно влияет на производительность RDRAND и RDSEED из-за дополнительных мер безопасности. На процессорах с примененными средствами защиты каждая затронутая инструкция приводит к дополнительной задержке и одновременному выполнению RDRAND или RDSEED между ядрами эффективно сериализуется. Intel представила механизм, позволяющий ослабить эти проверки безопасности, что снижает влияние на производительность в большинстве сценариев, но процессоры Intel не применяют это ослабление безопасности по умолчанию. [21]

Составители

[ редактировать ]

Visual C++ 2015 предоставляет встроенную поддержку оболочек для RDRAND и RDSEED функции. [22] GCC 4.6+ и Clang 3.2+ предоставляют встроенные функции для RDRAND когда -mrdrnd указывается в флагах , [23] также установка __RDRND__ чтобы разрешить условную компиляцию . Более новые версии дополнительно предоставляют immintrin.h чтобы обернуть эти встроенные модули в функции, совместимые с версией 12.1+ компилятора Intel C. Эти функции записывают случайные данные в место, указанное их параметром, и возвращают 1 в случае успеха. [24]

Приложения

[ редактировать ]

Это возможность генерировать криптографически безопасные случайные числа, используя RDRAND и RDSEED в OpenSSL , чтобы обеспечить безопасность связи.

Научное применение RDRAND в симуляторе Монте-Карло оценивался с упором на производительность и воспроизводимость по сравнению с другими генераторами случайных чисел. Это привело к выводу, что использование RDRAND в отличие от Mersenne Twister не дает других результатов, но ухудшает производительность и воспроизводимость. [25] [20]

В сентябре 2013 года в ответ на New York Times, статью раскрывающую попытки АНБ ослабить шифрование , [26] Теодор Цо публично опубликовал сообщение об использовании RDRAND для /dev/random в ядре Linux : [27]

Я так рад, что не поддался давлению со стороны инженеров Intel, заставивших меня позволить /dev/random полагаться только на RDRAND инструкция. Цитата из [статьи New York Times [26] ]: «К этому году проект Sigint Enabling Project нашел способы внутри некоторых чипов шифрования, которые шифруют информацию для предприятий и правительств, либо работая с производителями чипов, чтобы вставить лазейки...» Опираясь исключительно на аппаратный генератор случайных чисел, который использовать реализацию, запечатанную внутри чипа, которую невозможно проверить, — это ПЛОХАЯ идея.

Линус Торвальдс отверг опасения по поводу использования RDRAND в ядре Linux и отметил, что оно не используется как единственный источник энтропии для /dev/random, а скорее используется для улучшения энтропии путем объединения значений, полученных от RDRAND с другими источниками случайности. [28] [29] Однако Тейлор Хорнби из Defuse Security продемонстрировал, что генератор случайных чисел Linux может стать небезопасным, если в систему будет введен бэкдор. RDRAND инструкция, которая конкретно нацелена на использующий ее код. Проверочная реализация концепции Хорнби работает на немодифицированном ядре Linux до версии 3.13. [30] [31] [32] Проблема была устранена в ядре Linux в 2013 году. [33]

Разработчики изменили ядро ​​FreeBSD, отказавшись от использования RDRAND и напрямую через VIA PadLock с комментарием «Для FreeBSD 10 мы собираемся откатиться и удалить RDRAND и Padlock и передавать их в Yarrow вместо того, чтобы доставлять выходные данные непосредственно в /dev/random . Доступ к аппаратным генераторам случайных чисел по-прежнему будет возможен, то есть RDRAND, Padlock и т. д., непосредственно с помощью встроенной сборки или с помощью OpenSSL из пользовательской области, если необходимо, но мы больше не можем им доверять». [28] [34] FreeBSD /dev/random использует Fortuna , а RDRAND начинается с FreeBSD 11. [35]

Проблемы безопасности

[ редактировать ]

9 июня 2020 года исследователи из Vrije Universiteit Amsterdam опубликовали атаку по побочному каналу под названием CrossTalk ( CVE-2020-0543 ), которая затронула RDRAND на ряде процессоров Intel. [36] Они обнаружили, что выходные данные аппаратного цифрового генератора случайных чисел (DRNG) хранятся в промежуточном буфере, который используется всеми ядрами. Уязвимость позволяла вредоносному коду, работающему на уязвимом процессоре, читать RDRAND и RDSEED Инструкция является результатом приложения-жертвы, работающего на другом ядре того же процессора, включая приложения, работающие внутри анклавов Intel SGX . [36] Исследователи разработали эксплойт для проверки концепции [37] который извлек полный ключ ECDSA из анклава SGX, работающего на отдельном ядре ЦП, после всего лишь одной операции подписи. [36] Эта уязвимость затрагивает сценарии, в которых ненадежный код выполняется вместе с доверенным кодом на одном процессоре, например в среде общего хостинга.

Intel называет уязвимость CrossTalk выборкой данных из специального регистрового буфера (SRBDS). В ответ на исследование Intel выпустила обновления микрокода для решения этой проблемы. Обновленный микрокод гарантирует, что доступ к внешним устройствам будет отложен до тех пор, пока не будут выполнены конфиденциальные операции, в частности RDRAND, RDSEED, и EGETKEY инструкции – завершены, и промежуточный буфер перезаписан. [21] Атака SRBDS также затрагивает другие инструкции, например, те, которые читают MSR , но Intel не применила к ним дополнительную защиту безопасности из-за проблем с производительностью и снижения потребности в конфиденциальности результатов этих инструкций. [21] Затронут широкий спектр процессоров Intel, выпущенных в период с 2012 по 2019 год, включая настольные, мобильные и серверные процессоры. [38] Сами меры по смягчению последствий привели к негативному влиянию на производительность при использовании затронутых инструкций, особенно при параллельном выполнении многопоточными приложениями, из-за увеличения задержки, вызванной проверками безопасности и эффективной сериализацией затронутых инструкций по ядрам. Intel представила возможность отказа, настраиваемую через IA32_MCU_OPT_CTRL MSR на каждом логическом процессоре, что повышает производительность за счет отключения дополнительных проверок безопасности для инструкций, выполняющихся за пределами анклава SGX. [21]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ В некоторых версиях Ivy Bridge из-за ошибки инструкция RDRAND вызывает исключение «Недопустимая инструкция». [4]
  1. ^ Jump up to: Перейти обратно: а б с д «Цифровой генератор случайных чисел Intel (DRNG): Руководство по внедрению программного обеспечения, версия 1.1» (PDF) . Корпорация Интел . 07.08.2012 . Проверено 25 ноября 2012 г.
  2. ^ «Что такое технология Intel® Secure Key?» . Интел . Проверено 23 сентября 2020 г.
  3. ^ Хофемайер, Гаэль (22 июня 2011 г.). «Узнайте о новой инструкции Intel RDRAND» . Блоги зоны разработчиков Intel . Проверено 30 декабря 2013 г.
  4. ^ Семейство процессоров Intel Core 3-го поколения для настольных ПК, обновление спецификаций (PDF) . Корпорация Интел. Январь 2013.
  5. ^ «Руководство программиста по архитектуре AMD64, том 3: универсальные и системные инструкции» (PDF) . Руководства, руководства и документы ISA для разработчиков AMD . Июнь 2015 года . Проверено 16 октября 2015 г.
  6. ^ Баркер, Элейн; Келси, Джон (январь 2012 г.). «Рекомендации по генерации случайных чисел с использованием детерминированных генераторов случайных битов» (PDF) . Национальный институт стандартов и технологий . doi : 10.6028/NIST.SP.800-90A . Проверено 16 сентября 2013 г. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  7. ^ Гамбург, Майк; Кохер, Пол; Марсон, Марк (12 марта 2012 г.). «Анализ цифрового генератора случайных чисел Intel Ivy Bridge» (PDF) . Криптографические исследования, Inc. Архивировано из оригинала (PDF) 30 декабря 2014 г. Проверено 21 августа 2015 г.
  8. ^ Хофемайер, Гаэль (26 июля 2012 г.). «Введение в инструкции Intel AES-NI и Intel SecureKey» . Зона разработчиков Intel . Интел . Проверено 24 октября 2015 г.
  9. ^ «AMD начинает внедрение Linux в архитектуру следующего поколения «Zen» — Phoronix» . www.phoronix.com . Проверено 25 октября 2015 г.
  10. ^ «Том 1, раздел 7.3.17, «Инструкция по созданию генератора случайных чисел» » (PDF) . Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32. Объединенные тома: 1, 2A, 2B, 2C, 3A, 3B и 3C . Корпорация Интел. Июнь 2013. с. 177 . Проверено 24 июня 2013 г. Все процессоры Intel, поддерживающие инструкцию RDRAND, указывают на доступность инструкции RDRAND, сообщая CPUID.01H:ECX.RDRAND[бит 30] = 1.
  11. ^ «Руководство программиста по архитектуре AMD64, том 3: универсальные и системные инструкции» (PDF) . АМД. Июнь 2015. с. 278 . Проверено 15 октября 2015 г. Поддержка инструкции RDRAND не является обязательной. На процессорах, поддерживающих эту инструкцию, CPUID Fn0000_0001_ECX[RDRAND] = 1.
  12. ^ «Том 1, раздел 7.3.17, «Инструкция по созданию генератора случайных чисел» » (PDF) . Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32. Объединенные тома: 1, 2A, 2B, 2C, 3A, 3B и 3C . Корпорация Интел. Июнь 2013. с. 177 . Проверено 25 октября 2015 г. Все процессоры Intel, поддерживающие инструкцию RDSEED, указывают на доступность инструкции RDSEED посредством сообщения CPUID.(EAX=07H, ECX=0H):EBX.RDSEED[бит 18] = 1
  13. ^ «Руководство по внедрению программного обеспечения Intel® Digital Random Number Generator (DRNG)» . Software.intel.com . Проверено 30 января 2014 г.
  14. ^ Jump up to: Перейти обратно: а б Тейлор, Грег; Кокс, Джордж (сентябрь 2011 г.). «За новым генератором случайных чисел Intel» . IEEE-спектр .
  15. ^ Джон Мечалас (ноябрь 2012 г.). «Разница между RDRAND и RDSEED» . программное обеспечение.intel.com . Корпорация Интел . Проверено 1 января 2014 г.
  16. ^ Мехалас, Джон. «Руководство по внедрению программного обеспечения Intel Digital Random Number Generator (DRNG), раздел 3.2.1 Источник энтропии (ES)» . Программное обеспечение Intel . Интел . Проверено 18 февраля 2015 г.
  17. ^ https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide говорит о 800 мегабайтах, что составляет 6,4 гигабита в секунду.
  18. ^ Самая простая 64-битная реализация Xorshift имеет 3 XOR и 3 сдвига ; если они выполняются в узком цикле на 4 ядрах с частотой 2 ГГц, пропускная способность составит 80 Гбит/с. На практике она будет меньше из-за накладных расходов на загрузку/сохранение и т. д., но, скорее всего, превысит 6,4 Гбит/с. RDRAND. С другой стороны, качество RDRANDЧисла должны быть выше, чем у программного PRNG, такого как Xorshift.
  19. ^ Jump up to: Перейти обратно: а б http://www.agner.org/optimize/instruction_tables.pdf [ пустой URL PDF ]
  20. ^ Jump up to: Перейти обратно: а б Рут, Мэтью (10 августа 2017 г.). «Синтез популяции ультрахолодных карликов с помощью радиовспышек» . Астрофизический журнал . 845 (1): 66. arXiv : 1707.02212 . Бибкод : 2017ApJ...845...66R . дои : 10.3847/1538-4357/aa7ede . S2CID   118895524 .
  21. ^ Jump up to: Перейти обратно: а б с д «Выборка данных из специального регистрового буфера» . Интел . Проверено 26 декабря 2020 г.
  22. ^ «Список встроенных функций x86» . docs.microsoft.com . 28 февраля 2020 г. Проверено 7 мая 2020 г.
  23. ^ «Встроенные функции X86 — использование коллекции компиляторов GNU (GCC)» .
  24. ^ «Руководство и справочник по компилятору Intel® C++ 19.1 для разработчиков» . 2019-12-23.
  25. ^ Маршрут, Мэтью (2019). «Синтез ультрахолодной популяции гномов с использованием радиосигнала с использованием безопасного ключа Intel» . Тезисы докладов собрания Американского астрономического общества № 234 . 234 . Собрание Американского астрономического общества № 234, ID. 207.01. Бюллетень Американского астрономического общества, Vol. 51, № 4. Бибкод : 2019ААС...23420701Р .
  26. ^ Jump up to: Перейти обратно: а б Перлрот, Николь; Ларсон, Джефф; Шейн, Скотт (5 сентября 2013 г.). «АНБ способно нарушить базовые гарантии конфиденциальности в сети» . Нью-Йорк Таймс . Проверено 15 ноября 2017 г.
  27. ^ Цо, Теодор (6 сентября 2013 г.). «Я так рад, что устоял перед давлением со стороны инженеров Intel, которые заставили /dev/random полагаться…» Архивировано из оригинала 11 июня 2018 г.
  28. ^ Jump up to: Перейти обратно: а б Ричард Чиргвин (9 декабря 2013 г.). «FreeBSD отказывается от аппаратной случайности» . Регистр .
  29. ^ Гэвин Кларк (10 сентября 2013 г.). «Торвальдс отвергает призыв удалить «бэкдор» Intel RDRAND из криптографии Linux» . theregister.co.uk . Проверено 12 марта 2014 г.
  30. ^ Тейлор Хорнби (6 декабря 2013 г.). «Подтверждение концепции бэкдора RDRAND работает! Стандартное ядро ​​(3.8.13), изменена только инструкция RDRAND» . Проверено 9 апреля 2015 г.
  31. ^ Тейлор Хорнби [@DefuseSec] (10 сентября 2013 г.). «Я написал короткий диалог, объясняющий, почему использование RDRAND в Linux проблематично. http://pastebin.com/A07q3nL3 /cc @kaepora @vooodooKobra» ( твит ) . Проверено 11 января 2016 г. - через Twitter .
  32. ^ Дэниел Дж. Бернштейн; Таня Ланге (16 мая 2014 г.). «Генерация случайности» (PDF) . Проверено 9 апреля 2015 г.
  33. ^ Цо, Теодор (10 октября 2013 г.). «random: добавьте архитектурную случайность ранее в Extract_buf()» . Гитхаб . Проверено 30 июля 2021 г.
  34. ^ «Ежеквартальный отчет о состоянии FreeBSD» . Freebsd.org . Проверено 30 января 2014 г.
  35. ^ «случайный(4)» . www.freebsd.org . Проверено 25 сентября 2020 г.
  36. ^ Jump up to: Перейти обратно: а б с Рагаб, Хани; Милберн, Алисса; Разави, Каве; Бос, Герберт; Джуффрида, Криштиану. «CrossTalk: спекулятивные утечки данных между ядрами реальны» (PDF) . Группа систем и сетевой безопасности, Амстердамский свободный университет (VUSec) . Проверено 26 декабря 2020 г.
  37. ^ «VUSec RIDL cpuid_leak PoC, изменен для утечки вывода rdrand» . Гитхаб . Проверено 26 декабря 2020 г.
  38. ^ «Затронутые процессоры: выборка данных из специального регистрового буфера» . Зона разработчиков Intel . Проверено 26 декабря 2020 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 52dc5e72d05a6cbe42a70c48530f013e__1714748460
URL1:https://arc.ask3.ru/arc/aa/52/3e/52dc5e72d05a6cbe42a70c48530f013e.html
Заголовок, (Title) документа по адресу, URL1:
RDRAND - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)