УДК 004.42 Дата подачи статьи: 03.02.22, после доработки: 06.06.22
DOI: 10.15827/0236-235X.139.413-419 2022. Т. 35. № 3. С. 413-419
Разработка генератора паролей с использованием GUI MATLAB
И.А. Щукарев 1, к.ф.-м..н., доцент, blacxpress@gmail.com Е.В. Маркова 1, к.э.н, доцент, morozova319@yandex.ru
1 Институт авиационных технологий и управления, Ульяновский государственный технический университет, г. Ульяновск, 432027, Россия
Пароли, защищающие аккаунты различных сайтов, порталов и облачных хранилищ, в большинстве случаев ненадежны. К тому же пароли, созданные самими пользователями, имеют недостаточную длину. Поэтому для обеспечения безопасности учетных записей прежде всего необходимо создавать достаточно сложные и длинные пароли.
Авторами данной статьи разработано графическое приложение для ЭВМ, которое позволяет автоматически генерировать пароли с пользовательскими настройками и выводить результат в соответствующее поле. Созданные пароли практически невозможно угадать, поскольку они являются комбинацией случайных букв английского алфавита верхнего и нижнего регистров, цифр и специальных служебных символов. Существует возможность менять длину пароля, выводить результат в окно программы и сохранять в отдельный текстовый файл с названием parol.txt.
Данное приложение и весь графический интерфейс пользователя написаны не на специализированном языке программирования, например Python или C++, что характерно для программ такого типа, а в среде технических расчетов MATLAB с помощью GUI MATLAB и MATLAB Compiler SDK. За счет использования только лишь возможностей MATLAB Compiler SDK удалось создать автономное приложение exe, а не m-файл, который является внутренним форматом программы MATLAB и работает только при наличии полностью установленной среды MATLAB. Для удобства конечного пользователя программа оформлена в виде автономного графического приложения, способного работать на любом компьютере с установленным MATLAB Runtime, позволяющим запускать скомпилированные приложения в системах без установленной версии MATLAB.
Данное приложение может быть использовано организациями, в которых существует отдел сетевой безопасности, поскольку оно облегчит создание множества новых случайных паролей для большого числа компьютеров и аккаунтов сотрудников.
Ключевые слова: пароль, MATLAB, генерация паролей, генератор псевдослучайных чисел, генератор паролей, одноразовый пароль, информационная безопасность, изменяемая длина пароля, защита данных, уникальность пароля, надежный пароль.
За безопасность на различных сайтах, порталах, в облачных хранилищах, а также на персональных компьютерах отвечают в большей степени пароли. Ненадежный пароль может быть легко подобран специальными программами или попросту угадан. Процедура угадывания состоит в переборе по словарю наиболее вероятных и распространенных паролей. Как правило, при выборе пароля пользователь ищет нечто среднее между надежностью и удобством запоминания.
В настоящее время практически все сайты так или иначе требуют создания учетной записи пользователя, а значит, и надежного пароля, который нужно придумать и запомнить, к тому же для каждого сайта он должен быть уникальным. Использование одинаковых паролей для большого количества учетных записей ставит под угрозу сохранность данных при
взломе пароля на одном из сайтов или порталов, так как многие ресурсы сейчас связаны между собой с помощью e-mail, социальных сетей, например, ВКонтакте, Одноклассники или Twitter. Поэтому удобно использовать программу, которая для каждого конкретного случая сгенерирует случайный пароль необходимой длины. Иначе пользователю придется самому придумывать пароль, который можно просто запомнить и быстро набрать, и каждый раз на это будет уходить все больше и больше времени. Например, сайты-мошенники могут перехватывать доступ к персональным данным пользователя, в том числе и к банковским картам. Таким образом, надежности и сохранности пароля требуется уделять большое внимание, чтобы защитить себя от угроз в сети [1-3].
Важно не только придумать, но еще и не забыть пароль. Для этого можно использовать,
например, мнемоническую технику запоминания. Чтобы не заучивать пароли для каждой конкретной учетной записи, можно быстро вспоминать их на месте. Обычно такие пароли состоят из двух частей. Первая является универсальной, которую необходимо хорошо заучить. Вторая создается по определенному правилу для каждого конкретного ресурса. Придумывается первая часть, которая будет использоваться везде. Например, неочевидное слово «палка». В слово можно добавить спецсимволы, цифры и заглавные буквы для усложнения: «П@1к@». Придумывается вторая часть. В электронном адресе ресурса определенные буквы заменяются другими, например, «е» ^ «3», «а» ^ «@», «о» ^ «0». Части пароля необходимо соединить.
Таким образом, для создания надежного пароля стоит придерживаться следующих правил [4]:
- длина пароля должна быть не менее 8 символов;
- необходимо наличие букв верхнего и нижнего регистров и цифр (K8lM96HFqp);
- пароль должен включать специальные символы, разрешенные конкретным ресурсом (!, @, $, %);
- нужно избегать паролей, содержащих последовательно идущие буквы, цифры и шаблонные слова, например: 12345678, qwerty123, password, anton1991 и др., так как программы для взлома паролей чаще всего используют именно такие сочетания символов;
- не следует включать в пароль свое имя, возраст, год рождения, номер телефона, название сайта или города.
Исследования по созданию программ для генерации случайных паролей проводят и отечественные [5-7], и зарубежные [8-10] специалисты. Так, в работе [5] представлен анализ методов защиты пользовательских учетных записей и исследованы основные тенденции по защите аккаунтов. Описан новый метод генерации паролей с использованием парольных фраз, и предложена разработка усовершенствованного генератора с этими фразами. В работе [6] описаны алгоритм генерации надежных паролей и место их защищенного хранения. Программа реализована на языке программирования С#. Также создана программа хранения паролей, которая имеет базовые меры защиты данных, что позволяет надежно хранить пароли, не боясь их компрометации. Оригинальный метод для создания одноразового пароля, использующий особенности отпечатков
пальцев конкретного пользователя, предложен в [10]. Создана программа генерации дополнительного пароля во время проверки подлинности пользователя в процессе допуска его к различным сайтам и приложениям на персональном компьютере, написанная на языке программирования С++ [11]. Также разработана программа на языке программирования С# для автоматической генерации паролей, представленных случайными комбинациями символов [12].
Сегодня существуют приложения для создания паролей, написанные практически на всех популярных языках программирования. В данной статье рассматривается способ создания приложения - генератора паролей [13], полностью написанного в среде технических расчетов MATLAB с помощью GUI MATLAB и MATLAB Compiler SDK. Созданное в MAT-LAB приложение для персонального компьютера может генерировать пароли различной длины, как меньше 10 символов, так и больше. Таким образом, с ростом цифровизации создание приложения с простым интерфейсом для автоматической генерации сложного пароля является актуальной задачей.
Среда разработки
Современные компьютерные технологии позволяют решать множество разнообразных задач. В большинстве случаев конкретную задачу можно упростить путем использования windows-приложений оконной категории, а не консольной. Вычислительная среда MATLAB позволяет создавать такие оконные приложения, используя широкий спектр компонентов, направленных на создание графического интерфейса, обладающего функциональными возможностями аналогичных систем визуального программирования. Высокоуровневый язык технических расчетов MATLAB дает возможность использовать встроенные решения для создания новых приложений. Задачей авторов являлось написание автономного приложения, полностью созданного в рамках одной программной среды, с графическим интерфейсом, генерирующим пароль заданной длины при нажатии конечным пользователем на соответствующую кнопку.
Программа написана на языке MATLAB с использованием MATLAB Compiler и MAT-LAB Compiler SDK и представляет собой отдельное приложение в формате exe. Процедура создания пароля выглядит следующим обра-
зом. После запуска программы появляется графический интерфейс, то есть окно программы, в котором можно задать желаемую длину пароля. Генерация самого пароля производится по нажатии кнопки «Сгенерировать». Интерфейс пользователя имеет максимально удобный минималистичный вид. Пользователь вводит в соответствующее поле число, равное необходимой длине пароля, а затем нажимает кнопку «Сгенерировать». В итоге в таблице ниже появляется пароль необходимой длины.
Опишем подробнее применяемые команды. После ввода числа, отвечающего за длину пароля, командой str2double преобразуем его в тип данных double. Далее создаем цикл от 1 до определенного числа, например n. Затем создаем два массива данных, которые имеют тип данных char. Первый включает в себя только латинские буквы верхнего регистра, второй -латинские буквы нижнего регистра. Также создаем еще два массива с данными: один из них включает цифры от 0 до 9, другой - специальные символы от ! до ~. В итоге получаем четыре массива с данными, которые в общем случае имеют разные типы данных. Затем командой randi выбирается по одному случайному символу из каждого массива. В итоге получается вектор-строка из четырех различных символов.
Чтобы команда randi корректно сработала, все символы в массиве должны иметь одинаковый тип данных. Поэтому предварительно создаем пустую вектор-строку размерностью 1x4 в формате cell. Затем также командой randi выбирается один символ из вектора, который и заносится в первую ячейку пароля. Далее осуществляется переход ко второй ячейке и цикл повторяется заново (рис. 1).
Создание графического интерфейса
пользователя для программного кода генератора паролей
Для создания программы генератора паролей использован метод визуально-ориентированного программирования [14]. Данный метод представлен в MATLAB с помощью специального конструктора графического интерфейса GUIDE. Графический интерфейс разрабатываемого приложения создается путем перетаскивания в редактируемое графическое окно требуемых элементов интерфейса будущего приложения из панели инструментов, а в файле с расширением *.m прописываются необходимые действия при активации элементов GUI и при обработке событий элементов пользовательского интерфейса.
Поэтому для удобства использования генератора паролей был разработан графический интерфейс GUI [15], который включает в себя поле для ввода длины пароля (editl), кнопку генерации пароля (pushbattonl) и поле вывода сгенерированного пароля (uitablel). Интерфейс GUI создавался с помощью инструмента GUI Layout Editor, который можно вызвать, набрав команду guide в консоли MATLAB (см. http:// www.swsys.ru/uploaded/image/2022-3/2022-3-dop/38.jpg).
Все элементы созданного интерфейса GUI для удобства использования имеют соответствующие обозначения: editl, pushbattonl, uitablel т.д. Из основных возможностей можно выделить следующие: замена стиля и размера шрифта вводимых и отображаемых данных, настройка размера самого диалогового окна и tag обращения к данной конкретной функции (например editl). Нумерация тэгов имеет большое значение, так как именно на них ссылаются команды из основного тела программного кода.
В диалоговом окне GUIDE Quick Start выбираем Blank GUI (по умолчанию) (см. http:// www.swsys.ru/uploaded/image/2022-3/2022-3-dop/38.jpg), добавляем необходимые компоненты в рабочую область (см. http://www. swsys.ru/uploaded/image/2022-3/2022-3-dop/3.jpg). Для созданного приложения потребовалось нарисовать окно с названием действия (textl), окно ввода данных (editl), кнопку активации (pushbattonl) и окно вывода информации (uitablel) (см. http://www.swsys.ru/ uploaded/image/2022-3/2022-3-dop/3.jpg, http:// www.swsys.ru/uploaded/image/2022-3/2022-3-dop/4.jpg). Все добавляемые компоненты
Рис. 1. Схема получения случайного символа для генерации пароля
Fig. 1. A scheme for obtaining a random character to generate a password
имеют возможность тонкой настройки многих параметров (см. http://www.swsys.ru/uploaded/ image/2022-3/2022-3-dop/5.jpg).
В результате разработки графического интерфейса в указанной папке с исполняемым файлом MATLAB, имеющим расширение *.m и содержащим основной код для генерации пароля, создается файл с графикой и элементами самого интерфейса, имеющий расширение *.fig [15].
Преобразование интерфейса GUI MATLAB в приложение с расширением .exe
Преобразуем полученный графический интерфейс GUI MATLAB (см. http://www.swsys. ru/uploaded/image/2022-3/2022-3-dop/6.jpg), включающий код генератора пароля, в привычный автономный *.exe файл, то есть в отдельное приложение.
Для этого есть специальный набор инструментов MATLAB Compiler SDK, который расширяет функциональные возможности MATLAB, позволяя создавать автономные исполняемые файлы, совместно используемые библиотеки C/C ++, сборки Microsoft .NET, классы Java и пакеты Python из программ и m-файлов MATLAB. Полученные приложения могут быть интегрированы с другими пользовательскими программами, а затем использованы на любых компьютерах. Для этого необ-
ходимо набрать в командном окне MATLAB команду deploytool.
Чтобы при вводе данной команды не возникали ошибки, следует проверить, установлены ли необходимые компоненты, а именно MATLAB Compiler и MATLAB Compiler SDK. Далее в поле Addmainfile загружается исполняемый .m файл, содержащий основной код программы, остальные файлы (name.fig и icon.png) подхватываются автоматически, а в поле Application Name вводится имя будущего приложения. Для начала процесса сборки нажимаем кнопку Package (рис. 2). Для корректной работы созданного приложения на компьютере, содержащем исполняемый файл программы, должен быть установлен MATLAB Runtime версии R2020b (9.9) [16], позволяющий запускать скомпилированные приложения без установки самого пакета MATLAB.
При первоначальной инсталляции программы MATLAB устанавливаются не все компоненты, необходимые для ее работы, а только выбранные самим пользователем. Компоненты можно добавлять по мере надобности, устанавливая только их, без переустановки всего MATLAB заново. Такой подход экономит дисковое пространство, время установки и скорость запуска и работы программы в целом, так как MATLAB любую запускаемую функцию ищет по всем подпапкам всех установленных компонентов, а размер MATLAB со всеми установленными компонентами составляет порядка 29 Гб.
Рис. 2. Меню создания автономного приложения Fig. 2. An offline application creation menu
Время подбора пароля можно оценить, используя официальный сайт проверки паролей на взлом лаборатории Касперского. Как показано в [17], если конечному пользователю понадобится надежный пароль, то его оптимальная длина должна составлять не менее 13 символов. Для проверки использовались пароли из 13 знаков, включающие в себя комбинацию прописных и строчных букв английского алфавита, цифр и спецсимволов. Один из них был составлен без использования приложения (@13$GoroD007@), а другой получен в программе MATLAB с помощью созданного генератора паролей (T~QoYOWJZcb?3). В лаборатории Касперского посчитали, что надежность пароля, придуманного пользователем без использования компьютерного приложения даже с учетом длины в 13 символов, является минимальной, а время, необходимое для взлома пароля, полученного в программе MATLAB, составляет 33 века.
Заключение
Итак, авторами данной статьи разработано приложение для генерации паролей различной длины, содержащих заглавные и строчные буквы латиницы, цифры, а также специальные символы, позволяющее сохранить сгенерированный пароль в отдельный текстовый файл. Для написания кода использовалась программная среда MATLAB. Для удобства пользования программа представлена в виде автономного приложения, способного запускаться на любом компьютере, отвечающем системным требованиям MATLAB. Благодаря возможности настраивать длину пароля, данное приложение можно использовать для широкого круга задач, связанных с безопасностью конфиденциальных данных в различных организациях, так как оно позволяет создавать в сжатые сроки множество паролей для большого числа пользователей.
Литература
1. Илюбаев А.С., Плескачев Д.В., Кусаинова У.Б. Рекомендации по обеспечению конфиденциальности в Интернете // Наука и реальность. 2021. № 1. С. 41-44.
2. Шурыгин И.А. Пароли в защите информационных данных // Актуальные проблемы науки и практики (Гатчинские чтения 2020): сб. науч. тр. по матер. VII Междунар. науч. -практич. конф. 2020. Т. 2. С. 313-317.
3. Итинсон К.С., Чиркова В.М. Обеспечение кибербезопасности в образовательных учреждениях: осведомленность, правила, стратегия // Балтийский гуманитарный журнал. 2021. Т. 10. № 4. С. 99-102.
4. Лим В.Б. Создание надежных паролей // Проблемы науки. 2021. № 3. С. 23-24.
5. Глотов А.И., Котилевец И.Д., Иванова И.А. Разработка усовершенствованных генераторов паролей // Ученые записки УлГУ. Сер.: Математика и информационные технологии. 2021. № 1. С. 13-21.
6. Иванов А.Н., Вычегжанина В.Ю., Суляндзига Е.П. Разработка и реализация алгоритма генерации надежных паролей и их защищенного хранения // Ученые заметки ТОГУ. 2019. Т. 10. № 1. С. 357-370. URL: https://pnu.edu.ru/media/ejournal/articles-2019/TGU_10_60.pdf (дата обращения: 21.05.2022).
7. Абидарова А.А. Анализ надежности паролей для обеспечения информационной безопасности // Изв. ТулГУ. Технические науки. 2021. № 8. С. 66-68.
8. Lone S.A., Mir A.H. A stable and secure one-time-password generation mechanism. JARDCS, 2019, vol. 11, no. 6, pp. 1187-1196.
9. Kavrestad J., Lennartsson M., Birath M., Nohlberg M. Constructing secure and memorable passwords. Information and Computer Security, 2020, vol. 28, no. 5, pp. 701-717. DOI: 10.1108/ics-07-2019-0077.
10. Lone S.A., Mir A.H. A stable and secure one-time-password generation mechanism using fingerprint features. IJITEE, 2019, vol. 8, no. 9, pp. 2431-2438. DOI: 10.35940/ijitee.i8919.078919.
11. Емельянов А.А. Генератор временных паролей для персонального компьютера: Свид. о регистр. ПрЭВМ № 2021610022. Рос. Федерация, 2021.
12. Толстиков В.В. ANSecurity-генератор паролей: Свид. о регистр. ПрЭВМ № 2021612639. Рос. Федерация, 2021.
13. Щукарев И.А. Генератор паролей: Свид. о регистр. ПрЭВМ № 2022615777. Рос. Федерация, 2022.
14. Лебедь О.А. Возможности структурного программирования в среде MATLAB // Вопросы педагогики. 2021. № 6. С. 222-225.
15. Mathworks: Math. Graphics. Programming. URL: https://www.mathworks.com/products/matlab.html (дата обращения: 02.02.2022).
16. Mathworks: MATLAB Runtime. URL: https://www.mathworks.com/products/compiler/matlab-runtime.html (дата обращения: 02.02.2022).
17. Щукарев И.А. Оценка оптимальной длины надежного пароля // Проблемы и перспективы экономических отношений предприятий авиационного кластера: сб. науч. тр. VI Всерос. науч. конф. 2022. С. 218-222.
Software & Systems Received 03.02.22, Revised 06.06.22
DOI: 10.15827/0236-235X.139.413-419 2022, vol. 35, no. 3, pp. 413-419
Developing a password generator using GUI MATLAB
I.A. Shchukarev l, Ph.D. (Physics and Mathematics), Associate Professor, blacxpress@gmail.com E.V. Markova 1, Ph.D. (Economics), Associate Professor, morozova319@yandex.ru
1 Ulyanovsk State Technical University, Institute of Aviation Technology and Management, Ulyanovsk, 432027, Russian Federation
Abstract. Nowadays, in most cases accounts of various sites, portals and cloud storages have weak passwords. In addition, the passwords created by users themselves are of insufficient length, which directly affects their reliability. Therefore, first of all it is necessary to create sufficiently complex and long passwords to ensure account security.
In this paper, the authors present a developed a graphical computer application that allows automatic generating of passwords with custom settings and displaying the result in the appropriate field. The created passwords are almost impossible to guess since they include a combination of random upper and lower case letters of the English alphabet, numbers and special service characters. The authors implement the ability to change the password length, to output the result to the program window and save it to a separate text file named parol.txt.
This application and the entire graphical user interface are not written in a specialized programming language, such as Python or C++, which is typical for programs of this type, but in the MATLAB technical calculation environment using the MATLAB GUI and MATLAB Compiler SDK. The MATLAB Compiler SDK capabilities made it possible to create a standalone exe application, not an m-file, which is the MATLAB program internal format and works only if there is fully installed MATLAB environment. To make it convenient for the end user, the program is designed as a stand-alone graphical application that can run on any computer with MATLAB Runtime installation that allows running compiled applications on systems without the installed MATLAB. The program is built using MATLAB GUI and MATLAB Compiler SDK. As a result, this application can be used by organizations with a network security department, as it can facilitate the creation of many new random passwords for a large number of computers and employee accounts.
Keywords: password, MATLAB, password generation, pseudo-random number generator, password generator, one-time password, information security, variable password length, data protection, password uniqueness, strong password.
References
1. Ilyubaev A.S., Pleskachev D.V., Kusainova U.B. Online privacy best practices. Science and Reality, 2021, no. 1, pp. 41-44 (in Russ.).
2. Shurygin I.A. Passwords in data protection. Proc. VII Sci-Pract. Conf. Actual Problems of Science and Practice (Gatchina Readings 2020), 2020, vol. 2, pp. 313-317 (in Russ.).
3. Itinson K.S., Chirkova V.M. Ensuring Cybersecurity in educational institutions: Awareness, rules, strategy. Baltic Humanitarian J., 2021, vol. 10, no. 4, pp. 99-102 (in Russ.).
4. Lim V.B. Creating strong passwords. Problems of Science, 2021, no. 3, pp. 23-24 (in Russ.).
5. Glotov A.I., Kotilevec I.D., Ivanova I.A. Development of advanced password generators. Scientific Notes of UlSU. Ser.: Mathematics and Information Technology, 2021, no. 1, pp. 13-21 (in Russ.).
6. Ivanov A.N., Vychegzhanina V.U., Sulyandziga E.P. Development and implementation of the algorithm generation of reliable passwords and their protected storage. Scientists Notes PNU, 2019, vol. 10, no. 1, pp. 357-370. Available at: https://pnu.edu.ru/media/ejournal/articles-2019/TGU_10_60.pdf (accessed May 23, 2022) (in Russ.).
7. Abidarova A.A. Analysis of password reliability to ensure information security. Proc. of the TSU, 2021, no. 8, pp. 66-68 (in Russ.).
8. Lone S.A., Mir A.H. A stable and secure one-time-password generation mechanism. JARDCS, 2019, vol. 11, no. 6, pp. 1187-1196.
9. Kâvrestad J., Lennartsson M., Birath M., Nohlberg M. Constructing secure and memorable passwords. Information and Computer Security, 2020, vol. 28, no. 5, pp. 701-717. DOI: 10.1108/ics-07-2019-0077.
10. Lone S.A., Mir A.H. A stable and secure one-time-password generation mechanism using fingerprint features. IJITEE, 2019, vol. 8, no. 9, pp. 2431-2438. DOI: 10.35940/ijitee.i8919.078919.
11. Emelyanov A.A. Temporary Password Generator for a Personal Computer. Patent RF, no. 2021610022, 2021.
12. Tolstikov V.V. ANSecurity-Password Generator. Patent RF, no. 2021612639, 2021.
13. Shchukarev I.A. Password Generator. Patent RF, no. 2022615777, 2022.
14. Lebed O.A. Features of structured programming in MATLAB. Issues of Pedagogy, 2021, no. 6, pp. 222-225 (in Russ.).
15.Mathworks: Math. Graphics. Programming. Available at: https://www.mathworks.com/prod-ucts/matlab.html (accessed February 02, 2022).
16.Mathworks: MATLAB Runtime. Available at: https://www.mathworks.com/products/compiler/matlab-runtime.html (accessed February 02, 2022).
17. Shchukarev I.A. Estimation of the optimum length of a strong password. Proc. VIAll-Russ. Sci. Conf. Problems and Prospects of Economic Relations of Aviation Cluster Enterprises, 2022, pp. 218-222 (in Russ.).
Для цитирования
Щукарев И.А., Маркова Е.В. Разработка генератора паролей с использованием GUI MATLAB // Программные продукты и системы. 2022. Т. 35. № 3. С. 413-419. DOI: 10.15827/0236-235X. 139.413-419.
For citation
Shchukarev I.A., Markova E.V. Developing a password generator using GUI MATLAB. Software & Systems, 2022, vol. 35, no. 3, pp. 413-419 (in Russ.). DOI: 10.15827/0236-235X.139.413-419.