Алгоритм одноразового пароля на основе времени для iOS | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 12 апреля, печатный экземпляр отправим 16 апреля.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №9 (560) февраль 2025 г.

Дата публикации: 28.02.2025

Статья просмотрена: 11 раз

Библиографическое описание:

Короткий, Е. С. Алгоритм одноразового пароля на основе времени для iOS / Е. С. Короткий. — Текст : непосредственный // Молодой ученый. — 2025. — № 9 (560). — С. 9-12. — URL: https://moluch.ru/archive/560/123076/ (дата обращения: 02.04.2025).



В статье рассматривается алгоритм одноразового пароля на основе времени (TOTP) и его реализация на языке Swift для мобильных устройств iOS. Описан принцип работы алгоритма, включая генерацию OTP-кодов, применение криптографических хеш-функций и динамическое усечение. Проведен анализ стандартов безопасности, а также рассмотрены особенности вычислений, влияющие на защиту пользовательских данных. Представлена программная реализация генератора OTP-кодов и проведено тестирование его корректности и устойчивости к потенциальным атакам.

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

Введение

Современные системы аутентификации требуют надежных методов защиты пользовательских данных. Одним из распространенных решений является двухфакторная аутентификация (2FA), которая использует дополнительные механизмы проверки личности [1]. Одним из таких механизмов является алгоритм одноразового пароля на основе времени (TOTP), широко применяемый для защиты учетных записей. Данный алгоритм обеспечивает высокий уровень безопасности, поскольку коды аутентификации генерируются на основе текущего времени и секретного ключа, что затрудняет их предсказание и компрометацию. В работе рассматривается математическая модель алгоритма TOTP, принципы его работы, а также представлена его реализация на языке программирования Swift для мобильных устройств iOS.

Основная часть

TOTP (Time-based One-Time Password Algorithm) — алгоритм создания одноразовых паролей для защищенной аутентификации. Является алгоритмом односторонней аутентификации — сервер удостоверяется в подлинности клиента. Алгоритм TOTP следует открытому стандарту, задокументированному в RFC 6238.

HMAC (Hash-based Message Authentication Code) — механизм для расчета кодов аутентификации сообщений с помощью криптографической хеш-функции в сочетании с секретным ключом [2].

Обзор алгоритма одноразового пароля на основе времени

При регистрации аккаунта сервер генерирует секретный ключ, сохраняет его в базу данных и передаёт его на клиент. Дальнейшая аутентификация в систему производится на основе 6-значного кода, сгенерированного на авторизованном клиенте. Пользователь вводит логин, пароль и OTP-код, затем данные отправляется на сервер. Сервер принимает логин, пароль и OTP-код, состоящий из 6 символов, генерирует код на основе логина пользователя и секретного ключа, хранящегося в базе данных. Далее производится проверка сгенерированного кода и полученного значения с клиента, если результат проверки положителен, сервер сверяет пароли и производит авторизацию. В случае, если пользователь ввел неверные данные, на клиент возвращается ошибка для отображения пользователю.

Поскольку и сервер, и устройство, запрашивающее OTP, имеют доступ ко времени, которое является динамическим, оно принимается как параметр в алгоритме. Стандарт RFC 4226 предлагает использовать метку времени Unix, которая не зависит от часового пояса, т. е. время рассчитывается в секундах, начиная с первого января 1970 года [3].

Генератор OTP-кода на вход принимает секретный ключ, на выход отдает 6 символов (рисунок 1).

Схема работы OTP-генератора

Рис. 1. Схема работы OTP-генератора

Исходные данные:

— интервал времени в секундах, в течение которого OTP-код остается неизменным. По умолчанию, 30 секунд.

— время Unix для начала подсчета временных шагов. Является системным параметром.

— текущее время Unix. Является системным параметром.

— количество временных шагов между начальным временем счетчика и текущим временем Unix . Рассчитывается по формуле 1.

— уникальный секретный ключ. Хранится в базе данных.

(1)

Используем HMAC для получения 20-байтовой строки (формула 9).

(2)

Эта длинная строка не подходит в качестве одноразового пароля. Необходимо привести полученную последовательность к 6-ти символам. Для этого стандарт RFC 4226 определяет способ обрезать эту строку до желаемой длины используя динамическое усечение (рисунок 2).

Принцип работы динамического усечения

Рис. 2. Принцип работы динамического усечения

Берется последний байт из полученной 20-байтовой строки и извлекаются из него последние 4 бита. На выходе получается число от 0 до 15 — это значение смещения. Начиная с этого смещения необходимо взять значение следующих 31 битов 20-байтовой строки HMAC. Результатом будет число в шестнадцатеричной системе счисления. Осталось перевести число в десятичную систему и взять по модулю . Так как результирующее значение может быть меньше 6 символов, необходимо добавить недостающие нули в начало [4].

Пример работы OTP-генератора

Возьмем значение секретного ключа:

Далее необходимо рассчитать

— количество временных шагов между начальным временем счетчика и текущим временем Unix по формуле 8. В результате получаем:

На данном этапе имеются все недостающие параметры для получения 20-байтовой строки. Воспользуемся формулой 9 и получим значение хэша. Функция HMAC может использовать различные алгоритмы хэширования, такие как SHA-1, SHA-256, MD5 и др. Воспользуемся алгоритмом SHA-256:

Теперь полученную строку необходимо привести к 6 символам. Используем динамическое усечение. Берем последний бит и переводим его в десятичную систему счисления:

Полученное значение 14 — смещение. Берем значение следующих четырех байтов от смещения 14 в 20-байтовой строке, получаем . Поскольку было взято 32 бита для удобства расчетов, необходимо заменить первый бит на ноль, чтобы откинуть знаковый бит. Для этого переводим значение в двоичную систему, меняем первый знак на и переводим результат в десятичную систему счисления:

Завершающим шагом берем полученное число по модулю по модулю :

Полученное значение — OTP-код.

Программная реализация OTP-генератора

На вход в функцию подается значение секретного ключа . Создаем две константы (время жизни OTP-кода) и (количество символов OTP-кода). Затем производится расчет количества временных шагов (рисунок 3).

Реализация расчета количества временных шагов

Рис. 3. Реализация расчета количества временных шагов

Далее необходимо вычислить . Приводим входные значения к нужному виду и производим вычисления (рисунок 4).

Реализация расчета HMAC

Рис. 4. Реализация расчета HMAC

Следующим шагом выполняем динамическое усечение (рисунок 5):

Реализация динамического усечения

Рис. 5. Реализация динамического усечения

Завершающим пунктом является приведение полученного значения н нужному виду (рисунок 6):

Реализация преобразования к 6 символам

Рис. 6. Реализация преобразования к 6 символам

На выходе из функции подается значение , имеющее тип String и уже преобразованное к нужному виду.

Заключение

В работе проведен анализ алгоритма одноразового пароля на основе времени (TOTP), его математическая модель и принципы работы. Рассмотрены механизмы вычисления HMAC, динамического усечения и преобразования данных в шестизначный OTP-код. Практическая реализация алгоритма на языке Swift позволила подтвердить его соответствие стандарту RFC 6238 и оценить устойчивость к возможным угрозам безопасности. Проведенное тестирование продемонстрировало стабильную генерацию OTP-кодов, обеспечивая надежную защиту учетных записей пользователей. В дальнейшем возможны исследования, направленные на интеграцию TOTP с биометрическими методами аутентификации и анализ устойчивости алгоритма к различным видам атак.

Литература:

  1. Идентификация, аутентификация и авторизация [Электронный ресурс]. Режим доступа: https://www.kaspersky.ru/blog/identification-authentication-authorization-difference/29123/
  2. Подписываем данные: HMAC на практике в API и Web-формах [Электронный ресурс]. Режим доступа: https://habr.com/ru/post/262341/
  3. RFC 4226 HOTP: An HMAC-Based One-Time Password Algorithm [Электронный ресурс]. Режим доступа: https://datatracker.ietf.org/doc/html/rfc4226
  4. One Time Password (OTP) algorithm in Cryptography [Электронный ресурс]. Режим доступа: https://www.geeksforgeeks.org/one-time-password-otp-algorithm-in-cryptography/
  5. Что ты такое, Event Loop? [Электронный ресурс]. Режим доступа: https://habr.com/ru/post/461401/
Основные термины (генерируются автоматически): TOTP, HMAC, RFC, динамическое усечение, секретный ключ, одноразовый пароль, основа времени, полученное значение, текущее время, нужный вид.


Ключевые слова

Информационная безопасность, аутентификация, мобильная разработка, алгоритм одноразового пароля на основе времени

Похожие статьи

Разработка программного модуля для оценки уникальности законов Госдумы РФ при помощи метода ЛСА

В статье обосновывается актуальность разработки программного модуля, обеспечивающего проверку законов, находящихся в ведомстве Госдумы РФ, на плагиат. Также описывается метод латентно-семантического анализа, на основе которого разрабатывается алгорит...

Разработка портала по исследованию уязвимостей веб-приложений и сайтов

В статье описывается разработка интерактивного образовательного портала для исследования уязвимостей веб-приложений. Представленный инструмент позволяет практиковаться в выявлении и устранении угроз информационной безопасности, таких как SQL-инъекция...

Методы и алгоритмы эффективного решения задачи маршрутизации транспорта на сетях больших размерностей

В данной работе подробно рассмотрена задача маршрутизации транспорта с временными окнами и ограниченной грузоподъёмностью. В ходе работы рассматриваются различные эвристические и мета-эвристические алгоритмы, применённые к данному типу задач. Более п...

Кроссплатформенная разработка на Flutter: ограничения и возможности

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

Создание программы для оптимизации использования транспорта при помощи платформы Microsoft Excel

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

Современные системы автоматизированного динамического анализа вредоносных файлов

Статья посвящена исследованию трех современных систем автоматизированного динамического анализа вредоносных файлов: Cuckoo Sandbox, Anubis и DRAKVUF. Показано значение подобных систем в области изучения функциональности вредоносных программ. Раскрыты...

Разработка веб-приложения «Семейный органайзер»

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

Кибернетика распределенных реестров на технологиях блокчейна

В статье автор строит модель блокчейн сети, основанной на «доказательстве работы» (PoW). Проведен математический анализ модели. Выполнено численное моделирование работы сети при различном количестве участников. Применена линейная регрессия для собран...

Информационная безопасность в малом и среднем бизнесе. Алгоритмы и действия

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

Проектирование программного обеспечения сканера веб-уязвимостей TechnoScan c использованием нотаций диаграммы UML

В статье представлен анализ актуальности использования сканеров уязвимости для предотвращения возможных угроз и выявления уязвимостей веб-приложений на ранних этапах. Представлены результаты проектирования сканера веб-уязвимостей “TechnoScan” с испол...

Похожие статьи

Разработка программного модуля для оценки уникальности законов Госдумы РФ при помощи метода ЛСА

В статье обосновывается актуальность разработки программного модуля, обеспечивающего проверку законов, находящихся в ведомстве Госдумы РФ, на плагиат. Также описывается метод латентно-семантического анализа, на основе которого разрабатывается алгорит...

Разработка портала по исследованию уязвимостей веб-приложений и сайтов

В статье описывается разработка интерактивного образовательного портала для исследования уязвимостей веб-приложений. Представленный инструмент позволяет практиковаться в выявлении и устранении угроз информационной безопасности, таких как SQL-инъекция...

Методы и алгоритмы эффективного решения задачи маршрутизации транспорта на сетях больших размерностей

В данной работе подробно рассмотрена задача маршрутизации транспорта с временными окнами и ограниченной грузоподъёмностью. В ходе работы рассматриваются различные эвристические и мета-эвристические алгоритмы, применённые к данному типу задач. Более п...

Кроссплатформенная разработка на Flutter: ограничения и возможности

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

Создание программы для оптимизации использования транспорта при помощи платформы Microsoft Excel

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

Современные системы автоматизированного динамического анализа вредоносных файлов

Статья посвящена исследованию трех современных систем автоматизированного динамического анализа вредоносных файлов: Cuckoo Sandbox, Anubis и DRAKVUF. Показано значение подобных систем в области изучения функциональности вредоносных программ. Раскрыты...

Разработка веб-приложения «Семейный органайзер»

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

Кибернетика распределенных реестров на технологиях блокчейна

В статье автор строит модель блокчейн сети, основанной на «доказательстве работы» (PoW). Проведен математический анализ модели. Выполнено численное моделирование работы сети при различном количестве участников. Применена линейная регрессия для собран...

Информационная безопасность в малом и среднем бизнесе. Алгоритмы и действия

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

Проектирование программного обеспечения сканера веб-уязвимостей TechnoScan c использованием нотаций диаграммы UML

В статье представлен анализ актуальности использования сканеров уязвимости для предотвращения возможных угроз и выявления уязвимостей веб-приложений на ранних этапах. Представлены результаты проектирования сканера веб-уязвимостей “TechnoScan” с испол...

Задать вопрос