Sysadminium
TOTP аутентификация обычно используется как второй фактор при двухфакторной аутентификации. В этой статье я вам расскажу про TOTP и где это можно применять.
Лично я познакомился с этим алгоритмом настраивая NextCloud. Настраивая в этой системе двухфакторную аутентификацию в качестве второго фактора можно было выбрать TOTP аутентификацию. Можете почитать про TOTP на википедии, я же расскажу простыми словами.
Для того, чтобы настроить TOTP (Time-based One-time Password Algorithm) на NextCloud я проделал следующее:
- при включении TOTP аутентификации, NextCloud выдал мне QR-код;
- я с помощью специального приложения на смартфоне отсканировал этот QR-код;
- затем это приложение начало постоянно, раз в 30 секунд, генерировать одноразовые пароли для входа на NextCloud.
Что интересно, пароль генерирует приложение на смартфоне и смартфону не обязательно иметь выход в интернет. Но время на смартфоне должно быть синхронизировано со временем на сервере, куда вы подключаетесь. Это нужно из-за того что этот алгоритм генерирует одноразовые пароли на основываясь на текущем времени клиента и сервера.
Работает алгоритм TOTP таким образом:
- Сервер (в моём случае NextCloud) создает секретный ключ для пользователя.
- Секретный ключ отправляется приложению (я считал с помощью приложения QR-код выданный сервером).
- Приложение на смартфоне использует текущее время и секретный ключ для генерирования одноразового пароля.
- Раз в определённый промежуток времени (например каждые 30 секунд) одноразовый пароль пересоздается.
- При входе на сервер вы вводите одноразовый пароль.
- Так как сервер владеет секретным ключом, то по своему текущему времени он может сгенерировать такой-же одноразовый пароль и сравнить с тем, что прислал пользователь. Если они совпадут, то вход разрешается.
В этой статье на Хабре алгоритм описан намного подробнее.
Помимо NextCloud его можно применять в Linux аутентификации, для этого есть pam модули. Про это можно почитать тут. Также его можно реализовать для любого web приложения.
На андроиде вы можете использовать следующие приложения:
- TOTP Authenticator (я использовал именно это приложение);
- andOTP;
- Google Authenticator.
TOTP (Time-based one-time Password algorithm)
С ростом числа угроз кибербезопасности, для разработчиков становится все более и более необходимым обновлять стандарты безопасности веб-приложений и быть при этом уверенными в том, что аккаунты пользователей в безопасности. Для этого в настоящее время многие онлайн-приложения просят пользователей добавить дополнительный уровень безопасности для своей учетной записи. Они делают это за счет включения двухфакторной аутентификации. Существуют различные методы реализации двухфакторной аутентификации, и аутентификация TOTP (алгоритм одноразового пароля на основе времени) является одним из них.
Чтобы понять, что из себя представляет TOTP и как он используется, необходимо сначала кратко рассмотреть более базовые понятия. Первое из них – двухфакторная аутентификация. Двухфакторная аутентификация (или многофакторная аутентификация) — это метод идентификации пользователя в каком-либо сервисе (как правило, в Интернете) при помощи запроса аутентификационных данных двух разных типов, что обеспечивает двухслойную, а значит, более эффективную защиту аккаунта от несанкционированного проникновения. Это означает, что после включения двухфакторной аутентификации пользователь должен пройти еще один шаг для успешного входа в систему. Стандартные шаги для входа в учетную запись – это ввод логина и ввод пароля (рис.1).

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

В настоящее время существует два широко используемых метода получения одноразового пароля:
- На основе SMS. Каждый раз, когда пользователь входит в систему, он получает на указанный в учетной записи номер мобильного телефона текстовое сообщение, которое содержит одноразовый пароль.
- На основе TOTP. При включении двухфакторной аутентификации пользователю предлагается отсканировать QR-код с помощью специального приложения для смартфона, которое в дальнейшем постоянно генерирует одноразовый пароль для пользователя.
Метод на основе SMS не требует пояснений. Несмотря на свою простоту, он имеет ряд проблем. Например, ожидание SMS при каждой попытке входа в систему, проблемы с безопасностью и т. д. Вследствие чего NIST еще в 2016 году рекомендовала не использовать его в новых системах аутентификации. В связи с минусами метода на основе SMS, метод на основе TOTP становится популярным из-за его преимуществ.
Также, стоит отметить, что в настоящий момент есть некоторые разногласия о том, что именно считать шагами, а что факторами аутентификации. Общепризнанным является существование трех факторов:
- Знание, например, пароль
- Обладание (в физическом смысле), например, смартфон
- То, чем вы являетесь, например, биометрические данные
При этом шаги аутентификации являются субъединицами факторов, так, если для входа в систему необходимо введение двух паролей, то по сути мы используем только фактор знания. Если говорить о рассматриваемых нами методах, то метод на основе SMS принято относить к двухшаговой, но однофакторной аутентификации, т. к. пароль для SMS генерируется на сервере, а TOTP к двухфакторной, поскольку для генерации пароля необходимо наличие определенного приложения на смартфоне, что усложняет задачу доступа злоумышленников к этой информации.
Итак, используя для двухфакторной аутентификации метод на основе TOTP, мы создаем одноразовый пароль на стороне пользователя (а не на стороне сервера) через приложение для смартфона. Это означает, что у пользователя всегда есть доступ к своему одноразовому паролю. А также предотвращает отправку текстового сообщения сервером при каждой попытке войти в систему. Кроме того, сгенерированный пароль изменяется через определенный промежуток времени, что делает его, по сути, одноразовым.
Для реализации двухфакторной аутентификации с использованием TOTP необходимо учитывать основное требование – пароль должен создаваться на стороне пользователя, а также постоянно меняться.
Решение данной задачи может выглядеть следующим образом:
Когда пользователь включает двухфакторную аутентификацию, происходит следующее
- Внутренний сервер создает секретный ключ для этого конкретного пользователя
- Затем сервер передает этот секретный ключ телефонному приложению пользователя
- Телефонное приложение инициализирует счетчик
- Телефонное приложение генерирует одноразовый пароль, используя этот секретный ключ и счетчик
- Телефонное приложение изменяет счетчик через определенный интервал и восстанавливает одноразовый пароль, делая его динамическим
Однако, у данной последовательности действий есть несколько проблем. Первая из них заключается в том, как приложение будет генерировать одноразовый пароль. С этой проблемой справляется предшественник TOTP метода – алгоритм HOTP .
HOTP переводится как «Одноразовый пароль на основе HMAC ». Этот алгоритм был опубликован инженерной группой Интернета (IETF) как RFC4226. HOTP определяет алгоритм создания одноразового пароля из секретного ключа и счетчика.
Этот алгоритм включает в себя два этапа:
- Создать хеш HMAC (используя алгоритм хеширования SHA-1) из секретного ключа и счетчика
hmacHash = HMAC-SHA-1 (секретный ключ, счетчик)
- В этом коде на выходе будет строка длиной 20 байт. Эта длинная строка не подходит в качестве одноразового пароля. Итак, нам нужен способ обрезать эту строку. HOTP определяет способ обрезать эту строку до желаемой длины
hmacHash[19] means 19th byte of the string.offset = hmacHash[19] & 0xf; truncatedHash = (hmacHash[offset++] & 0x7f)
В этом алгоритме мы сначала получаем смещение, которое является последними 4 битами hmacHash [19] . После этого мы объединяем байты из hmacHash [offset] в hmacHash [offset + 3] и сохраняем последний 31 бит в truncatedHash . Наконец, используя простую операцию по модулю, мы получаем одноразовый пароль разумной длины.
Это в значительной степени определяет алгоритм HOTP. Документ RFA4226 объясняет, почему это наиболее безопасный способ получить одноразовый пароль из этих двух значений.
Итак, мы нашли способ получить одноразовый пароль с помощью секретного ключа и счетчика. А как следить за счетчиком? Ответ на этот вопрос находится в TOTP. TOTP переводится как «Одноразовый пароль на основе времени». Он был опубликован IETF как RFC6238. TOTP использует алгоритм HOTP для получения одноразового пароля. Единственная разница в том, что здесь вместо «счетчика» используется «время», и это дает решение нашей проблемы. Это означает, что вместо инициализации счетчика и его отслеживания мы можем использовать время в качестве счетчика в алгоритме HOTP для получения OTP. Поскольку и сервер, и телефон имеют доступ ко времени, ни один из них не должен отслеживать счетчик. Кроме того, чтобы избежать проблемы с разными часовыми поясами сервера и телефона, мы можем использовать временную метку Unix, которая не зависит от часовых поясов. Однако время Unix определяется в секундах, поэтому оно меняется каждую секунду. Это означает, что сгенерированный пароль будет меняться каждую секунду, что не очень хорошо. Вместо этого нам нужно добавить значительный интервал перед изменением пароля. Например, приложение Google Authenticator меняет код каждые 30 секунд.
counter = currentUnixTime / 30
Итак, мы решили проблему счетчика. Теперь нам нужно решить нашу третью проблему: поделиться секретным ключом с приложением телефона. Здесь нам может помочь QR-код. Хотя есть возможность попросить пользователей вводить секретный ключ напрямую в приложение телефона, безопасность ключа зависит от его длины, и пользователю будет неудобно вводить такую длинную строку. Поскольку большинство смартфонов оснащено камерой, пользователь может использовать ее для того, чтобы отсканировать QR-код, и получить от него секретный ключ. Все, что для этого нужно – преобразовать секретный ключ в QR-код и показать его пользователю. В настоящее время есть несколько бесплатных телефонных приложений (например, Google Authenticator App, Authy и т.д.), которые могут генерировать одноразовый пароль для пользователя. Поэтому в большинстве случаев создавать собственное телефонное приложение не нужно. Следующие псевдокоды объясняют способ реализации двухфакторной аутентификации на основе TOTP в веб-приложении.
When user request to enable 2-factor authentication // Generate a secret key of length 20.secretKey = generateSecretKey (20); // Save that secret key in database for this particular user. SaveUserSecretKey (userId, secretKey); // convert that secret key into qr image.qrCode = convertToQrCode (secretKey); // send the qr image as responseresponse (qrCode);
Пользователя просят отсканировать этот QR-код. Когда приложение телефона сканирует QR-код, оно получает секретный ключ пользователя. Используя этот секретный ключ, текущее время Unix и алгоритм HOTP, приложение телефона сгенерирует и отобразит пароль. Затем система просит пользователя ввести сгенерированный код после сканирования QR-кода. Это необходимо, чтобы убедиться, что пользователь успешно отсканировал изображение и приложение для телефона успешно сгенерировало код.
User types the code displayed in the application. // Fetch secret key from database.secretKey = getSecretKeyOfUser (userId); if (codeTypedByUser == getHOTP (secretKey, currentUnixTime / 30))
Здесь используется алгоритм HOTP на стороне сервера, чтобы получить аутентификацию на основе OTP по секретному ключу и текущему времени Unix. Если этот OTP совпадает с введенным пользователем, то появляется возможность включить двухфакторную аутентификацию для этого пользователя. Теперь, после каждой операции входа в систему, проверяется, включена ли для этого конкретного пользователя двухфакторная аутентификация. Если да, то запрашивается одноразовый пароль, отображаемый в приложении телефона. И если этот набранный код правильный, только тогда пользователь аутентифицируется.
User types the code displayed in the phone application to login // Fetch secret key from database.secretKey = getSecretKeyOfUser (userId); if (codeTypedByUser == getHOTP (secretKey, currentUnixTime))
Если пользователь потеряет код, есть несколько способов помочь пользователю восстановить его. Обычно, когда они включают двухфакторную аутентификацию, есть возможность показать секретный ключ вместе с QR-кодом и попросить их сохранить этот код в безопасном месте. Такие приложения, как Google Authenticator App, позволяют сгенерировать пароль путем прямого ввода секретного ключа. Если пользователь потеряет код, он может ввести этот надежно сохраненный секретный ключ в приложение телефона, чтобы снова сгенерировать одноразовый пароль. При наличии номера телефона пользователя возможно использовать метод на основе SMS, чтобы отправить пользователю одноразовый пароль, чтобы помочь ему восстановить код.
Двухфакторная аутентификация набирает популярность. Многие веб-приложения реализуют его для дополнительной безопасности. В отличие от метода на основе SMS, метод TOTP также не требует особых усилий. Так что эту функцию стоит реализовать для любого приложения.
- totp
- двухфакторная аутентификация
- Информационная безопасность
- Алгоритмы
Аппаратные TOTP токены с поддержкой алгоритма SHA-256
Protectimus SHARK Классический аппаратный TOTP-токен в форме брелока с поддержкой алгоритма хэширования SHA-256. OTP токен Protectimus SHARK генерирует одноразовые пароли в соответствии со стандартом TOTP OATH с использованием алгоритма SHA-256 для дополнительной безопасности. TOTP токены SHARK поставляются со встроенными секретными ключами.
Аппаратные TOTP токены Protectimus SHARK обеспечивают исключительную безопасность благодаря поддержке стандарта генерации одноразовых паролей TOTP (RFC 6238) и алгоритма хэширования SHA-256 в соответствии с требованиями OATH.
Алгоритм хэширования SHA-256 считается более безопасным, чем SHA-1, и обеспечивает еще лучшую защиту от брутфорса и подобных атак. Это и есть основным преимуществом 2FA токена Protectimus SHARK по сравнению с другими аппаратными TOTP токенами.
Важно отметить, что MFA токены Protectimus SHARK производятся и поставляются со встроенными секретными ключами, которые невозможно перепрошить.
Вы можете использовать Protectimus SHARK с облачным сервисом двухфакторной аутентификации Protectimus, локальной платформой Protectimus или любым другим сервисом двухфакторной аутентификации, который поддерживает TOTP-токены с алгоритмом SHA256.
Поддержка алгоритма SHA-256
Алгоритм SHA-256 обеспечивает более высокий уровень безопасности, чем SHA-1. SHA-256 предлагает улучшенную защиту от брутфорса и подобных киберугроз. Аппаратный TOTP токен Protectimus SHARK обеспечит безопасность ваших данных с помощью новейших и самых надежных технологий двухфакторной аутентификации.
Защита от падения и влаги
2FA токен Protectimus SHARK отличается прочной конструкцией и водонепроницаемостью. Токен полностью защищен от попадания пыли, может работать даже при погружении в воду на глубину до 1 метра, а его прочная конструкция защищает токен от повреждений в случае падения с небольшой высоты.
Удобный дизайн
MFA токен Protectimus SHARK также отличается эргономичным, стильным и функциональным дизайном. OTP токен удобно носить на связке ключей, так что вы никогда не потеряете его и не забудете. Аппаратный TOTP токен Protectimus SHARK — это компактный, стильный и практичный брелок для двухфакторной аутентификации.
Specifications
- Поддерживаемые алгоритмы аутентификации: TOTP (RFC 6238); SHA-256;
- Соответствие стандартам OATH;
- Поддерживаются секретные ключи длиной 32 символа (Base32);
- Размер: 28.62 мм х 61.62 мм х 8.9 мм;
- Вес: 16.1 г;
- Тип дисплея: LED, 6 цифр с индикатором времени жизни OTP и заряда батареи;
- Уровень пыле- и влагозащищенности: IP67;
- Возможность брендирования при заказе от 1000 шт.;
- Гарантийный срок: 12 месяцев;
- Индикатор заряда батареи.
- Заряда батареи 2FA токена хватает на 3-5 лет.
Download
Как купить?
Вы с легкостью можете стать счастливым обладателем данного устройства. По вашему желанию мы можем разместить логотип и иные визуальные атрибуты вашей компании на устройстве, также может быть выбран цвет токена. Производство токенов согласно заданным атрибутам требует дополнительные 3-4 недели.
Стоимость токенов не включает стоимость доставки и другие дополнительные платежи, такие как налоги и таможенные сборы.
Длительность доставки зависит от нескольких факторов, а именно: объем партии, наличия токенов на нашем складе, почтовой службы. Также на срок доставки влияет необходимость размещения дополнительных визуальных атрибутов на изделиях. При наличии необходимого объема на складе доставка, обычно, осуществляется в срок от 2 до 6 недель.
Для заказа, пожалуйста, заполните форму и наш специалист в кратчайшие сроки свяжется с вами.
Смотрите также
| Вид | Модель токена | Цена, шт 1 100 500 1000 5000 |
Краткое описание | Описание |
|---|---|---|---|---|
| PROTECTIMUS TWO | $11.99 $11.49 $10.99 $9.99 $8.99 |
$3 при оплате сервиса на год
$3 при оплате сервиса на год
База знаний
Алгоритм SHA-256 обеспечивает более высокий уровень безопасности по сравнению с SHA-1 по нескольким причинам. Во-первых, он обладает более сильной устойчивостью к коллизиям, что затрудняет задачу атакующих создать два разных входных значения, которые приведут к одному и тому же хеш-значению. Во-вторых, SHA-256 создает более длинное хеш-значение — 256 бит, что обеспечивает более высокий уровень безопасности и делает задачу атакующих более сложной. Кроме того, не было известных успешных атак на SHA-256, в то время как у SHA-1 были обнаружены уязвимости, включая практические атаки, которые могут создавать коллизии. Алгоритм SHA-256 является рекомендуемым выбором для криптографических целей и идеально подходит для использования в TOTP токенах.
Алгоритм двухфакторной аутентификации TOTP (Time-based One-Time Password) работает так: секретный ключ соединяется с текущим временем и получается одноразовый пароль (OTP). В OTP токене Protectimus SHARK для генерации пароля используется хеш-функция SHA-256, которая создает фиксированный результат длиной 256 бит. SHA-256 делает алгоритм TOTP более безопасным и менее подверженным атакам. Одноразовый пароль, сгенерированный с помощью OTP токена Protectimus SHARK действителен только 30 секунд, затем создается новый.
Классические аппаратные токены TOTP имеют предустановленные производителем секретные ключи, которые нельзя изменить. При получении такого токена пользователю необходимо добавить секретный ключ на сервер аутентификации. MFA токены Protectimus SHARK являются классическими аппаратными токенами TOTP, которые можно использовать с системой двухфакторной аутентификации Protectimus или с любой другой системой, поддерживающей стандарты OATH и алгоритм хэширования SHA256.
Аппаратный TOTP токен Protectimus SHARK — отличный выбор для двухфакторной аутентификации. Он обеспечивает высокий уровень безопасности благодаря поддержке алгоритмов TOTP (RFC 6238) и SHA-256, соответствующих стандартам OATH. Главное преимущество этого токена — поддержка алгоритма хэширования SHA-256, который обеспечивает лучшую защиту, чем SHA-1. Аппаратный TOTP токен Protectimus SHARK работает оффлайн, поэтому защищен от взлома и перехвата одноразовых паролей. Кроме того, он имеет прочную конструкцию и высокую степень водонепроницаемости IP67. Обычно такие токены служат от 3 до 5 лет.
Что такое одноразовый пароль на основе времени (TOTP)?
Одноразовый пароль на основе времени (TOTP) представляет метод аутентификации, при котором уникальные коды генерируются каждые 30–60 секунд на основе определенного алгоритма. Используется для многофакторной аутентификации (MFA): пользователи вводят код TOTP после ввод пароля для подтверждения своей личности и получения доступа к своей учетной записи.
Как работает TOTP
TOTP основан на секретном алгоритме, генерирующем коды. Алгоритм, уникальный для каждого экземпляра, использует в качестве фактора текущее время. Это позволяет алгоритму генерировать новый уникальный код каждые 30–60 секунд.
Каждый раз, когда пользователь инициирует создание нового TOTP для учетной записи, серверы учетных записей генерируют уникальный секретный ключ, обычно отображаемый в виде QR-кода. Сервер хранит секрет и использует его для генерации кодов TOTP.
Пользователь сканирует QR-код с помощью инструмента аутентификации, которым может быть специальное приложение для телефона или функция менеджера паролей. Поскольку инструмент аутентификации теперь имеет секретный ключ, он вычисляет те же шестизначные коды, что и сервер.
После обмена секретным ключом алгоритм работает одновременно как на сервере, так и в инструменте аутентификации пользователя, создавая одни и те же шестизначные коды в одно и то же время.
Когда пользователь входит в систему, он вводит текущий код, отображаемый в его инструменте аутентификации. Сервер сравнит рассчитанный им код с кодом пользователя. Если коды совпадают, пользователь проходит верификацию и получает доступ.

Как использовать TOTP
Шаги использования TOTP:
- Выберите инструмент аутентификации. Мы рекомендуем использовать менеджер паролей для генерации кодов TOTP, поскольку это упрощает процесс входа в систему и не требует использования нескольких устройств только для входа в свою учетную запись.
- Запросите секретный код из своей учетной записи. Войдите в свою учетную запись и найдите настройки безопасности. Если коды TOTP входят в перечень вариантов MFA для вашей учетной записи, вы увидите настройку для запроса QR-кода.
- Отсканируйте QR-код с помощью инструмента аутентификации. Какое бы приложение вы ни использовали, у вас будет возможность отсканировать QR-код, скорее всего, с помощью камеры телефона или функции создания снимков экрана.
- Все готово! Каждый раз, когда вы входите в систему и сервер запрашивает код для аутентификации, обратитесь к инструменту аутентификации, в котором отображается этот код. Обязательно введите код до того, как истечет время и код изменится (обычно каждые 30–60 секунд).
Почему следует использовать TOTP-аутентификацию
TOTP – одна из наиболее безопасных и удобных форм многофакторной аутентификации (MFA), которая рекомендуется для всех учетных записей и обеспечивает дополнительный уровень защиты вашей учетной записи в дополнение к паролю. Если кто-то заимеет ваш пароль и попытается войти в учетную запись с включенной MFA, он не сможет получить доступ без второго фактора аутентификации.
Пароли часто компрометируются в результате массовой утечки данных и других кибератак. Это делает MFA жизненно важной. Если вы не используете MFA в своих учетных записях, киберпреступники могут легко войти в систему с украденными учетными данными и получить доступ к вашим конфиденциальным данным.
Что делает TOTP одной из наиболее безопасных форм MFA, так это то, что коды независимо вычисляются обеими сторонами. Из-за этого нет необходимости передавать коды между сторонами. Код невозможно перехватить, пока алгоритм создания кода остается секретным. Тот факт, что код меняется так часто, обеспечивает дополнительный уровень безопасности.
По сравнению с традиционным способом отправки кода верификации по электронной почте или в текстовом сообщении, метод TOTP гораздо более безопасен. Это связано с тем, что электронные письма и текстовые сообщения не шифруются и могут быть легко перехвачены киберпреступниками.
Сравнение OTP с TOTP и HOTP
Разница между OTP, TOTP и HOTP заключается в типе фактора, используемого для вычисления секретного кода.
Одноразовый пароль (OTP) — это общий термин, относящийся к любому виду одноразового кода, используемого для аутентификации. Такие одноразовые коды верификации могут генерироваться различными способами, некоторые из которых могут быть более безопасными, чем другие.
TOTP, как мы уже говорили, — это вид OTP, в котором использует время как фактор при вычислении кода. Фактор меняется с течением времени, а это означает, что новый код генерируется каждые 30–60 секунд. Поскольку TOTP меняется очень часто, это наиболее безопасный вид OTP.
Одноразовый пароль на основе хэша (HOTP) работает аналогично, за исключением того, что для вычисления кода используется другой фактор — в данном случае код аутентификации сообщения на основе хэша (HMAC). В HMAC подсчитывается количество запросов кода, и это значение использует для вычисления кода. Код меняется каждый раз, когда его запрашивают, а не каждые 30–60 секунд.
- TOTP
- Коды генерируются на основе текущего времени
- Меняется каждые 30–60 секунд
- Самый безопасный метод
- Коды генерируются на основе количества запросов кода
- Остается неизменным до тех пор, пока не будет запрошен новый код
- Все еще безопасный, но в меньшей степени, чем TOTP
Одноразовые пароли на основе времени — удобное решение для защиты ваших учетных записей. Менеджер паролей Keeper упрощает настройку TOTP для всех ваших учетных записей, а также генерирует надежные пароли. С помощью KeeperFill процесс входа в систему становится проще простого. Keeper автоматически вводит ваш пароль и коды TOTP, чтобы ваши учетные записи были в безопасности, без неудобств, связанных с другими методами MFA.
Расширения для безопасности бизнеса
Расширения для личной безопасности