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

Криптографически безопасный генератор псевдослучайных чисел ( CSPRNG ) или криптографического генератора псевдослучайных номер ( CPRNG ) [1] является псевдослучайных чисел (ПСЧ) со свойствами , которые делают его пригодным для использования в криптографии . Он также широко известен как криптографический генератор случайных чисел ( CRNG ) (см. Генерация случайных чисел § «Истинно» против псевдослучайных чисел ). [2] [3]

Для большинства криптографических приложений требуются случайные числа, например:

«Качество» случайности, требуемое для этих приложений, варьируется. Например, для создания одноразового номера в некоторых протоколах нужна только уникальность. С другой стороны, генерация главного ключа требует более высокого качества, например большей энтропии . И в случае одноразовых прокладок , то теоретико-информационная гарантия совершенной секретности имеет место только , если ключ материал поступает от истинного случайного источника с высокой энтропией, и , таким образом , любой видом генератора псевдослучайных чисел является недостаточным.

В идеале для генерации случайных чисел в CSPRNG используется энтропия, полученная из высококачественного источника, обычно API случайности операционной системы. Однако неожиданные корреляции были обнаружены в нескольких таких якобы независимых процессах. С теоретико-информационной точки зрения количество случайности, энтропия, которая может быть сгенерирована, равна энтропии, обеспечиваемой системой. Но иногда в практических ситуациях требуется больше случайных чисел, чем доступно энтропии. Кроме того, на практике процессы извлечения случайности из работающей системы медленные. В таких случаях иногда можно использовать CSPRNG. CSPRNG может «растянуть» доступную энтропию на большее количество битов.

Требования [ править ]

Требования обычного ГПСЧ также удовлетворяются криптографически безопасным ГПСЧ, но обратное неверно. Требования CSPRNG делятся на две группы: во-первых, они должны проходить тесты на статистическую случайность ; и, во-вторых, они хорошо выдерживают серьезную атаку, даже когда часть их начального или рабочего состояния становится доступной для злоумышленника. [ необходима цитата ]

  • Каждый CSPRNG должен удовлетворять тесту следующего бита . То есть, учитывая первые k бит случайной последовательности, не существует алгоритма полиномиального времени , который мог бы предсказать ( k +1) -й бит с вероятностью успеха, не пренебрежимо лучшей, чем 50%. [4] Эндрю Яо доказал в 1982 году, что генератор, прошедший тест следующего бита, пройдет все остальные полиномиальные статистические тесты на случайность. [5]
  • Каждый CSPRNG должен противостоять «расширению нарушения безопасности состояния». В случае, если часть или все его состояние было раскрыто (или угадано правильно), будет невозможно восстановить поток случайных чисел до раскрытия. Кроме того, если есть ввод энтропии во время работы, должно быть невозможно использовать знание состояния ввода для прогнозирования будущих условий состояния CSPRNG.
Пример: если рассматриваемый CSPRNG производит вывод путем вычисления битов π в последовательности, начиная с некоторой неизвестной точки в двоичном расширении, он вполне может удовлетворять тесту следующего бита и, таким образом, быть статистически случайным, поскольку π кажется случайной последовательностью . (Это будет гарантировано, например, если π - нормальное число .) Однако этот алгоритм не является криптографически безопасным; злоумышленник, который определяет, какой бит числа Пи (т.е. состояние алгоритма) используется в настоящее время, также сможет вычислить все предыдущие биты.

Большинство PRNG не подходят для использования в качестве CSPRNG и не работают по обоим параметрам. Во-первых, хотя большинство выходных данных ГПСЧ кажутся случайными для различных статистических тестов, они не сопротивляются определенному обратному проектированию. Можно найти специальные статистические тесты, специально настроенные для такого ГПСЧ, который показывает, что случайные числа не являются действительно случайными. Во-вторых, для большинства ГПСЧ, когда их состояние было раскрыто, все прошлые случайные числа могут быть отнесены назад, что позволяет злоумышленнику прочитать все прошлые сообщения, а также будущие.

CSPRNG специально разработаны для защиты от этого типа криптоанализа .

Определения [ править ]

В асимптотической установке семейство детерминированных функций, вычисляемых за полиномиальное время для некоторого полинома p , является генератором псевдослучайных чисел ( PRNG или PRG в некоторых ссылках), если он растягивает длину своего входа ( для любого k ), и если его выход вычислительно неотличим от истинной случайности, то есть для любого вероятностного алгоритма полиномиального времени A , который выводит 1 или 0 в качестве отличителя,

для какой-то незначительной функции . [6] (Обозначение означает, что x выбирается равномерно случайным образом из множества X. )

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

Вперед-безопасный PRNG с длиной блока является ПСЧЕМ , где входная строка с длиной к текущему состояние в период я , а выходной сигнал ( , ) состоят из следующего состояния и выходной псевдослучайного блок периода я , таким образом, что выдерживает расширение государственного компромисса в следующем смысле. Если начальное состояние выбирается равномерно случайным образом из , то для любого i последовательность должна быть вычислительно неотличимой от , в которой выбираются равномерно случайным образом из . [8]

Любой ГПСЧ можно превратить в безопасный ГПСЧ прямой передачи с длиной блока , разделив его вывод на следующее состояние и фактический вывод. Это делается установкой , в которой и ; тогда G - это прямой защищенный PRNG с следующим состоянием и псевдослучайным выходным блоком текущего периода.

Извлечение энтропии [ править ]

Санта и Вазирани доказали, что несколько битовых потоков со слабой случайностью могут быть объединены для создания квазислучайного битового потока более высокого качества. [9] Еще раньше Джон фон Нейман доказал, что простой алгоритм может устранить значительную величину смещения в любом потоке битов [10], который следует применять к каждому потоку битов перед использованием любого варианта конструкции Санты – Вазирани.

Дизайн [ править ]

В приведенном ниже обсуждении проекты CSPRNG делятся на три класса:

  1. те, которые основаны на криптографических примитивах, таких как шифры и криптографические хэши ,
  2. те, которые основаны на математических задачах, которые считаются сложными, и
  3. специальные конструкции.

Последние часто вводят дополнительную энтропию, когда они доступны, и, строго говоря, не являются «чистыми» генераторами псевдослучайных чисел, поскольку их выход не полностью определяется их начальным состоянием. Это дополнение может предотвратить атаки, даже если начальное состояние скомпрометировано.

Конструкции на основе криптографических примитивов [ править ]

  • Защищенный блочный шифр можно преобразовать в CSPRNG, запустив его в режиме счетчика [ сомнительно ] . Это делается путем выбора случайного ключа и шифрования 0, затем шифрования 1, затем шифрования 2 и т. Д. Счетчик также может быть запущен с произвольным числом, отличным от нуля. Предполагая n- битный блочный шифр, выходные данные можно отличить от случайных данных примерно через 2 n / 2 блоков, поскольку, следуя проблеме дня рождения, в этот момент должны стать вероятными конфликтующие блоки, тогда как блочный шифр в режиме CTR никогда не будет выводить идентичные блоки. Для 64-битных блочных шифров это ограничивает безопасный выходной размер до нескольких гигабайт, для 128-битных блоков ограничение достаточно велико, чтобы не влиять на типичные приложения. Однако при использовании в одиночку он не соответствует всем критериям CSPRNG (как указано выше), поскольку он не силен против «расширений компрометации состояния»: зная состояние (в данном случае счетчик и ключ), вы можете предсказывать все прошлые результаты.
  • Криптографически безопасный хэш счетчика в некоторых случаях может также действовать как хороший CSPRNG. В этом случае также необходимо, чтобы начальное значение этого счетчика было случайным и секретным. Однако эти алгоритмы для подобного использования изучены мало, и, по крайней мере, некоторые авторы предостерегают от такого использования. [ расплывчато ] [11]
  • Большинство потоковых шифров работают, генерируя псевдослучайный поток битов, которые комбинируются (почти всегда XOR ) с открытым текстом ; запуск шифра на счетчике вернет новый псевдослучайный поток, возможно, с более длинным периодом. Шифр может быть безопасным только в том случае, если исходный поток является хорошим CSPRNG, хотя это не обязательно так (см. Шифр RC4 ). Опять же, начальное состояние нужно держать в секрете.

Теоретико-числовые планы [ править ]

  • Blum Blum Шубы алгоритм имеет доказательство безопасности , основанное на сложностях квадратичной задачи residuosity . Поскольку единственный известный способ решить эту проблему - разложить модуль на множители, обычно считается, что сложность целочисленной факторизации обеспечивает условное доказательство безопасности для алгоритма Блюма-Блюма-Шуба. Однако алгоритм очень неэффективен и поэтому непрактичен, если не требуется максимальная безопасность.
  • Алгоритм Блюма-Микали имеет доказательство безопасности , основанное на сложности задачи дискретного логарифмирования , но также очень неэффективно.
  • Даниэль Браун Certicom написал доказательство 2006 безопасности для Dual_EC_DRBG , на основе предполагаемой твердости предположения Диого-принятие решения Хеллмана , в задаче х логарифмов , и проблема усеченной точки . Доказательство 2006 г. явно предполагает более низкое значение [ требуется уточнение ], чем в стандарте Dual_EC_DRBG, и что значения P и Q в стандарте Dual_EC_DRBG (которые, как выяснилось в 2013 г., вероятно, были защищены NSA) заменены значениями без резервной защиты .

Специальные конструкции [ править ]

Существует ряд практических ГПСЧ, которые были разработаны для обеспечения криптографической безопасности, в том числе:

  • Тысячелистник алгоритм , который пытается оценить энтропийное качество его входов. Ярроу используется в macOS и других ОС Apple примерно до декабря 2019 года. С тех пор Apple перешла на Fortuna. (См. / Dev / random ).
  • ChaCha20 алгоритм заменен RC4 в OpenBSD (версия 5.4), [12] NetBSD (версия 7.0), [13] и FreeBSD (версия 12.0). [14]
  • ChaCha20 также заменил SHA-1 в Linux в версии 4.8. [15]
  • алгоритм Fortuna , преемник Ярроу, который не пытается оценить энтропийное качество своих входов. Фортуна используется во FreeBSD. Apple перешла на Fortuna для большинства или всех ОС Apple, начиная примерно с декабря 2019 года.
  • функция CryptGenRandom представлена в Microsoft «s Cryptographic Application Programming Interface
  • ISAAC на основе варианта шифра RC4
  • Эволюционный алгоритм на основе набора статистических тестов NIST . [16] [17]
  • arc4random
  • AES - CTR DRBG часто используется в качестве генератора случайных чисел в системах, использующих шифрование AES. [18] [19]
  • Стандарт ANSI X9.17 ( управление ключами финансовых учреждений (оптовая торговля) ), который также был принят в качестве стандарта FIPS . В качестве входных данных он принимает набор ключей k TDEA ( вариант 2 ) и (начальное значение) 64-битное случайное начальное число s . [20] Каждый раз, когда требуется случайное число, оно:
    • Получает текущую дату / время D с максимально возможным разрешением.
    • Вычисляет временное значение t = TDEA k ( D )
    • Вычисляет случайное значение x = TDEA k ( st ) , где ⊕ означает побитовое исключающее или .
    • Обновляет начальное значение s = TDEA k ( xt )
Очевидно, эту технику легко распространить на любой блочный шифр; Был предложен AES . [21]

Стандарты [ править ]

Некоторые CSPRNG стандартизированы. Например,

  • FIPS 186-4
  • NIST SP 800-90A :
Этот отозванный стандарт содержит четыре ГПСЧ. Два из них неоспоримы и проверены: CSPRNG с именами Hash_DRBG [22] и HMAC_DRBG. [23]
Третий PRNG в этом стандарте, CTR DRBG , основан на блочном шифре, работающем в режиме счетчика . Он имеет бесспорный дизайн, но было доказано, что он слабее с точки зрения различения атак, чем уровень безопасности базового блочного шифра, когда количество битов, выводимых из этого ГПСЧ, больше двух в степени размера блока базового блочного шифра. в битах. [24]
Когда максимальное количество битов, выводимых из этого PRNG, равно 2 размерам блока , результирующий вывод обеспечивает математически ожидаемый уровень безопасности, который, как ожидается, будет генерировать размер ключа, но вывод, как показано, неотличим от истинного случайного числа. генератор. [24] Когда максимальное количество битов, выводимых из этого ГПСЧ, меньше его, обеспечивается ожидаемый уровень безопасности, и выходные данные кажутся неотличимыми от истинного генератора случайных чисел. [24]
В следующей редакции отмечается, что заявленная сила безопасности для CTR_DRBG зависит от ограничения общего количества запросов генерации и количества битов, предоставляемых для каждого запроса генерации.
Четвертый и последний ГПСЧ в этом стандарте называется Dual_EC_DRBG . Было показано, что он не является криптографически безопасным и, как полагают, имеет клептографический бэкдор АНБ. [25]
  • NIST SP 800-90A Rev.1: по сути, это NIST SP 800-90A с удаленным Dual_EC_DRBG, заменяющий отозванный стандарт.
  • ANSI X9.17-1985 Приложение C
  • ANSI X9.31-1998 Приложение A.2.4
  • ANSI X9.62-1998, приложение A.4, устаревшее ANSI X9.62-2005, приложение D (HMAC_DRBG)

Хорошая ссылка поддерживается NIST .

Также существуют стандарты статистического тестирования новых конструкций CSPRNG:

  • Набор статистических тестов для генераторов случайных и псевдослучайных чисел , Специальная публикация NIST 800-22 .

Клептографический бэкдор АНБ в Dual_EC_DRBG PRNG [ править ]

В 2013 году The Guardian и New York Times сообщили, что Агентство национальной безопасности (АНБ) вставило бэкдор в генератор псевдослучайных чисел (ГПСЧ) NIST SP 800-90A, который позволяет АНБ легко расшифровать материал, который был зашифрован с его помощью. из Dual_EC_DRBG . В обоих документах сообщается [26] [27], что, как давно подозревали независимые эксперты по безопасности, [28] АНБ вводит слабые места в стандарт CSPRNG 800-90; это впервые подтверждается одним из совершенно секретных документов, просочившихся в Guardian Эдвардом Сноуденом.. АНБ тайно работало над получением собственной версии проекта стандарта безопасности NIST, одобренного для использования во всем мире в 2006 году. В просочившемся документе говорится, что «в конечном итоге АНБ стало единственным редактором». Несмотря на известный потенциал клептографического бэкдора и другие известные существенные недостатки Dual_EC_DRBG, несколько компаний, таких как RSA Security, продолжали использовать Dual_EC_DRBG до тех пор, пока бэкдор не был подтвержден в 2013 году. [29] RSA Security получила от АНБ выплату в размере 10 миллионов долларов США. так. [30]

Недостатки безопасности [ править ]

Атака ДУХК [ править ]

23 октября 2017 года, Shaanan Cohney , Мэтью Грин , и Надя Heninger , шифровальщики в The Пенсильванского университета и Университета Джона Хопкинса выпустили подробности о DUHK (не используйте Hard кодировкой ключей) атака на WPA2 , где использовать жёстко поставщики оборудования начальный ключ для алгоритма ANSI X9.31 RNG в сочетании с использованием генератора случайных чисел ANSI X9.31, "злоумышленник может подобрать зашифрованные данные, чтобы обнаружить остальные параметры шифрования и определить главный ключ шифрования, используемый для шифровать веб-сеансы или подключения к виртуальной частной сети (VPN) ". [31] [32]

Японский ФИОЛЕТОВЫЙ шифровальный аппарат [ править ]

Во время Второй мировой войны Япония использовала шифровальную машину для дипломатической связи; Соединенные Штаты смогли взломать его и прочитать его сообщения , в основном потому, что используемые «ключевые значения» были недостаточно случайными.

Ссылки [ править ]

  1. ^ Хуанг, Эндрю (2003). Взлом Xbox: Введение в обратный инжиниринг . Серия прессов без крахмала. Пресс без крахмала . п. 111 . ISBN 9781593270292. Проверено 24 октября 2013 . [...] генератор ключевого потока [...] можно рассматривать как криптографический генератор псевдослучайных чисел (CPRNG).
  2. ^ Дюфур, Седрик. «Как обеспечить энтропию и правильную генерацию случайных чисел в виртуальных машинах» . Экзоскейл .
  3. ^ "/ dev / random больше похоже на / dev / urandom с Linux 5.6 - Phoronix" . www.phoronix.com .
  4. ^ Кац, Джонатан; Линделл, Иегуда (2008). Введение в современную криптографию . CRC Press. п. 70 . ISBN 978-1584885511.
  5. Эндрю Чи-Чи Яо . Теория и приложения секретных функций . В материалах 23-го симпозиума IEEE по основам информатики, 1982 г.
  6. ^ Goldreich, Oded (2001), Основы криптографии I: Основные инструменты , Кембридж: Издательство Кембриджского университета, ISBN 978-0-511-54689-1, деф 3.3.1.
  7. ^ Goldreich, Oded (2001), Основы криптографии I: Основные инструменты , Кембридж: Издательство Кембриджского университета, ISBN 978-0-511-54689-1, Теорема 3.3.7.
  8. ^ Dodis, Евгений, Лекция 5 Заметки Введение в криптографию (PDF) , получены 3 января 2 016 , деф 4.
  9. ^ Миклош Санта, Умеш В. Вазирани (1984-10-24). «Генерация квазислучайных последовательностей из слегка случайных источников» (PDF) . Материалы 25-го симпозиума IEEE по основам информатики . Калифорнийский университет . С. 434–440. ISBN  0-8186-0591-X. Проверено 29 ноября 2006 .
  10. ^ Джон фон Нейман (1963-03-01). «Различные методы использования случайных цифр». Собрание сочинений Джона фон Неймана . Pergamon Press . С. 768–770. ISBN 0-08-009566-6.
  11. ^ Адам Янг, Моти Юнг (2004-02-01). Вредоносная криптография: раскрытие криптовирологии . раздел 3.2: John Wiley & Sons . п. 416. ISBN 978-0-7645-4975-5.CS1 maint: location (link)
  12. ^ "Журнал CVS arc4random.c" . CVS. 1 октября 2013.
  13. ^ "Журнал CVS arc4random.c" . CVS. 16 ноября 2014 г.
  14. ^ «Примечания к выпуску FreeBSD 12.0-RELEASE: библиотеки времени выполнения и API» . FreeBSD.org . 5 марта 2019 . Проверено 24 августа 2019 .
  15. ^ "Github коммит random.c" . Github. 2 июля 2016 г.
  16. ^ «Набор статистических тестов для генераторов случайных и псевдослучайных чисел для криптографических приложений» (PDF) . Специальная публикация. NIST. Апрель 2010 г.
  17. ^ Poorghanad, A .; Sadr, A .; Кашанипур, А. (май 2008 г.). «Создание высококачественного псевдослучайного числа с помощью эволюционных методов» (PDF) . Конгресс IEEE по вычислительному интеллекту и безопасности . 9 : 331–335.
  18. ^ Kleidermacher, Дэвид; Клейдермахер, Майк (2012). Безопасность встроенных систем: практические методы безопасной и надежной разработки программного обеспечения и систем . Эльзевир. п. 256. ISBN 9780123868862.
  19. ^ Кокс, Джордж; Дайк, Чарльз; Джонстон, ди-джей (2011). «Цифровой генератор случайных чисел Intel (DRNG)» (PDF) . Cite journal requires |journal= (help)
  20. ^ Менезес, Альфред ; ван Оршот, Пауль ; Ванстон, Скотт (1996). «Глава 5: Псевдослучайные биты и последовательности» (PDF) . Справочник по прикладной криптографии . CRC Press.
  21. ^ Янг, Адам; Юнг, Моти (2004-02-01). Вредоносная криптография: раскрытие криптовирологии . раздел 3.5.1: John Wiley & Sons . ISBN 978-0-7645-4975-5.CS1 maint: location (link)
  22. Кан, Уилсон (4 сентября 2007 г.). «Анализ базовых допущений в NIST DRBG» (PDF) . Проверено 19 ноября 2016 года .
  23. ^ Е., Кэтрин Qinru (апрель 2016). "The Notorious PRG: Формальная проверка генератора псевдослучайных чисел HMAC-DRBG" (PDF) . Проверено 19 ноября 2016 года .
  24. ^ a b c Кампанья, Мэтью Дж. (1 ноября 2006 г.). «Границы безопасности для детерминированного генератора случайных битов на основе кодовой книги NIST» (PDF) . Проверено 19 ноября 2016 года .
  25. ^ Perlroth, Nicole (10 сентября 2013). «Правительство объявляет о шагах по восстановлению доверия к стандартам шифрования» . Нью-Йорк Таймс . Проверено 19 ноября 2016 года .
  26. ^ Джеймс Боргер; Гленн Гринвальд (6 сентября 2013 г.). «Выявлено: как шпионские агентства США и Великобритании побеждают конфиденциальность и безопасность в Интернете» . Хранитель . Хранитель . Проверено 7 сентября 2013 года .
  27. ^ Nicole Perlroth (5 сентября 2013). «АНБ может нарушить основные гарантии конфиденциальности в Интернете» . Нью-Йорк Таймс . Проверено 7 сентября 2013 года .
  28. Брюс Шнайер (15 ноября 2007 г.). «Разве АНБ заложило секретный бэкдор в новый стандарт шифрования?» . Проводной . Проверено 7 сентября 2013 года .
  29. ^ Мэтью Грин. «RSA предупреждает разработчиков не использовать продукты RSA» .
  30. Джозеф Менн (20 декабря 2013 г.). «Эксклюзив: секретный контракт, связанный с АНБ и пионером индустрии безопасности» . Рейтер .
  31. ^ Шаанан Кохни ; Мэтью Д. Грин ; Надя Хенингер . «Практические атаки восстановления состояния на устаревшие реализации ГСЧ» (PDF) . duhkattack.com .
  32. ^ «DUHK Crypto Attack восстанавливает ключи шифрования, раскрывает VPN-соединения» . slashdot.org . Проверено 25 октября 2017 года .

Внешние ссылки [ править ]

  • RFC  4086 , Требования к случайности для безопасности
  • «Пул энтропии» Java для криптографически безопасных непредсказуемых случайных чисел.
  • Стандартный класс Java, обеспечивающий криптостойкий генератор псевдослучайных чисел (PRNG).
  • Криптографически безопасное случайное число в Windows без использования CryptoAPI
  • Предполагаемая безопасность ГСЧ эллиптической кривой ANSI-NIST , Дэниел Р.Л. Браун, IACR ePrint 2006/117.
  • Анализ безопасности генератора случайных чисел с эллиптическими кривыми NIST SP 800-90 , Дэниел Р.Л. Браун и Кристиан Джостин, IACR ePrint 2007/048. Появиться в CRYPTO 2007.
  • Криптоанализ генератора псевдослучайных двойных эллиптических кривых , Берри Шонмейкерс и Андрей Сидоренко, IACR ePrint 2006/190.
  • Эффективные псевдослучайные генераторы, основанные на предположении DDH , Реза Резаян Фарашахи и Берри Шонмейкерс и Андрей Сидоренко, IACR ePrint 2006/321.
  • Анализ генератора случайных чисел Linux , Цви Гуттерман, Бенни Пинкас и Цахи Рейнман.
  • Документация NIST Statistical Test Suite и загрузка программного обеспечения.