УДК 004.056.6 ББК 32.973-018.1 В 58
Власенко Александра Владимировна
Кандидат технических наук, доцент, зав. кафедрой компьютерных технологий и информационной безопасности института компьютерных систем и информационной безопасности Кубанского государственного технологического университета, Краснодар, e-mail: vlasenko@kubstu.ru Дзьобан Павел Игоревич
Кандидат технических наук, преподаватель кафедры компьютерных технологий и информационной безопасности института компьютерных систем и информационной безопасности Кубанского государственного технологического университета, Краснодар, e-mail: antiemoboy@mail.ru Шопин Андрей Викторович
Кандидат технических наук, доцент кафедры автоматизированных систем обработки информации и управления инженерно-физического факультета Адыгейского государственного университета, Майкоп, e-mail: ashop@adygnet.ru
Алгоритмы модификации генерации псевдослучайной последовательности
(Рецензирована)
Аннотация. Довольно часто специалисты в области информационной безопасности и защиты информации в своей работе сталкиваются с необходимостью генерации случайных последовательностей и чисел. Чаще всего случайные числа требуются в задачах моделирования, численного анализа и тестирования, но существует и множество других весьма специфических задач. Известно, что во всех современных языках программирования есть функция random или ее аналоги. Эти функции чаще всего дают действительно хорошие псевдослучайные числа. В данной статье рассмотрены особенности реализации линейного конгруэнтного метода, который чаще всего используется в функции random, и метод получения случайных чисел с помощью полиномиального счетчика, который часто используется для тестирования аппаратуры.
Ключевые слова: случайная последовательность, псведослучайная последовательность, энтропия, генератор псевдослучайной последовательности, криптостойкость, линейный конгруэнтный метод, полиномиальный счетчик.
Vlasenko Aleksandra Vladimirovna
Candidate of Technical Sciences, Associate Professor, Head of Computer Technologies and Information Security Department, Institute of Computer Systems and Information Security, Kuban State University of Technology, Krasnodar, e-mail: vlasenko@kubstu.ru Dzoban Pavel Igorevich
Candidate of Technical Sciences, Lecturer Computer Technologies and Information Security Department, Institute of Information Technologies and Security, Kuban State University of Technology, Krasnodar, e-mail: an-tiemoboy@mail.ru
Shopin Andrey Viktorovich
Candidate of Technical Sciences, Associate Professor of Department of Automated Systems of Processing Information and Control at Engineering-Physics Faculty, Adyghe State University, Maikop, e-mail: ashop@adygnet.ru
Algorithms of modified pseudo random sequence generation
Abstract. Quite often, experts in the field of information security and information protection in their work are faced with the need to generate random sequences and numbers. Most often, random numbers are required in problems of modeling, numerical analysis and testing, but there are many other very specific tasks. It is known that in all modern programming languages there is a function random or its analogs. These functions most often give really good pseudorandom numbers. This article discusses the features of the implementation of a linear congruent method, which is most often used in the random function, and a method for obtaining random numbers using a polynomial counter, which is often used to test hardware.
Keywords: random sequence, pseudo-random sequence, entropy, pseudo-random sequence generator, cryptographic resistance, linear congruent method, polynomial counter.
Аутентификация субъекта может осуществляться с использованием как симметричных, так и несимметричных алгоритмов. В системах с большим числом пользователей применение симметричных методов требует введения доверенной стороны, с которой разделяют секретные ключи все пользователи системы (рис. 1) [1, 2].
Рис. 1. Схема симметричной аутентификации с доверенной третьей стороной
Процесс аутентификации состоит из пяти (односторонняя аутентификация) или шести (взаимная аутентификация) шагов:
1. Клиент С посылает серверу аутентификации сообщение, содержащее идентификаторы клиента IDC и требуемого сервера выдачи разрешений IDtgs (Ticket Granting Server), отвечающего за представление соответствующей услуги, а также информацию nC, предназначенную для идентификации конкретного запроса: время, свой сетевой адрес и т.п.
2. Сервер аутентификации осуществляет поиск в базе данных Kerberos по идентификатору клиента и идентификатору услуги, находит соответствующие ключи Kcas и KAS,TGS, формирует сеансовый ключ KC,TGS для взаимодействия клиента и сервера выдачи разрешений. После этого сервер AS посылает ответ клиенту. Этот ответ содержит две шифровки. Первая, полученная на секретном ключе клиента Kcaas содержит сеансовый ключ KC,TGS для работы с сервером выдачи разрешений, идентификатор последнего IDTGS и срок жизни ltc,TGS разрешения клиенту на работу с сервером TGS. Вторая шифровка, полученная на ключе KAS,TGS - это разрешение TC,TGS клиенту на взаимодействие с сервером TGS. В состав второй шифровки, которую клиент прочесть не может, так как не знает ключа KAS,TGS входят идентификаторы IDC и IDTGS, сеансовый ключ KC,TGS и срок жизни этого разрешения ltc,tgs.
3. Получив сообщение, клиент расшифровывает первую его половину на ключе KC,AS проверяет отметку nC, узнает сеансовый ключ KC,TGS и срок жизни разрешения на работу с сервером TGS. Таким образом, в результате обмена сообщениями с сервером AS клиент получает разрешение на работу с сервером TGS. Затем клиент посылает запрос серверу выдачи разрешений. Сообщение для сервера TGS включает в себя две шифровки. Первая, полученная на сеансовом ключе KC,TGS, включает в себя идентификаторы IDC и IDS, идентификатор запроса nC и временную метку tsC,TGS. Вторая - это «запечатанное» ключом KAS,TGS разрешение TC,TGS.
4. Сервер выдачи разрешений расшифровывает разрешение TC,TGS, узнает сеансовый ключ KC,TGS, с помощью которого читает первую часть пришедшего сообщения и проверяет идентификатор nC и временную метку tsC,TGS. Удостоверившись в подлинности клиента, сервер TGS вырабатывает сеансовый ключ KC,S для взаимодействия клиента C и сервера S. На знании этого ключа и будет основываться в будущем взаимная аутентификация C и S. После этого отправляет сообщение клиенту, содержащее зашифрованные на ключе KC,TGS сеансовый ключ и срок жизни разрешения клиенту на работу с сервером, а также само это разрешение TC,S, зашифрованное на секретном ключе KS,TGS.
5. Клиент, получив сообщение, расшифровывает первую его часть, из которой извлекает сеансовый ключ KC,S для работы с сервером S и срок жизни разрешения на взаимодействие с сервером S. Само «запечатанное» ключом KS,TGS разрешение TC,S клиент прочесть не может. Таким образом, в результате обмена с сервером выдачи разрешений клиент получает разрешение на дальнейшее взаимодействие уже с прикладным сервером. Наконец, клиент посылает серверу S сообщение, содержащее зашифрованные на сеансовом ключе KC,S свой идентификатор IDC, идентификатор nC и временную метку tsC,S, а также разрешение TC,S
полученное от сервера TGS.
6. Приняв сообщение от клиента и «распечатав» разрешение ТC,S, целевой сервер узнает сеансовый ключ Кс$ и с его помощью проводит аутентификацию клиента, проверяя идентификатор nC и временную метку tsC,S. Ответ сервера клиенту посылается в том случае, когда требуется взаимная аутентификация. Ответ прикладного сервера в этом случае содержит зашифрованный на ключе Кс^ результат преобразования h(tsC,S) метки tsC,S [3-6].
Реализация шифрования аутентификационных данных в разработанной методике происходит с помощью односторонних криптографических хеш-функций. Криптографические хеш-функции отличаются следующими условиями от остальных хеш-функций:
- стойкость к коллизиям 1-го рода: для какого-либо сообщения P должно быть невозможно в реальном времени подобрать другое какое-либо сообщение Q, для которого хеш-функция F(P)=F(Q);
- стойкость к коллизиям 2-го рода: должно быть невозможно в реальном времени подобрать такую пару сообщений (P, P'), хеш для которых будет идентичным;
- необратимость: для установленного значения хеш-функции A должно быть невозможно в реальном времени найти блок данных X, хеш-функция для которого F(X)=A [7, 8, 10].
Таким образом, на примере разработанной ранее методики авторизации пользователей Web-приложений с помощью n-разового хеширования с разными алгоритмами и разбавлением хеша энтропией (полученной на генераторе случайных чисел), используя инструмент «salt» - соль, значительно увеличивается криптостойкость передаваемых данных от пользователя к базе данных ресурсов.
В данном примере используется модификатор «соль», состоящий всего из трех случайно сгенерированных символов. Для каждого пользовательского пароля (при его регистрации) необходимо генерировать свою «соль» и записывать в базу данных рядом с паролем, чтобы использовать при хешировании (рис. 2).
Рис. 2. Алгоритм усиления хеш-суммы пароля с помощью модификаторов случайной последовательности
Рассмотрим пример:
- регистрируем пользователя: md5 с паролем password и «солью» 8f*;
- получаем его хеш, используя md5 (md5 (¿password). '8f*');
- записываем пользователя в таблицу, получаем: 1 | md5 | 84cd3e7f13bbaed1c1db91671844bcc | 8f*.
Таким образом, можно заключить, что в стремлении к абсолютной стойкости идентификаторов и аутентификаторов важную роль играет случайная последовательность. Как только злоумышленник сможет вычислить зависимость, алгоритм и предсказывать значения генератора случайных чисел, любой алгоритм шифрования, использующий самые стойкие хеш-функции, будет не актуален и бесполезен. Процедура идентификации, аутентификации и авторизации будет нелегитимной, информация на ресурсе утеряет свою целостность и конфиденциальность.
Для начала объявляется массив спецсимволов, которые будут участвовать при работе метода замены; они базовые и их количество определяет разработчик:
var specSymbols = ["!","~","$","Л","@","%","#","&", "?","*"].
Далее реализована хеш-сумма от стандартного метода модификатора «соль» следующей структуры:
var saltHash = simpleMD5.getMD5 (simpleMD5.getMD5(salt) + simpleMD5.getMD5(text)).
Затем объявляется переменная, в которой будет храниться хеш от «несоленого» пароля пользователя Web-приложения:
var plainHash = simpleMD5.getMD5(text).
Следующим шагом является составление таблицы соответствия хеш-суммы с модификатором «соль» и хеш-суммы пароля без модификатора.
Инструмент усиления и увеличения криптостойкости заключается в следующем: если п-й символ в алгоритме хеширования, в данном случае md5-хэше, от нехешированного пароля идентифицируется как цифра, то в хешировании пароля с модификатором «соль» происходит замена на один из спецсимволов, номер которого в ранее объявленном массиве соответствует этому численному значению.
Таблица 1
Пример реализации усиленного хеширования аутентификационных данных
пользователей Web-приложения
Хеш пароля Хеш пароля + модификатор «соль» Замена
d e D
1 3
m 2 e
7 3 *
r c P
e e E
3 f %
b 8 B
Итак, первым символом во второй строке столбца «хеш пароля» является цифра «1». Следовательно, он заменит символ «3» в хешировании с модификатором спецсимволом «~».
Далее рассмотрим реализацию второго условия: если п-й символ в хеш-сумме md5 от хеша пароля является буквой и попадает в заданный диапазон, в данной методике «a-d», то в хешировании с модификатором он переводится в верхний регистр.
Соответственно, если ни одно из условий не выполняется, то в хешировании с модификатором реализуется стандартная замена на символ с соответствующим порядковым номером из строки "вакНавЬ".
Результатом выполнения усиленной методики аутентификации пользователей Web-приложения явились следующие результаты. К примеру, простейший пароль, который вряд ли удовлетворит требованиям сложности аутентификации, "probniy" преобразуется в результате использования предлагаемого алгоритма в значение:
«Е~1*19с! %3~!/%0 %#*&12##*!?#~&C32».
Изначальное значение, которое является результатом псевдослучайной последователь-
ности, задает тон последующим защитным преобразованиям. Простейшие операции по замене, перемешиванию и подстановке модифицируют данные аутентификации и не позволяют их анализировать по шаблону «радужных» таблиц и методом «грубого» перебора в том числе [9, 11, 12].
Примечания:
1. Kendall M.G., Stuart A. Theory of distributions. N. Y., 1963. Р. 36-121.
2. Ervin Knuth D. The art of computer programming // Polycycline algorithms. 2001. Vol. 2. 788 pp.
3. A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications April 2010 / L. Bassham (NIST), A. Rukhin (NIST), J. Soto (NIST) [et al.] // Computer Security Division Information Technology Laboratory National Institute of Standards and Technology Gaithersburg, MD 20899-8930. URL:
http://csrc.nist.goV/groups/ST/toolkit/rng/documents/S P800-22rev1a.pdf (дата обращения: 28.11.2017).
4. Numerical Recipes in C: The Art of Scientific Computing / W.H. Press, S.A. Teukolsky, W.T. Vetterling. 2nd ed. Cambridge University Press, 1992. P. 277.
5. Козачок А.В., Кочетков Е.В. Обоснование возможности применения верификации программ для обнаружения вредоносного кода // Вопросы ки-бербезопасности. 2016. № 3 (16). С. 25-32.
6. Иванов М.А., Чугунков И.В. Криптографические методы защиты информации в компьютерных системах и сетях: учеб. пособие / под ред. М.А. Иванова. М.: НИЯУ МИФИ, 2012. 400 с.
7. Титов С.С., Торгашова А.В. Генерация неприводимых многочленов, связанных степенной зависимостью корней // Доклады ТУСУР. 2010. № 2-1 (22). С. 310-318. URL: http://cyberleninka.ru/article/n7generatsiya-neprivodimyh-mnogochlenov-svyazannyh-stepennoy-zavisimostyu-korney (дата обращения: 16.12.2017).
8. Власенко А.В., Смирнов В.Г. Защита конфиденциальной информации, передаваемой по открытым каналам связи // Известия ЮФУ. Технические науки. 2003. N. 33, вып. 4. С. 230-232.
9. Гнидко К.О., Ломако А.Г. Моделирование индивидуального и группового поведения субъектов массовой коммуникации в р-адических системах координат для индикации уровня контаминации сознания // Вопросы кибербезопасности. 2016. № 2 (15). С. 65-82.
10. Жуков И.Ю., Иванов М.А., Осмоловский С.А. Принципы построения криптостойких генераторов псевдослучайных кодов // Проблемы информационной безопасности. Компьютерные системы. 2001. № 1. С. 55-65.
11. Власенко А.В., Дзьобан П.И., Тимченко М.В. Разработка алгоритмов, инструментов и методов авторизации пользователей в Web-приложениях с использованием хеш-функций // Вестник Адыгейского государственного университета. Сер. Естественно-математические и технические науки. 2015. Вып. 4 (171). С. 144-150. URL: http://vestnik.adygnet.ru
12. Гончарук В.С., Атаманов Ю.С., Гордеев С.Н. Методы генерации случайных чисел // Молодой ученый. 2017. № 8. С. 20-23.
References:
1. Kendall M.G., Stuart A. Theory of distributions. N. Y., 1963. Р. 36-121.
2. Ervin Knuth D. The art of computer programming // Polycycline algorithms. 2001. Vol. 2. 788 pp.
3. A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications April 2010 / L. Bassham (NIST), A. Rukhin (NIST), J. Soto (NIST) [et al.] // Computer Security Division Information Technology Laboratory National Institute of Standards and Technology Gaithersburg, MD 20899-8930. URL:
http://csrc.nist.goV/groups/ST/toolkit/rng/documents/S P800-22rev1a.pdf (access date: 28.11.2017).
4. Numerical Recipes in C: The Art of Scientific Computing / W.H. Press, S.A. Teukolsky, W.T. Vetterling. 2nd ed. Cambridge University Press, 1992. P. 277.
5. Kozachok A.V., Kochetkov E.V. Justification of the possibility of using software verification to detect malicious code // Cyber Security Issues. 2016. No. 3 (16). P. 25-32.
6. Ivanov M.A., Chugunkov I.V. Cryptographic methods of information protection in computer systems and networks: a manual / ed. by M.A. Ivanov. M.: NIYaU MIFI, 2012. 400 pp.
7. Titov S.S., Torgashova A.V. Generation of irreducible polynomials connected by a power dependence of roots // TUSUR Reports. 2010. No. 2-1 (22). P. 310318. URL: http://cyberleninka.ru/article/n7generatsiya-neprivodimyh-mnogochlenov-svyazannyh-stepennoy-zavisimostyu-korney (access date: 16.12.2017).
8. Vlasenko A.V., Smirnov V.G. Protection of confidential information transmitted via open communication channels // News of SFU. Technical Sciences. 2003. No. 33, Iss. 4. P. 230-232.
9. Gnidko K.O., Lomako A.G. Modeling of individual and group behavior of subjects of mass communication in p-adic coordinate systems for indicating the level of consciousness contamination // Cybersecurity Issues. 2016. No. 2 (15). P. 65-82.
10. Zhukov I.Yu., Ivanov M.A., Osmolovsky S.A. Principles of construction of crypto-resistant generators of pseudorandom code // Problems of Information Security. Computer Systems. 2001. No. 1. P. 55-65.
11. Vlasenko А.V., Dzoban P.I., Timchenko M.V. Development of algorithms, tools and methods for user authentication in the Web-applications using hash functions // The Bulletin of the Adyghe State University. Ser. Natural-Mathematical and Technical Sciences. 2015. Iss. 4 (171). P. 144-150. URL: http://vestnik.adygnet.ru
12. Goncharuk V.S., Atamanov Yu.S., Gordeev S.N. Methods of random number generation // Young Scientist. 2017. No. 8. P. 20-23.