RdRand

RdRand (также RDRAND) это инструкция для генерации случайного числа при помощи встроенного генератора случайных чисел.[1] RdRand доступен для архитектуры процессоров Ivy Bridge и является опциональным расширением набора инструкций Intel 64 и IA-32. Данный генератор случайных чисел соответствует стандартам безопасности и криптографическим стандартам, таким как NIST SP800-90, FIPS 140-2, и ANSI X9.82.[1]

По некоторым мнениям, может представлять собой пример клептографии (умышленного внедрения криптографически слабого элемента)[2]. Внедрение уязвимости гипотетически возможно, к примеру, путём изменения типа допирования в одном из транзисторов (требуется модификация как минимум двух литографических масок)[3]

Условные названия

Intel Secure Key, также известный как Bull Mountain, — условное название Intel для инструкции RdRand и реализующего её аппаратного генератора случайных чисел (RNG).[1] Intel называет их ГСЧ и «цифровой генератор случайных чисел». Генератор использует встроенный в процессор источник энтропии.

Описание

Синтаксис ассемблерной команды: rdrand reg. Здесь reg - операнд команды, представляющий собой регистр общего назначения (32-х или 64-разрядный в зависимости от режима процессора).

Для проверки поддержки процессором RDRAND можно использовать инструкцию CPUID. При наличии поддержки бит 30 регистра ECX оказывается установлен после вызова функции 01H инструкции CPUID. Опкод RDRAND 0x0F 0xC7.

Компилятор С++, входящий в MS Visual Studio 2013, поддерживает RDRAND посредством функций _rdrand16_step(unsigned short *random_val) и _rdrand32_step(unsigned int *random_val). Если удалось сгенерировать случайное число, используя аппаратный генератор процессора, функция возвращает 1, в противном случае возвращается 0. Само сгенерированное случайное число передается в память по указателю.

Алгоритм

1. Инструкция генерирует случайное целое двоичное число размером 32 или 64 бита (в зависимости от используемого режима процессора) и помещает его в регистр-операнд. 2. Если операция выполнилась успешно, устанавливается флаг переноса cf, в противном случае сбрасывается.

Метод генерации. Две пары чисел по 256 бит, полученных из аппаратного источника энтропии, передаются в аппаратный блок, выполняющий криптографический алгоритм AES в режиме CBC-MAC. Полученное 256-битное значение используется для инициализации ГПСЧ (CTR_DRBG из раздела 10.2.1 стандарта NIST SP 800-90, с использованием AES)[4]

См. также

  • RDSEED

Примечания

  1. Intel Digital Random Number Generator (DRNG): Software Implementation Guide, Revision 1.1 (PDF) (недоступная ссылка). Intel Corporation (7 августа 2012). Дата обращения: 25 ноября 2012. Архивировано 18 мая 2013 года.
  2. Torvalds shoots down call to yank 'backdoored' Intel RdRand in Linux crypto // The Register, Gavin Clarke, 10th September 2013: "RdRand - used for generating random numbers and feared to be nobbled by US spooks to produce cryptographically weak values."
  3. Bruce Schneier, Surreptitiously Tampering with Computer Chips // блог Schneier on Security, September 16, 2013: ""Stealthy Dopant-Level Hardware Trojans." Basically, you can tamper with a logic gate to be either stuck-on or stuck-off by changing the doping of one transistor. This sort of sabotage is undetectable by functional testing or optical inspection. And it can be done at mask generation -- very late in the design process"
  4. Intel Digital Random Number Generator (DRNG) Software Implementation Guide // Gael Hofemeier, 08/08/2012]

Литература

  • A 4Gbps 0.57pJ/bit Process-Voltage-Temperature Variation Tolerant All-Digital True Random Number Generator in 45 nm CMOS // 2009 22nd International Conference on VLSI Design doi:10.1109/VLSI.Design.2009.69
  • 2.4 GHz 7 mW all-digital PVT-variation tolerant True Random Number Generator in 45 nm CMOS // 2010 IEEE Symposium on VLSI Circuits (VLSIC) doi:10.1109/VLSIC.2010.5560296
  • Georg T. Becker, Stealthy Dopant-Level Hardware Trojans // Cryptographic Hardware and Embedded Systems - CHES 2013, Lecture Notes in Computer Science Volume 8086, 2013, pp 197–214

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.