В статье представлены результаты исследования криптографической стойкости разработанного генератора псевдослучайных чисел при помощи полного перебора вариантов.
Ключевые слова : аутентификация, одноразовый пароль, генераторы псевдослучайных чисел, криптографическая стойкость.
Как показывают последние исследования, одна из наиболее серьезных для компаний проблем в области информационной безопасности — несанкционированный доступ к компьютерным системам. Надежность защиты от этой угрозы в первую очередь зависит от качества системы аутентификации пользователей. Сегодня говорить об информационной безопасности без привязки к персональному доступу и отслеживанию всех действий пользователей в сети просто не имеет смысла. Рынок предлагает немало различных решений, включая смарт-карты и электронные ключи, биометрические средства аутентификации и графические пароли.
Одноразовый пароль — это ключевое слово, действительное только для одного процесса аутентификации в течение ограниченного промежутка времени. Такой пароль полностью решает проблему возможного перехвата информации или банального подглядывания. Даже если злоумышленник сможет заполучить пароль «жертвы», шансы воспользоваться им для получения доступа равны нулю.
В современных технологиях аутентификации с помощью OTP применяется динамическая генерация ключевых слов с помощью сильных криптографических алгоритмов. Аутентификационные данные представляют собой результат шифрования какого-либо начального значения с помощью секретного ключа пользователя. Данная информация есть и у клиента, и у сервера. Она не передается по сети и недоступна для перехвата.
За основу в настоящей работе был взят стандарт СТБ 34.101.47–2017, который определяет криптографические алгоритмы генерации псевдослучайных чисел, для которых характерно использование секретного ключа и уникальной синхропосылки, в результате чего генерируемые числа трудно предугадать или повторить. Ключ алгоритма генерации может быть известен только одной стороне, тогда псевдослучайные числа можно использовать для построения секретных параметров владельца ключа [1]. В зависимости от способа формирования синхропосылки стандартом определены три режима (механизма) генерации паролей: HOTP (HMAC-based One-Time Password), TOTP (Time –based One-Time Password) и OCRA (OATH Challenge-Resp onse Algorithms).
Для реализации поставленных задач в рамках данной работы был выбран режим TOTP, в котором синхропосылка представляет собой округленную отметку текущего времени. TOTP (Time — based One-Time Password) — алгоритм создания одноразовых паролей для защищенной аутентификации. Это улучшенный алгоритм на основе HOTP. Данный алгоритм описан в стандарте RFC 6238 [2]. Является алгоритмом односторонней аутентификации — сервер удостоверяется в подлинности клиента. Для формирования одноразового пароля в данном алгоритме используется время в формате Unix-time, в которое произошел запрос. Именно время является фактором, влияющим на изменение сообщения. Для выполнения алгоритма время конвертируется из формата даты в числовой формат и представляется в секундах с момента начало Эпохи Unix, за начало отсчета берется 1 января 1970 года.
Для функционирования алгоритма необходимо произвести синхронизацию времени между участниками обмена сообщениями, а также создать временное окно (например, 30 секунд), которое позволит получить результат в случае временных потерь, связанных с передачей сообщения по сети. Для алгоритма TOTP пароль будет вычислять по формуле:
HMAC(K, unix_timestamp / 30)
Алгоритм действует следующим образом: клиент берет текущее значение таймера и секретный ключ, хеширует их с помощью какой-либо хеш-функции и отправляет серверу, в свою очередь сервер проводит те же вычисления после чего ему остается только сравнить эти значения.
Входными данными алгоритма генерации одноразовых паролей в режиме TOTP являются:
– количество d ∈ {6,7,8} цифр в пароле;
– секретный ключ K ∈ {0,1}8*;
– округленная отметка T текущего времени — неотрицательное целое число.
Выходными данными является одноразовый пароль R ∈{0, 1,..., 10d −1}.
Алгоритм генерации пароля в режиме TОТР состоит в выполнении следующих шагов:
- W ←⟨T⟩64.
- Y ←hmac [ℎ](K,W7 ‖W6 ‖... ‖W0).
- R ←otp-dt (d, Y).
- Возвратить R.
На основании вышесказанного была разработана программа «PRNG.TOTP» [3], алгоритм которой представлен на рис. 1. Вызов и загрузка программы осуществляется после загрузки общего программного обеспечения автоматически. После определения текущего времени, осуществляется генерация секретного ключа (посредством импорта библиотеки функций генератора псевдослучайных чисел) и хэширование его с текущим временем. В нашем случае секретный ключ составляет 6 знаков в длину. После чего происходит вывод одноразового пароля.
Рис. 1. Алгоритм программы «PRNG.TOTP» [4]
В таблице 1 представлен пример генерации одноразовых паролей с помощью алгоритма totp-hbelt в программе «PRNG.TOTP».
Таблица 1
Генерация одноразовых паролей в режиме TOTP (алгоритм totp-hbelt )
T 0 |
0 |
T S |
60 |
d |
6 |
K |
4NVQSE R571OF 3TS701 7E4CDS YUNZ7T PFO94E HZFDS8 3ZHON4 YXRS58 Y64NGL OP6ZXT M32EFP 4EJ12O W2R5D0 PVSAJ5 |
t |
2023–02–01 13:51:41.225750 |
T |
2257506199 |
R |
113436 |
t |
2023–02–01 13:52:41.285718 |
T |
2857186200 |
R |
181326 |
… |
|
t |
2023–02–01 14:02:41.889013 |
T |
8890136151 |
R |
185549 |
Было проведено исследование криптографической стойкости разработанного ГПЧ при помощи полного перебора вариантов. Для разработки программы тестировщика использовался язык программирования Python.
Ниже представлен скрипт разработанной программы тестировщика:
Запуск производился на персональном компьютере и сервере, в связи с чем отклонений от общей тенденции не выявлено. В ходе выполнения программы осуществляется запрос длины пароля. Полученные в результате тестирование данные приведены в таблице 2 для значений длины пароля 6, 7 или 8 согласно стандарта для режима TOTP.
Таблица 2
Значения времени вскрытия одноразового пароля
Длина пароля |
Среднее значение времени, сек |
Минимальное время, сек |
Максимальное время, сек |
6 знаков |
0,06908051490783691 |
0,00018906593322753906 |
0,28572869300842285 |
7 знаков |
0,7060528707504272 |
0,19494915008544922 |
1,9904589653015137 |
8 знаков |
7,881892249584198 |
2,1670432090759277 |
23,53116464614868 |
Для наглядной демонстрации роста времени взлома в зависимости от длины пароля были созданы следующие графики, представленные на рис. 2.
Рис. 2 — Временная зависимость взлома одноразового пароля от его длины: 1 — пароль длиной 6 знаков; 2 — пароль длиной 7 знаков; 3 — пароль длиной 8 знаков
Заключение
Общее количество тестов на каждый из вариантов составил 100, после чего были выверены среднее, минимальное и максимальное значение согласно полученному времени вскрытия одного пароля. Из полученных временных зависимостей можно сделать выводы о том, что увеличение длины одноразового пароля увеличивает время его взлома. Установлено, что на взлом пароля длиной 8 знаков уходит 23 секунды.
Литература:
- Государственный стандарт Республики Беларусь СТБ 34.101.47–2017.
- M’Raihi D., Machani S., Pei M., Rydell J. RFC 6238. TOTP: Time-Based One-Time Password Algorithm. RFC Editor, 2011, 16 p
- Пулко Т. А., Павлють М. Д. «PRNG.TOTP». Свидетельство Национального центра интеллектуальной собственности Республики Беларусь о добровольной регистрации и депонировании объекта авторского права/объекта смежных прав № 1584-КП. Реестр компьютерных программ по состоянию на 08.02.2023 г.
- Павлють М. Д., Пулко Т. А. Генерация одноразового пароля для аутентификации пользователей в клиент-серверных системах. «Юный ученый», № 2 (65), 2023 г., с. 26–29, URL: http://yun.moluch.ru/archive/65/3366/.