Генерация псевдослучайных последовательностей на основе линейного конгруэнтного метода и полиномиального счётчика
Власенко А. В., Дзьобан П. И. Кубанский государственный технологический университет Краснодар, Россия alex_vlasenko@list.ru, antiemoboy@mail.ru
Аннотация. Специалисты в области информационной безопасности и защиты информации часто сталкиваются с необходимостью генерации случайных последовательностей и чисел. Чаще всего случайные числа требуются в задачах моделирования, численного анализа и тестирования, но есть и множество других весьма специфических задач. Известно, что во всех современных языках программирования есть функция random или её аналоги. Эти функции чаще всего дают действительно хорошие псевдослучайные числа. В статье рассмотрены особенности реализации линейного конгруэнтного метода, который чаще всего используется в функции random, и метод получения случайных чисел с помощью полиномиального счётчика, который применяется для тестирования аппаратуры.
Ключевые слова: случайная последовательность, псведослу-чаная последовательность, энтропия, генератор псевдослучайной последовательности, криптостойкость, линейный конгруэнтный метод, полиномиальный счетчик.
Введение
Есть смысл генерировать псевдослучайные числа только с равномерным законом распределения, так как все остальные распределения можно получить из равномерного путём преобразований, известных из теории вероятности. В 1927 г. Типпетт опубликовал первую таблицу случайных чисел [1, 2]. Чуть позже были попытки автоматизировать процесс. Стали появляться машины, генерирующие случайные числа. Сейчас такие устройства тоже используются и называются источниками (генераторами) энтропии. Стоит заметить, что только такие устройства могут давать по-настоящему случайные числа. Очевидно, генераторы энтропии довольно дороги, и их повсеместное использование невозможно. Именно поэтому возникла необходимость в алгоритмах получения псевдослучайных чисел [3].
Некоторые специалисты склонны считать, что генерация случайных и псевдослучайных последовательностей - это простая задача. Мнение обывателей заключается в постулате производить случайные сложные математические действия над исходным числом. Однако данные преобразования последовательны, имеют исходное значение и результат, а значит, заведомо скомпрометированы и подлежат дешифрованию в результате вычислений как в одну, так и в другую стороны [4].
Качественный генератор псевдослучайной последовательности, ориентированный на использование в средствах защиты программных систем, должен удовлетворять следующим требованиям:
• непредсказуемости (криптографической стойкости);
• хороших статистических свойств: псевдослучайная последовательность по своим статистическим свойствам не должна отличаться от истинно случайной последовательности;
• большого периода формируемой последовательности, учитывая, что при преобразовании больших массивов данных каждому элементу входной последовательности необходимо ставить в соответствие свой элемент псевдослучайной последовательности;
• эффективной программной и аппаратной реализации [4, 5].
При использовании непредсказуемого генератора псевдослучайной последовательности три следующие задачи для злоумышленника или аналитика, не знающих ключевой информации, вычислительно неразрешимы:
• определение предыдущего (i - 1)-го элемента y последовательности на основе известного фрагмента последовательности yi+1yi-+2—yi+1-4 конечной длины b (непредсказуемость влево);
• определение последующего (i + Ь)-го элемента элемента y^-последовательности на основе известного фрагмента гаммы yi-+1yi-+2—yi+1-b конечной длины b (непредсказуемость вправо);
• определение ключевой информации по известному фрагменту последовательности конечной длины.
Обращаясь ко второму тому Кнута, можно сделать вывод, что в 1959 г. были попытки построить генератор, основанный на такой последовательности преобразований [6]:
К1. [Выбрать число итераций.] Присвоить Y наибольшую значащую цифру Х. (Шаги К2-К13 будут выполнены точно Y+1 раз, т. е. применены псевдослучайные преобразования случайное число раз.)
К2. [Выбрать случайный шаг.] Присвоить следующую наибольшую значащую цифру X. Перейти к шагу К (3 + Z), т. е. к случайно выбранному шагу в программе.
КЗ. [Обеспечить > 5 х 109.] Если X < 5 000 000 000, присвоить X значение X + 5 000 000 000.
К4. [Средина квадрата.] Заменить X серединой квадрата X.
К5. [Умножить.] Заменить X числом (1001001001 X) mod 1010.
К6. [Псевдодополнение.] Если X < 100 000 000, то присвоить X значение X + 9 814 055 677; иначе присвоить X значение 1010 - X.
К7. [Переставить половины.] Поменять местами пять младших по порядку знаков со старшими.
К8. [Умножить.] Выполнить шаг К5.
К9. [Уменьшить цифры.] Уменьшить каждую не равную нулю цифру десятичного представления числа X на единицу.
К10. [Модифицировать на 99 999.] Если А' < 105, присвоить X значение X 2 + 99 999; иначе присвоить X значение X - 99 999.
К11. [Нормировать.] (На этом шаге А' не может быть равным нулю.) Если X < 109, то умножить X на 10.
К12. [Модификация метода средин квадратов.] Заменить Х на средние 10 цифр числа Х (Х - 1).
К13. [Повторить?] Если Y > 0, уменьшить У на 1 и возвратиться к шагу К2. Если Y = 0, алгоритм завершен. Значение числа X, полученное на предыдущем шаге, и будет желаемым «случайным» значением [7, 8].
Несмотря на кажущуюся сложность, этот алгоритм быстро сошёлся к числу 6 065 038 420, которое через небольшое число шагов преобразовалось в исходное значение [5].
В большинстве языков программирования именно линейный конгруэнтный метод используется в стандартной функции получения случайных чисел. Впервые этот метод был предложен Лехмером в 1949 г. [3]. Выбираются 4 числа:
• модуль т (т > 0);
• множитель а (0 <= а < т);
• приращение с (0 <= с < т);
• начальное значение X0 (0 <= Х0 < т).
Последовательность получается с использование следующей рекуррентной формулы:
Хп+1 = (а * Хп + с)шоё т. (1)
Этот метод даёт действительно хорошие псевдослучайные числа, но если взять числа т, а, с произвольно, т. е. определить исходные значения случайно, то результат, скорее всего, разочарует. Например, при исходных значениях т = 7, Х0 = 1, а = 2, с = 4 получится следующая последовательность: 1, 6, 2, 1, 6, 2, 1, ... Очевидно, что эта последовательность не совсем подходит под определение случайной или псевдослучайной, не выполняются описанные требования [6]. Тем не менее, полученные результаты позволили сделать следующие выводы:
• исходные значения т, а, с, Х0 не должны быть случайными;
• результат реализации линейного конгруэнтного метода - это повторяющиеся последовательности.
На самом деле любая функция, отображающая конечное множество X в X, будет давать циклически повторяемые значения. Таким образом, задача сводится к тому, чтобы максимально увеличить энтропию - удлинить уникальную часть последовательности. Очевидно, что длина уникальной части не может быть больше т. Период последовательности будет равен т только при выполнении следующих условий:
• значения с и т взаимно простые;
• а - 1 кратно р для каждого простого р, являющегося делителем т;
• если т кратно 4, то и а - 1 должно быть кратно 4.
Последовательности, получаемые с помощью линейного конгруэнтного метода, не являются криптографически стойкими, так как, зная четыре подряд идущих числа, крип-
тоаналитик может составить систему уравнений, из которых можно найти а, с, т.
Криптографически стойкий генератор псевдослучайных чисел (КСГПСЧ) - генератор псевдослучайных чисел, обладающий определенными свойствами, позволяющими использовать полученные числа в криптографии [9]. Требования к КСГПСЧ гораздо выше, чем к другим генераторам. В частности, КСГПСЧ должен обладать следующими свойствами:
• криптографической стойкостью;
• хорошими статистическими свойствами, делающими псевдослучайную последовательность неотличимой от истинно случайной;
• большим периодом псевдослучайной последовательности;
• эффективным использованием аппаратного ресурса [4, 5].
В основе полиномиального счетчика (сдвигового регистра) лежит операция исключающего ИЛИ (сумма по модулю два).
Схемы, представленные на рисунке, являются простейшими полиномиальными счётчиками.
Пример простейших схем полиномиальных счетчиков
Нулевой бит в таких схемах вычисляется на основе функции исключающего ИЛИ, а все остальные биты получаются простым сдвигом. Разряды, с которых сигнал идёт на исключающее ИЛИ, называются отводами [3, 5]. В таблице показано, как будут изменяться значения в рассмотренных регистрах при начальном значении 001.
Пример вычисления значений двух регистров Счетчик 1 и Счетчик 2
Счетчик 1 Счетчик 2
Шаг Биты Биты
0 1 2 0 1 2
0 0 0 1 0 0 1
1 1 0 0 1 0 0
2 1 1 0 0 1 0
3 1 1 1 1 0 1
4 0 1 1 1 1 0
5 1 0 1 1 1 1
6 0 1 0 0 1 1
7 0 0 1 0 0 1
Стоит отметить, что регистры начинают работу с одного и того же значения, но потом значения, генерируемые регистрами, начинают быстро расходиться. Однако через шесть шагов оба регистра возвращаются в исходное состояние. Не составляет особого труда доказать, что оба этих регистра сгенерировали максимально длинную последовательность, которая содержит все комбинации, кроме нулевой. То есть при разрядности регистра m можно получить последовательность длинной 2m -1 [10].
Полиномиальный счётчик любой разрядности имеет ряд комбинаций отводов, которые обеспечат последовательность максимальной длины. Использование неверных комбинаций приведёт к генерации коротких последовательностей. Отдельная и довольно сложная задача - поиск этих комбинаций отводов. Заметим, что эти комбинации не всегда уникальны. К примеру, для 10-битного счётчика их существует две: [6; 11] и [2; 11], для шестиразрядного счётчика таких комбинаций 28. Чтобы найти эти комбинации, необходимо представить счётчик в виде полинома [3, 7]. Счётчики, рассмотренные на рисунке, будут иметь вид X2 XOR1 X 2 XOR * XOR1.
Из теории известно, что необходимым и достаточным условием генерации полной последовательности является примитивность характеристического полинома. Это значит, что:
• характеристический полином нельзя представить в виде произведения полиномов более низкой степени;
• характеристический полином является делителем полинома z5XOR1 при 5 = 2m -1 и не является делителем при любых других значениях 5< 2m -1.
Преимуществами полиномиального счётчика является простота как программной, так и аппаратной реализации, скорость работы и криптографическая стойкость [9, 11].
Численные характеристики стойкости и трудоемкости реализации рассмотренных алгоритмов генерации, их модернизация защитными преобразованиями будут рассмотрены в следующих работах.
Литература
1. Kendall M. G. The advanced theory of statistics. Vol. II / M. G. Kendall. - L.: C. Griffin & Co. Ltd, 1946. 521 p.
2. Press W. H. Numerical Recipes in C: The Art of Scientific Computing / W. H. Press, S. A. Teukolsky, W. T. Vetterling, B. P. Flannery. 2nd ed. - Cambridge Univ. Press, 1992. P. 277.
3. Bassham L. A Statistical test suite for random and pseudorandom number generators for cryptographic applications april 2010 / L. Bassham, A. Rukhin, J. Soto et al. // Comput. Security Division Inf. Technol. Laboratory Nat. Inst. of Standards and Technol. Gaithersburg, MD 20899-8930. - URL: http://csrc.nist. gov/groups/ST/toolkit/rng/documents/SP800-22rev1a.pdf (дата обращения 28.11.2017).
4. Власенко А. В. Разработка алгоритмов, инструментов и методов авторизации пользователей в Web-приложениях с использованием хеш-функций / А. В. Власенко, П. И. Дзьо-бан, М. В. Тимченко // Вестн. Адыгейского гос. ун-та. Сер. 4: Естественно-математические и технические науки. 2015. № 4 (171). С. 144-150.
5. Власенко А. В. Защита конфиденциальной информации, передаваемой по открытым каналам связи / А. В. Вла-сенко, В. Г. Смирнов // Изв. ЮФУ. Технические науки. 2003. № 4. С. 230-232.
6. Knuth E. D. The art of computer programming. Vol. 2. Polycycline algorithms / E. D. Knuth. - 2001. 788 p.
7. Козачок А. В. Обоснование возможности применения верификации программ для обнаружения вредоносного кода /
A. В. Козачок, Е. В. Кочетков // Вопр. кибербезопасности. 2016. № 3 (16). С. 25-32.
8. Гнидко К. О. Моделирование индивидуального и группового поведения субъектов массовой коммуникации в р-адических системах координат для индикации уровня контаминации сознания / К. О. Гнидко, А. Г. Ломако // Вопр. кибербезопасности. 2016. № 2 (15). С. 54-68.
9. Жуков И. Ю. Принципы построения криптостойких генераторов псевдослучайных кодов / И. Ю. Жуков, М. А. Иванов, С. А. Осмоловский // Проблемы информационной безопасности. Компьютерные системы. 2001. № 1. С. 55-65.
10. Гончарук В. С. Методы генерации случайных чисел /
B. С. Гончарук, Ю. С. Атаманов, С. Н. Гордеев // Молодой ученый. 2017. № 8. С. 20-23.
11. Иванов М. А. Криптографические методы защиты информации в компьютерных системах и сетях: учеб. пособие / М. А. Иванов, И. В. Чугунков; под ред. М. А. Иванова. -М.: НИЯУ МИФИ, 2012. 400 с.
Generation of the Pseudorandom Sequences on the Basis of the Linear Congruent Method and the Polynomial Counter
Vlasenko A. V., Dzyoban P. I. Kuban State Technological University Krasnodar, Russia alex_vlasenko@list.ru, antiemoboy@mail.ru
Abstract. Experts in information security field and information security often face need of generation of random series and numbers. Most often random numbers are required in tasks of simulation, the numerical analysis and testing, but there is also a set of other very specific tasks. It is known that in all modern languages of programming there is a random function or its analogs. These functions most often give really good pseudorandom numbers. In article features of implementation of the linear congruent method which is most often used as random, and a method of receiving random numbers by means of the polynomial counter which is often used for testing of an equipment are considered.
Keywords: random series, pseudo stochastic sequence, entropy, generator of the pseudorandom sequence, crypto security, the linear congruent method, polynomial counter.
References
1. Kendall M. G. The Advanced Theory of Statistics. Vol. II. L., C. Griffin & Co. Ltd, 1946. 521 p.
2. Press W. H., Teukolsky S. A., Vetterling W. T., Flanne-ry B. P. Numerical Recipes in C: The Art of Scientific Computing. 2nd ed. Cambridge Univ. Press, 1992. P. 277.
3. Bassham L., Rukhin A., Soto J., Nechvatal J., Smid M., Barker E., Leigh S., Levenson M., Vangel M., Banks D., Heck-ert N., Dray J. A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications April 2010, Comput. Security Division Inf. Technol. Laboratory Nat. Inst. of Standards and Technol. Gaithersburg, MD 20899-8930. Available at: http://csrc.nist.gov/groups/ST/tool-kit/rng/documents/SP800-22rev1a.pdf (accessed 28.11.2017).
4. Vlasenko A. V., Dzoban P. I., Timchenko, M. V. Development of Algorithms, Tools and Methods of User Authorization in Web Applications Using Hash Functions [Razrabotka algoritmov, instrumentov i metodov avtorizatsii pol'zovateley v Web-prilo-zheniyakh s ispol'zovaniem khesh-funktsiy], Bull. of Adyghe state Univ., Series 4: Natural-mathematical and Technical Sci. [Vestnik Adygeyskogo gosudarstvennogo universiteta. Seriya 4:
Estestvenno-matematicheskie i tekhnicheskie nauki], 2015, no. 4 (171), pp. 144-150.
5. Vlasenko A. V., Smirnov V. G. Protection of Confidential information Transmitted Over Open Channels of Communication [Zashchita konfidentsial'noy informatsii, peredavaemoy po otkry-tym kanalam svyazi], Izvestiya YuFU. Technical Sci. [Izvestiya YuFU. Tekhnicheskie nauki], 2003, no. 4, pp. 230-232.
6. Knuth E. D. The Art of Computer Programming. Vol. 2. Polycycline algorithms. 2001. - 788 p.
7. Kozachok A. V., Kochetkov E. V. Substantiation of Possibility of Application of Program verification to Detect Malicious Code [Obosnovanie vozmozhnosti primeneniya verifikatsii programm dlya obnaruzheniya vredonosnogo koda], Cybersecurity [Voprosy kiberbezopasnosti], 2016, no. 3 (16), pp. 25-32.
8. Gnidko K.A., Lomako A. G. Modeling Individual and Group Behavior of Subjects of Mass Communication in the R-ad-ic Coordinate Systems to Indicate the Level of Contamination of Consciousness [Modelirovanie individual'nogo i gruppovogo povedeniya sub''ektov massovoy kommunikatsii v r-adicheskikh sistemakh koordinat dlya indikatsii urovnya kontaminatsii soz-naniya], Cybersecurity [Voprosy kiberbezopasnosti], 2016, no. 2 (15), pp. 54-68.
9. Zhukov I.Yu., Ivanov M. A., Osmolovskii S. A. Principles of Construction of Cryptographically Strong Pseudorandom Codes [Printsipy postroeniya kriptostoykikh generatorov psev-dosluchaynykh kodov], Prob. Inf. Secur. Of the computer system [Problemy informatsionnoy bezopasnosti. Komp'yuternye sistemy], 2001, no. 1, pp. 55-65.
10. Goncharuk S. V., Atamanov Yu. S., Gordeev S. N. Methods of Random Number Generation [Metody generatsii sluchaynykh chisel], The Young scientist [Molodoy uchenyy], 2017, no. 8, pp. 20-23.
11. Ivanov M.A., Chugunkov I. V. Cryptographic Methods of Information Protection in Computer Systems and Networks [Kriptograficheskie metody zashchity informatsii v komp'yuternykh sistemakh i setyakh]: textbook; ed. M.A. Ivanov. Moscow, Nat. Res. Nuclear Univ. MEPhI, 2012. 400 p.