stringtranslate.com

Криптографически безопасный генератор псевдослучайных чисел

Криптографически безопасный генератор псевдослучайных чисел ( CSPRNG ) или криптографический генератор псевдослучайных чисел ( CPRNG ) — это генератор псевдослучайных чисел (PRNG) со свойствами, которые делают его пригодным для использования в криптографии . Его также называют криптографическим генератором случайных чисел ( CRNG ).

Фон

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

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

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

Требования

Требования обычного PRNG также удовлетворяются криптографически безопасным PRNG, но обратное неверно. Требования CSPRNG делятся на две группы:

  1. Они проходят статистические тесты на случайность :
  2. Они хорошо выдерживают серьезные атаки, даже когда часть их начального или рабочего состояния становится доступной злоумышленнику: [3]
    • Каждый CSPRNG должен выдерживать «атаки расширения компромисса состояния». [3] : 4  В случае, если часть или все его состояние было раскрыто (или правильно угадано), должно быть невозможно восстановить поток случайных чисел до раскрытия. Кроме того, если во время работы есть вход энтропии, должно быть невозможно использовать знание состояния входа для прогнозирования будущих условий состояния CSPRNG.

Например, если рассматриваемый PRNG производит вывод путем вычисления битов числа pi последовательно, начиная с некоторой неизвестной точки в двоичном расширении, он вполне может удовлетворять тесту следующего бита и, таким образом, быть статистически случайным, поскольку предполагается, что pi является обычным числом . Однако этот алгоритм не является криптографически безопасным; злоумышленник, который определяет, какой бит числа pi используется в данный момент (т. е. состояние алгоритма), сможет вычислить также все предыдущие биты.

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

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

Определения

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

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

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

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

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

Извлечение энтропии

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

Дизайны

Конструкции CSPRNG делятся на два класса:

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

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

Теоретико-числовые конструкции

Практические схемы

«Практические» схемы CSPRNG включают не только алгоритм CSPRNG, но и способ его инициализации (« семя »), сохраняя при этом семя в секрете. Определен ряд таких схем, в том числе:

Очевидно, что этот метод легко обобщается на любой блочный шифр; был предложен AES . [18] Если ключ k утечет, весь поток X9.17 может быть предсказан; эта слабость упоминается как причина создания Yarrow. [19]

Все эти вышеупомянутые схемы, за исключением X9.17, также смешивают состояние CSPRNG с дополнительным источником энтропии. Поэтому они не являются «чистыми» генераторами псевдослучайных чисел, в том смысле, что выход не полностью определяется их начальным состоянием. Это дополнение направлено на предотвращение атак, даже если начальное состояние скомпрометировано. [a]

Стандарты

Несколько CSPRNG были стандартизированы. Например:

Этот отозванный стандарт имеет четыре PRNG. Два из них не вызывают споров и проверены: CSPRNG, названные Hash_DRBG [22] и HMAC_DRBG. [23]

Третий PRNG в этом стандарте, CTR_DRBG , основан на блочном шифре , работающем в режиме счетчика . Он имеет не вызывающую споров конструкцию, но, как было доказано, слабее с точки зрения различения атак, чем уровень безопасности базового блочного шифра, когда количество битов, выводимых из этого PRNG, больше двух в степени размера блока базового блочного шифра в битах. [24]

Когда максимальное количество битов, выводимых из этого PRNG, равно 2 размерам блока , результирующий вывод обеспечивает математически ожидаемый уровень безопасности, который, как ожидается, будет генерировать размер ключа, но показано, что вывод неотличим от истинного генератора случайных чисел. [24] Когда максимальное количество битов, выводимых из этого PRNG, меньше его, обеспечивается ожидаемый уровень безопасности, и вывод оказывается неотличимым от истинного генератора случайных чисел. [24]

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

Четвертый и последний PRNG в этом стандарте называется Dual EC DRBG . Было показано, что он не является криптографически безопасным и, как полагают, имеет клептографический бэкдор АНБ. [25]

По сути, это NIST SP 800-90A с удаленным Dual_EC_DRBG, и это замена отмененного стандарта.

Хороший справочник поддерживается NIST . [26]

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

Уязвимости безопасности

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

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

Атака DUHK

23 октября 2017 года Шаанан Кохни, Мэтью Грин и Надя Хенингер , криптографы из Университета Пенсильвании и Университета Джонса Хопкинса , опубликовали подробности атаки DUHK (Don't Use Hard-coded Keys) на WPA2 , в которой поставщики оборудования используют жестко закодированный начальный ключ для алгоритма ANSI X9.31 RNG, заявив, что «злоумышленник может перебрать зашифрованные данные, чтобы обнаружить остальные параметры шифрования и вывести главный ключ шифрования, используемый для шифрования веб-сеансов или подключений к виртуальной частной сети (VPN)». [33] [34]

Японская шифровальная машина PURPLE

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

Ссылки

  1. ^ Использование энтропийного смешивания после инициализации CSPRNG было подвергнуто сомнению Дэниелом Дж. Бернстайном . [20]
  1. ^ Кац, Джонатан; Линделл, Йехуда (2008). Введение в современную криптографию. CRC press. стр. 70. ISBN 978-1584885511.
  2. ^ Эндрю Чи-Чи Яо . Теория и применение функций-лазеек. В трудах 23-го симпозиума IEEE по основам компьютерной науки, 1982.
  3. ^ ab Kelsey, John; Schneier, Bruce; Wagner, David; Hall, Chris (1998). "Криптоаналитические атаки на генераторы псевдослучайных чисел". Fast Software Encryption (PDF) . Берлин, Гейдельберг: Springer Berlin Heidelberg. doi :10.1007/3-540-69710-1_12. ISBN 978-3-540-64265-7. ISSN  0302-9743.
  4. ^ Голдрайх, Одед (2001), Основы криптографии I: Базовые инструменты , Кембридж: Издательство Кембриджского университета, ISBN 978-0-511-54689-1, определение 3.3.1.
  5. ^ Голдрайх, Одед (2001), Основы криптографии I: Базовые инструменты , Кембридж: Издательство Кембриджского университета, ISBN 978-0-511-54689-1, Теорема 3.3.7.
  6. ^ Додис, Евгений, Заметки к лекции 5 «Введение в криптографию» (PDF) , получено 3 января 2016 г., определение 4.
  7. ^ Миклош Санта, Умеш В. Вазирани (1984-10-24). "Генерирование квазислучайных последовательностей из слегка случайных источников" (PDF) . Труды 25-го симпозиума IEEE по основам компьютерной науки . Калифорнийский университет . стр. 434–440. ISBN 0-8186-0591-X. Получено 29.11.2006 .
  8. ^ Джон фон Нейман (1963-03-01). «Различные методы для использования в связи со случайными цифрами». Собрание сочинений Джона фон Неймана . Pergamon Press . С. 768–770. ISBN 0-08-009566-6.
  9. ^ Клейдермахер, Дэвид; Клейдермахер, Майк (2012). Безопасность встроенных систем: практические методы безопасной и надежной разработки программного обеспечения и систем. Эльзевир. п. 256. ИСБН 9780123868862.
  10. ^ Кокс, Джордж; Дайк, Чарльз; Джонстон, DJ (2011). «Цифровой генератор случайных чисел Intel (DRNG)» (PDF) .
  11. ^ Бернстайн, Дэниел Дж. «2017.07.23: Генераторы случайных чисел с быстрым стиранием ключей: попытка одновременно устранить несколько ошибок. #rng #forwardsecrecy #urandom #cascade #hmac #rekeying #proofs».
  12. ^ "Github commit of random.c". Github. 2 июля 2016 г.
  13. ^ "Генератор случайных чисел Linux 5.17 ускоряется, переход с SHA1 на BLAKE2s - Phoronix". www.phoronix.com .
  14. ^ "Журнал CVS arc4random.c". CVS. 1 октября 2013 г.
  15. ^ "Журнал CVS arc4random.c". CVS. 16 ноября 2014 г.
  16. ^ "FreeBSD 12.0-RELEASE Release Notes: Runtime Libraries and API". FreeBSD.org . 5 марта 2019 . Получено 24 августа 2019 .
  17. ^ Менезес, Альфред ; ван Ооршот, Пол ; Ванстоун, Скотт (1996). "Глава 5: Псевдослучайные биты и последовательности" (PDF) . Справочник по прикладной криптографии. CRC Press.
  18. ^ Янг, Адам; Юнг, Моти (2004-02-01). Вредоносная криптография: разоблачение криптовирусологии. John Wiley & Sons . раздел 3.5.1. ISBN 978-0-7645-4975-5.
  19. ^ Келси, Джон; Шнайер, Брюс; Фергюсон, Нильс (август 1999 г.). "Yarrow-160: заметки о разработке и анализе криптографического генератора псевдослучайных чисел Yarrow" (PDF) . Шестой ежегодный семинар по избранным областям криптографии . Конспект лекций по информатике. Том 1758. стр. 13–33. doi :10.1007/3-540-46513-8_2. ISBN 978-3-540-67185-5.
  20. ^ Daniel J. Bernstein (2014-02-05). "cr.yp.to: 2014.02.05: Entropy Attacks!". Есть ли какой-либо серьезный аргумент в пользу того, что постоянное добавление новой энтропии — это хорошо? На странице руководства Linux /dev/urandom утверждается, что без новой энтропии пользователь "теоретически уязвим для криптографической атаки", но (как я уже упоминал в разных местах) это смехотворный аргумент
  21. ^ "ФИПС 186-4" (PDF) .
  22. ^ Кан, Уилсон (4 сентября 2007 г.). «Анализ базовых предположений в DRBG NIST» (PDF) . Получено 19 ноября 2016 г.
  23. ^ Ye, Katherine Qinru (апрель 2016 г.). "The Notorious PRG: Formal verification of the HMAC-DRBG pseudorandom number generator" (PDF) . Получено 19 ноября 2016 г. .
  24. ^ abc Campagna, Matthew J. (1 ноября 2006 г.). "Границы безопасности для детерминированного генератора случайных битов на основе кодовой книги NIST" (PDF) . Получено 19 ноября 2016 г. .
  25. ^ Перлрот, Николь (10 сентября 2013 г.). «Правительство объявляет о шагах по восстановлению доверия к стандартам шифрования» . The New York Times . Получено 19 ноября 2016 г.
  26. Отдел компьютерной безопасности, Лаборатория информационных технологий (24 мая 2016 г.). «Случайное число». CSRC | NIST .
  27. ^ Рукхин, Эндрю; Сото, Хуан; Нечватал, Джеймс; Смид, Майлз; Баркер, Элейн; Ли, Стефан; Левенсон, Марк; Вангел, Марк; Бэнкс, Дэвид; Хекерт, Н.; Дрей, Джеймс; Во, Сан; Бассам, Лоуренс (30 апреля 2010 г.). "Статистический набор тестов для генераторов случайных и псевдослучайных чисел для криптографических приложений". NIST . doi : 10.6028/NIST.SP.800-22r1a – через csrc.nist.gov.
  28. ^ Джеймс Боргер; Гленн Гринвальд (6 сентября 2013 г.). «Раскрыто: как разведывательные агентства США и Великобритании побеждают конфиденциальность и безопасность в Интернете». The Guardian . Получено 7 сентября 2013 г.
  29. ^ Николь Перлрот (5 сентября 2013 г.). «АНБ способно нарушить основные гарантии конфиденциальности в Интернете». The New York Times . Получено 7 сентября 2013 г.
  30. Брюс Шнайер (15 ноября 2007 г.). «АНБ вставило секретный бэкдор в новый стандарт шифрования?». Wired . Получено 7 сентября 2013 г.
  31. Мэтью Грин (20 сентября 2013 г.). «RSA предупреждает разработчиков не использовать продукты RSA».
  32. Джозеф Менн (20 декабря 2013 г.). «Эксклюзив: Секретный контракт связал АНБ и пионера индустрии безопасности». Reuters .
  33. ^ Шаанан Кохни; Мэтью Д. Грин ; Надя Хенингер . «Практические атаки восстановления состояния против устаревших реализаций ГСЧ» (PDF) . duhkattack.com .
  34. ^ «Атака DUHK Crypto восстанавливает ключи шифрования и раскрывает VPN-подключения». slashdot.org . 25 октября 2017 г. . Получено 25 октября 2017 г. .

Внешние ссылки