Экстрактор случайности

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Экстрактор случайности — функция, которая применяется к выходу из слабо случайного источника энтропии, вместе с коротким равномерно распределённым случайным начальным значением (англ. seed) и генерирует случайный выход, который выглядит независимым от источника и равномерно распределён[1].

Несмотря на то, что экстрактор имеет некоторые концептуальные сходства с генератором псевдослучайных чисел, это различные понятия. Оба алгоритма принимают в качестве входных данных небольшое равномерно случайное начальное число и выдают более длинное случайное, которое «выглядит» равномерно случайным. Некоторые псевдослучайные генераторы также являются экстракторами. (Когда генератор псевдослучайных чисел основан на существовании трудных битов, можно считать слабо случайный источник набором таблиц истинности таких предикатов и доказать, что выходные данные статистически близки к однородным[2]). Хотя в формальном определении псевдослучайного генератора не указывается, что должен использоваться слабо случайный источник, и в случае экстрактора выходные данные должны быть статистически близки[англ.] к однородным, в ГПЧ требуется только то, чтоб они были вычислительном отношении неотличимы[англ.] от равномерных, что является более слабым требованием.

Описание[править | править код]

В более ранней литературе некоторые экстракторы называются алгоритмами обратного смещения (англ. unbiasing algorithms)[3], поскольку они берут случайность из источника со смещённым распределением (иногда термин «смещение» используется для обозначения отклонения слабо случайного источника от однородности) и выводят распределение, которое становится не смещённым. Значения слабо случайного источника всегда будут больше, чем выход экстрактора, но эффективный экстрактор — это тот, который максимально снижает это отношение значений, одновременно сохраняя маленькое начальное значение. Другими словами это означает, что из источника было извлечено как можно больше случайностей.

Примерами слабо случайных источников могут быть радиоактивный распад или тепловой шум. Единственное ограничение на возможные источники состоит в том, что не должно быть никакого способа, которым они могут полностью контролироваться, рассчитываться или предсказываться, таким образом, чтобы могла быть установлена ​​нижняя граница для их уровня энтропии. Для данного источника экстрактор случайности может даже считаться истинным генератором случайных чисел, однако не существует единого экстрактора, который доказано производил бы действительно случайный выход из любого типа слабо случайного источника.

В специальной публикация NIST 800-90B рекомендуется несколько экстракторов, включая семейство хэшей SHA и говорится о том, что, если количество входных бит от источника энтропии в два раза превышает количество битов на выходе, этот выход можно считать практически полностью случайным.[4]

Формальное определение[править | править код]

Мин-энтропия распределения (обозначается как ) является наибольшим вещественным числом таким, что для любого из . По сути, это означает то, какова вероятность, что примет его наиболее вероятное значение, при наихудшем распределении. Обозначим как равномерное распределение на , или .

Для n-битного распределения с мин-энтропией k говорят, что является распределением.

Определение (Экстрактор): (kε) — экстрактор

Пусть  — функция, которая принимает на вход выборку из распределения , d-битное начальное значение из и возвращает m-битную строку. будет являться (k , ε) -экстрактором , если для всех распределений выходное распределение не дальше от , чем на ε.

В приведённом выше определении подразумевается статистическое расстояние[англ.].

Таким образом, экстрактор берёт слабо случайный n-битный вход, короткий равномерно случайный начальный размер и выдаёт m-битный выход, который выглядит равномерно случайным. Цель состоит в том, чтобы сделать маленький d (то есть использовать как можно меньше равномерной случайности) и как можно больше m насколько это возможно (то есть чтобы получить как можно больше близких к случайным битам выходных данных).

Сильные экстракторы[править | править код]

Экстрактор является сильным, если конкатенация начального значения с выходом экстрактора приводит к распределению, которое все ещё близко к равномерному.

Определение (Сильный экстрактор): (kε) — экстрактор: A  — сильный экстрактор, это функция

такая, что для каждого распределения распределение (две означают одну и ту же случайную величину) дальше от равномерного распределения не более чем на ε по .

Явные экстракторы[править | править код]

Используя вероятностный метод, можно показать, что существует (k , ε)-экстрактор, то есть что построение возможно. Однако обычно недостаточно просто показать, что экстрактор существует. Необходима явная конструкция, которая выглядит следующим образом:

Определение (явный экстрактор): для функций k (n), ε (n), d (n), m (n) семейство Ext = {Ext n } функций

является явным (kε)-экстрактором, если Ext(xy) может быть вычислено за полиномиальное время (по длине его входа) и для каждого n, Extn является (k(n), ε(n))-экстрактором .

Вероятностным методом можно показать, что существует (kε)-экстрактор с начальным значением

и длиной входа

.[5]

Дисперсер[править | править код]

Вариантом экстрактора случайности с более слабыми свойствами является дисперсер .

Экстракторы случайностей в криптографии[править | править код]

Одним из наиболее важных аспектов криптографии является генерация случайных ключей.[6] Часто необходимо генерировать секретные случайные ключи из полусекретных источников, которые могут быть в некоторой степени скомпрометированы. Принимая единственный короткий (и секретный) случайный ключ в качестве источника, экстрактор можно использовать для генерации более длинного псевдослучайного ключа, который затем можно использовать для шифрования с открытым ключом. В частности, когда используется сильный экстрактор, его вывод будет выглядеть равномерно случайным даже для того, кто видит часть (но не весь) источника. Например, если источник известен, но начальное число неизвестно (или наоборот). Это свойство экстракторов особенно полезно в так называемой криптографии, устойчивой к воздействию, в которой требуемый экстрактор используется в качестве функции, устойчивой к воздействию (ERF). Устойчивая к воздействию криптография учитывает тот факт, что трудно сохранить в тайне первоначальный обмен данными, который часто происходит во время инициализации шифрования, например, отправитель зашифрованной информации должен предоставить получателям необходимую информацию для расшифровки.

Примеры[править | править код]

Экстрактор фон Неймана[править | править код]

Дополнительная информация: последовательность Бернулли

Один из ранних примеров экстракторов случайности был предложен Джоном фон Нейманом. Принцип его работы заключался в следующем: из входного потока он берёт пары последовательных (не перекрывающихся) битов. Если два бита совпадают, выходные данные не генерируются. Если биты различаются, выводится значение первого бита. Может быть показано, что экстрактор фон Неймана производит равномерный выходной сигнал, даже в том случае, когда распределение входных битов не является равномерным, если каждый бит имеет одинаковую вероятность того, что он равен единице, и нет корреляции между последовательными битами.[7]

Таким образом, он принимает в качестве входных данных последовательность Бернулли с p, необязательно равным 1/2, и выводит последовательность Бернулли с В более общем смысле, это применимо к любой заменяемой последовательности — оно основано только на том факте, что для любой пары одинаково вероятны 01 и 10: для независимых испытаний они имеют вероятности в то время как для заменяемой последовательности вероятность может быть более сложной, но обе одинаково вероятны.

Приложения[править | править код]

Экстракторы случайных чисел широко используются в криптографических приложениях, где криптографическая хеш-функция [8] применяется к высокоэнтропийному, но не равномерно распределенному источнику, такому как информация о синхронизации дисковода или задержки клавиатуры, для получения равномерно случайного результата.

Экстракторы случайности сыграли свою роль в последних разработках в области квантовой криптографии, где фотоны используются экстрактором случайности для генерации безопасных случайных битов. [9]

Экстракторы случайности также используется в некоторых разделах теории вычислительной сложности. [8]

Примечания[править | править код]

  1. L. Trevisan, S. Vadhan. Extracting Randomness from Samplable Distributions // Proceedings of the 41st Annual Symposium on Foundations of Computer Science. — Washington, DC, USA: IEEE Computer Society, 2000. — С. 32–. — ISBN 978-0-7695-0850-4.
  2. Luca Trevisan. Extractors and Pseudorandom Generators (англ.) // Journal of the ACM (JACM) : Журнал. — 2013. — 21 октября. — С. 8. Архивировано 11 ноября 2020 года.
  3. David K. Gifford, Natural Random Numbers, MIT/LCS/TM-371, Massachusetts Institute of Technology, August 1988.
  4. Elaine Barker, John Kelsey. Recommendation for the Entropy Sources Used for Random Bit Generation (NIST DRAFT Special Publication 800-90B) (англ.) // NIST. — 2012. — Август. — С. 18. Архивировано 3 апреля 2019 года.
  5. Ronen Shaltiel. Recent developments in explicit construction of extractors. P. 5.
  6. Jesse Kamp and David Zuckerman. Deterministic Extractors for Bit-Fixing Sources and Exposure-Resilient Cryptography.,SIAM J. Comput.,Vol. 36, No. 5, pp. 1231—1247.
  7. John von Neumann. Various techniques used in connection with random digits. Applied Math Series, 12:36-38, 1951.
  8. 1 2 hn M. Hitchcock, A. Pavan, N. V. Vinodchandran. Kolmogorov Complexity in Randomness Extraction (англ.) // Electronic Colloquium on Computational Complexity. — 2009. — № 71. — С. 1. — ISSN 1433-8092. Архивировано 1 апреля 2011 года.
  9. Ziyong Zheng, Yichen Zhang, Song Yu, Hong Guo. Experimental demonstration of Gaussian distributed quantum random number generator (англ.) // SPIE Proceedings Vol. 10733 : журнал. — 2018. — 11 сентябрь. — С. 4-5. Архивировано 24 декабря 2019 года.