Криптографическая стойкость генераторов случайных чисел. Алгоритм Ярроу

4. Pisarenko I. Neural network technologies in security // Journal of Information Security. № 4, 2009.

CRYPTO STABILITY OF GENERATORS OF RANDOM NUMBERS.

YARROW ALGORITHM Nazarenko Yu.L. (Russian Federation) Email: Nazarenko432@scientifictext.ru

Nazarenko Yury Leonidovich - Student, DEPARTMENT OF INFORMATICS AND COMPUTER SCIENCE, DON STATE TECHNICAL UNIVERSITY, ROSTOV-ON-DON

Abstract: the article is devoted to the technologies of realizing random and pseudorandom number generators, as well as their cryptographic stability. The main requirements for pseudo-random number generators for their use in cryptographic protocols are given. Examples of the use of cryptographic persistent pseudo-random number generators in web security are described. Possible ways of implementing random number generators are given. Separately, a concrete implementation of a cryptographically stable generator based on the Yarrow algorithm is considered, its merits and drawbacks are considered, conclusions are made about the possibility of its practical use.

Keywords: a pseudo-random number generator, cryptographic stability, the Yarrow algorithm, the mechanism of copying.

КРИПТОГРАФИЧЕСКАЯ СТОЙКОСТЬ ГЕНЕРАТОРОВ СЛУЧАЙНЫХ ЧИСЕЛ. АЛГОРИТМ ЯРРОУ Назаренко Ю.Л.

Назаренко Юрий Леонидович - студент, факультет информатики и вычислительной техники, Донской государственный технический университет, г. Ростов-на-Дону

Аннотация: статья посвящена технологиям реализации генераторов случайных и псевдослучайных чисел, а также их криптографической стойкости. Приведены основные требования, предъявляемые к генераторам псевдослучайных чисел для их использования в криптографических протоколах. Описаны примеры использования криптографических стойких генераторов псевдослучайных чисел в веб-безопасности. Приведены возможные способы реализации генераторов случайных чисел. Отдельно рассмотрена конкретная реализация криптографически стойкого генератора на основе алгоритма Ярроу, рассмотрены его достоинства и недостатки, сделаны выводы о возможности его практического использования.

Ключевые слова: генератор псевдослучайных чисел, криптографическая стойкость, алгоритм Ярроу, механизм пересева.

Случайные числа и генераторы случайных и псевдослучайных чисел.

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

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

Основная сложность генерации последовательности псевдослучайных чисел на компьютере в том, что компьютеры детерминистичны по своей сути. Компьютер может находиться только в конечном количестве состояний (количество состояний огромно, но конечно). Следовательно, любой датчик случайных чисел по определению периодичен. Все периодическое - предсказуемо, т.е. не случайно.

Лучшее, что может произвести компьютер - это псевдослучайная последовательность. Период такой последовательности должен быть таким, чтобы конечная последовательность разумной длины не была периодической. Относительно короткие непериодические подпоследовательности должны быть как можно более неотличимы от случайных последовательностей, в частности, соответствовать различным критериям случайности.

Генераторы случайных чисел — ключевая часть веб-безопасности. Небольшой список применений:

• Генераторы сессий

• Шифрование

• Генерация соли для хранения паролей в необратимом виде

• Генератор паролей

• Порядок раздачи карт в интернет казино

• многое другое.

При этом ГПСЧ не лишены уязвимостей, использование которых злоумышленниками может привести к нарушению безопасности при работе с криптографическими протоколами, основанными на случайных числах (большинство является таковыми). Основными уязвимостями ГПСЧ являются:

• Предсказуемая зависимость между числами.

• Предсказуемое начальное значение генератора.

• Малая длина периода генерируемой последовательности случайных чисел, после которой генератор зацикливается.

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

В идеале случайные числа должны основываться на настоящем физическом источнике случайной информации, которую невозможно предсказать. Примеры таких источников включают шумящие полупроводниковые приборы, младшие биты оцифрованного звука, интервалы между прерываниями устройств или нажатиями клавиш. Полученный от физического источника шум затем «дистиллируется» криптографической хэш-функцией так, чтобы каждый бит зависел от каждого бита. Достаточно часто для хранения случайной информации используется довольно большой пул (несколько тысяч бит) и каждый бит пула делается зависимым от каждого бита шумовой информации и каждого другого бита пула криптографически надежным (strong) способом.

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

• КСГПСЧ должен удовлетворять «тесту на следующий бит». Смысл теста в

следующем: не должно существовать полиномиального алгоритма, который, зная первые k битов случайной последовательности, сможет предказать (к+1)-й бит с вероятностью более 50%.

• КСГПСЧ должен оставаться надёжным даже в случае, когда часть или все его состояния стали известны (или были корректно вычислены). Это значит, что не должно быть возможности получить случайную последовательность, созданную генератором, предшествующую получению этого знания криптоаналитиком. Кроме того, если во время работы используется дополнительная энтропия, попытка использовать знание о входных данных должна быть вычислительно невозможна.

Существует три класса реализации КСГПСЧ:

• На основе криптографических алгоритмов

• На основе вычислительно сложных математических задач

• Специальные реализации

Одним из КСГПСЧ, разработанных в рамках специальной реализации, является алгоритм Ярроу. Он описан в следующей части данной статьи.

Алгоритм Ярроу. Алгоритм криптографически стойкого генератора псевдослучайных чисел. В качестве названия выбран тысячелистник, засушенные стебли которого служат источником энтропии при гадании. Алгоритм разработан в августе 1999 года Брюсом Шнайером, Джоном Келси и Нилсом Фергусом из компании Counterpane Internet Security [3].

Компоненты Yarrow. Yarrow это криптографически стойкий генератор псевдослучайных чисел. Он состоит из четырёх основных компонентов:

1) Аккумулятора энтропии, который собирает семплы из источников энтропии в два пула (быстрый и медленный).

2) Механизма пересева (усложнения), периодически пересевающего ключ новой энтропией из пулов.

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

4) Управления пересевом, определяющего, когда нужно пересевать ключ.

Рис. 1. Общий вид алгоритма

Аккумулятор энтропии. Аккумулятор энтропии состоит из двух пулов:

1) Быстрый пул (fast pool) обеспечивает частые пересевы ключа.

2) Медленный пул (slow pool) обеспечивает редкие, но очень консервативные (по оценке имеющейся в нём энтропии) пересевы ключа.

Каждый из пулов представляет собой текущее значение односторонней хеш -функции, на вход которой подаются семплы, содержащие энтропию. Хеш-функция

выполняет роль сборщика энтропии. Семплы из источников поочерёдно поступают то в быстрый то в медленный пул.

Измерение энтропии. Для каждого источника пул поддерживает оценку полученной энтропии в битах. Измерение энтропии весьма непростой процесс, однако практически предлагается использовать три способа:

1) Значение энтропии каждого семпла передаётся программистом в виде коэффициента.

2) Для каждого источника постоянно выдаётся оценка энтропии через специализированный определитель.

3) Общесистемный лимит, константа (0,5 в Yarrow).

Для оценки энтропии каждого семпла используется наименьший из них.

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

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

Механизм генерации.

Используются 2 алгоритма:

Односторонняя хеш-функция h(x), с отпечатком размером m-бит, которая должна обладать следующими свойствами:

• быть необратимой, то есть стойкой к восстановлению прообраза;

• быть стойкой к коллизиям;

• давать на выходе 17Ï -бит.

В Ярроу-160 используется алгоритм SHA-1 в качестве h(). Блочный шифр EK () с ключом длиной k-бит и n-битным блоком [4].

• иметь ключ длиной k-бит и блок данных размером n-бит;

• быть устойчивым к открытому тексту и атакам по выбранному тексту;

• иметь хорошие статистические свойства выходных сигналов, даже при высокошаблонных входных сигналах.

В Ярроу-160 используется алгоритм 3-KEY Triple DES в качестве EK().

Рис. 2. Механизм генерации

Для генерации следующих n-бит псевдослучайной последовательности счётчик C увеличивается на 1 и зашифровывается блочным шифром, используя ключ K: C ^ C + 1 mod 2n R ^ Ek

где R — выход псевдослучайной последовательности, а K — текущий ключ.

Если в какой-то момент ключ оказался скомпрометирован, нужно предотвратить утечку предыдущих выходных значений, которые атакующий может получить. Описанный механизм не имеет такой защиты от утечки, поэтому дополнительно ведётся подсчёт количества блоков псевдослучайных последовательностей, выданных на выход. Как только будет достигнут некий лимит 1 < Pg < 2п/3, генерируется k-битовый выход и устанавливается как ключ. K ^ следующие k бит выхода PRNG

Следует выбирать весьма консервативное значение Pg , в Yarrow оно задано как 10. Механизм пересева. Механизм пересева генерирует новый ключ K для генератора из энтропии, собранной в аккумуляторе энтропии, и существующего ключа. Время выполнения механизма пересева зависит от параметра Pt > 0. Механизм пересева состоит из следующих шагов:

1. Аккумулятор энтропии вычисляет хеш всех входов в быстрый пул. Результат этого вычисления назовём v0.

2. Установить vt = h(vi_1\v0\i), для i = 1..t

3. Установить К ^ h (h(vp.\K), к).

4. Установить С ^ ЕК

5. Сбросить все счётчики энтропии в пулах в 0.

6. Очистить всю память, задействованную под хранение промежуточных значений.

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

Быстрота и эффективность. Никто из разработчиков не будет использовать алгоритм, сильно замедляющий приложение.

Простота. Любой программист без особых знаний в криптографии должен суметь его безопасно использовать.

Оптимизация. Там, где это возможно, алгоритм должен использовать уже существующие блоки команд.

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

Направление развития. В планах на будущее у создателей использование нового стандарта блочного шифра AES. Новый блочный шифр легко сможет разместиться в базовой конструкции алгоритма Ярроу. Для этого будет необходимо или изменить хеш-функцию усложнения, или разработать новую хеш-функцию, чтобы обеспечить заполнение пула энтропии более чем 160 битами. Для AES со 128 битами это не будет проблемой, а для AES со 192 или 256 битами эту проблему придется разрешить.

Набор правил для механизма управления усложнением по-прежнему остается временным. По этой причине это является предметом постоянных исследований.

Выводы. В настоящее время алгоритм Ярроу является сильно защищенным генератором псевдослучайных чисел. Это позволяет использовать его для широкого спектра задач: шифрования, электронной подписи, целостности информации и других задач.

Список литературы /References

1. Криптографическая защита информации в информационных системах. Курс лекций. И.Д. Горбенко. ХНУРЭ, 2002.

2. Алгоритм Yarrow — краткий обзор Ситкарев Г.А. Сыктывкарский государственный университет. Лаборатория программирования и прикладной математики.

3. Шнайер Б. Генерация случайных и псевдослучайных последовательностей // Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си— М.: Триумф, 2002. 816 с.

4. Алгоритм Ярроу // Википедия. [Электронный ресурс]. Режим доступа: http://ru.wikipedia.org/?oldid=85118712/ (дата обращения: 29.04.2017).

Список литературы на английском языке /References in English

1. Cryptographic protection of information in information systems. Lecture course. Gorbenko I. KNUR, 2002.

2. The Yarrow algorithm is an overview. Sitkarev G.A. Syktyvkar State University Laboratory of Programming and Applied Mathematics.

3. Schneier B. Applied Cryptography. Protocols, Algorithms and Source Code in C., 2002. 816 р.

4. Yarrow algorithm. (2017. September, 12). In Wikipedia. The Free Encyclopedia. Retrieved 22:46, December 7, 2017. [Electronic resource]. URL: https://en.wikipedia.org/w?oldid=800273269/ (date of access: 29.04.2017).