Справочник анонима. Как работают токены аутентификации и в чем их отличия от паролей


Опубликовано Olga Geo Дек 10, 2015 | один комментарий

Стремление к многофункциональности и максимальному удобству — основная тенденция нашего времени. Именно из нее проистекает всеобщая привязанность (которая часто граничит с зависимостью) к смартфонам. Эти маленькие устройства воплощают для современного человека принцип “все свое ношу с собой”: обычный телефон стал теперь миниатюрным переносным компьютером, по которому еще и звонить можно (но это уже давно не главная его функция).

Поскольку в любом компьютере должна присутствовать надежная система защиты данных, а двухфакторная аутентификация (two-factor authentication) является одним из важнейших ее элементов — разработчики ПО предложили решение, при котором смартфон может превратиться в полноценный ОТР токен. Специалисты по кибербезопасности и пользователи с радостью приняли это средство аутентификации, которое действительно очень удобно.

Если говорить о плюсах такого средства аутентификации, то они довольно весомы. Рассмотрим их на примере Protectimus SMART, удобного программного токена для генерации one time password, созданного компанией Протектимус:

  • Смартфон всегда под рукой, доступен в любой момент, а значит, так же доступно будет и приложение на нем.
  • Token снабжен PIN-кодом, позволяющим защитить генератор одноразовых паролей от несанкционированного доступа, если телефон по тем или иным причинам попадет в чужие руки.
  • Гибкая система настройки: выбор длины пароля, алгоритма его генерации.
  • Можно создать несколько токенов на одном устройстве.
  • Наличие версии для гаджетов как на Android, так и на iOS. Более того, это может быть не только смартфон, но и смарт-часы Android Wear.
  • Есть функция подписи данных (CWYS), которая позволяет защитить процесс транзакции от автозалива и реплейсмента.
  • Защита данных не потребует никаких материальных затрат со стороны пользователя — приложение абсолютно бесплатное.

А есть ли недостатки у программных токенов? Как ни печально, есть. И основной из них — это то, что устройство, на которое устанавливается токен, не является полностью изолированным от внешних воздействий. Прежде всего, компьютерных вирусов. Особенно это касается Android смартфонов, большая часть которых имеет те или иные уязвимости.

Этого недостатка полностью лишены проверенные временем аппаратные токены. И хотя многие продвинутые пользователи и специалисты призывают признать их устройствами вчерашнего дня, они все же являются на сегодня самым надежным средством 2FA. Хотя, возможно, и не самым удобным. Но и с этим утверждением можно поспорить.

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

  • Элемент питания обыкновенного токена не подзарядишь, в отличие от смартфона с программным токеном. Те, кто придерживается подобного взгляда, упускают из виду тот факт, что срок работы батареи в токене составляет 3-5 лет. Это зачастую превышает жизненный цикл аккумулятора смартфона. Который еще и приходится заряжать практически ежедневно.
  • Аппаратный токен неудобно носить с собой и можно потерять. На это можно возразить, что телефоны тоже, в общем-то, теряются. Что касается удобства ношения, то современные токены очень невелики по размерам, легкие и часто обладают приятным дизайном, делающим их еще и симпатичной имиджевой вещью. Например, токен Protectimus One имеет форму небольшого брелока, его легко подсоединить к связке ключей (которые обычно тоже стараются не терять и постоянно носят с собой). А другое решение — Protectimus Slim представляет собой точную копию кредитной карты и не займет много места в бумажнике.
  • Программные токены бесплатны, а аппаратные — нет. Оспаривать этот факт не имеет смысла, но стоит иметь в виду, что за настоящее качество и надежность не грех и заплатить. Так, токен Protectimus Ultra обладает наивысшим уровнем защищенности и рекомендуется к использованию на самых важных участках системы обмена данными. Он работает по алгоритму “запрос-ответ”, учитывая время как дополнительный параметр аутентификации; имеет секретный ключ, который формируется в процессе активации и неизвестен даже производителю; для начала работы с устройством нужно ввести PIN-код.

Код аутентификации может быть получен разными способами, но следует признать, что как программные, так и аппаратные токены в любом случае более надежны, чем вариант, когда одноразовые пароли доставляются по электронной почте или SMS. При использовании токенов пароль не пересылается по GSM или сети Internet, где может быть теоретически перехвачен.

Так на чем же лучше остановить свой выбор? Однозначного ответа нет: и у программных, и у аппаратных токенов есть свои достоинства. Какие бы способы аутентификации ни применялись, главное — это обязательно использовать их. Делая это, мы проявляем заботу не только о собственной безопасности, но и о безопасности других пользователей сети.

Подписываемся под данными

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


Схема генерации HMAC (hash-based message authentication code), кода аутентификации сообщений с использованием хеш-функции

Другие статьи в выпуске:

Xakep #247. Мобильная антислежка

  • Содержание выпуска
  • Подписка на «Хакер»

Алгоритм хеширования может меняться, но суть этого подхода проста и неизменна: для подтверждения целостности сообщения необходимо снова найти подпись защищаемых данных и сравнить ее с имеющейся подписью.

Уязвимости токенов безопасности

Хотя токены безопасности предлагают пользователям и организациям множество преимуществ, они также могут иметь недостатки. Основным недостатком физических токенов безопасности является то, что они подвержены утере или краже. Например, токен безопасности может быть утерян во время путешествия или украден неавторизованной стороной. Если токен безопасности утерян или украден, его необходимо деактивировать и заменить. Тем временем неавторизованный пользователь, владеющий токеном, может получить доступ к конфиденциальной информации и системам.

Сергей Воробьёв

Интернет-предприниматель, специалист по SEO и SMM, E-commerce, вебмастер, блогер.

Придумываем коды доступа

Люди, которые придумали двухфакторную аутентификацию, по всей видимости, руководствовались принципом «одна голова хорошо, а две — лучше». И действительно — два пароля точно безопаснее одного. Но пароли, которые отправляет сайт в SMS, нельзя назвать абсолютно защищенными: сообщение чаще всего можно перехватить. Другое дело — специальные приложения для аутентификации, они нацелены на полную защиту всего процесса входа пользователя в аккаунт. Именно их мы сейчас с тобой и разберем.

Создание безопасных одноразовых паролей состоит из двух этапов:

  1. Первичная настройка — включение двухфакторной аутентификации.
  2. Использование пароля — непосредственный ввод кода и отправка для проверки.

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

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

На самом деле весь секрет — последовательность из случайных символов, которые закодированы в формате Base32. Суммарно они занимают не меньше 128 бит, а чаще и все 190 бит. Эту последовательность и видит пользователь как текст или QR-код.


Так выглядит код QR для обмена секретом


Тот же самый секрет, только текстом

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

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

Теперь давай попробуем посчитать код для авторизации самостоятельно. Для примера представим, что мы решили прямо в Новый год опубликовать фотографию красивого фейерверка и, чтобы это сделать, нужно войти в свой аккаунт, а значит, нам не обойтись без одноразового пароля.

Возьмем время празднования Нового года в формате UNIX (1577811600000) и посчитаем порядковый номер нашего пароля: поделим на 30 секунд — 52593720. Воспользуемся нашим секретом и вычислим хеш — по стандарту RFC 6238 это функция SHA-1:

$ echo -n ‘52593720’ | openssl sha1 -hmac ‘QWERTYUI12345678’ e818e7f3efcb625658c603b08b12522f1e4d160a

Не забудь про аргумент -n для команды echo, чтобы в ее выводе не было ненужного перевода строки, иначе хеш будет другим.

Теперь дело за малым: нужно получить шесть цифр, которые мы и будем отправлять на сервер при авторизации. Возьмем последние четыре бита хеша — сдвиг, — это будет число a, или 10. Именно по этому сдвигу расположен наш код, который пока в виде байтов, — 03b08b12 = 61901586. Отбросим все цифры этого числа, кроме шести последних, и получим наш новенький, готовый к использованию одноразовый код — 901586.

Как проходит ICO, где можно купить или продать токены?

Как проходит ICO? Если утрировать, то все желающие присылают деньги на указанный кошелек, после чего подсчитывается полученная сумма и делится на запланированное число токенов. По окончании ICO все участники получают определенное число виртуальных акций пропорционально вложенным средствам.

Проще некуда. Причем таким образом можно инвестировать любую, даже очень маленькую сумму без каких-либо проблем. Попробуйте купить реальные акции за сто сатошей и поймете, как ICO сильно расширяют число возможных участников (инвесторов).

Где хранить токены? Ну, большая часть из них базируется на популярных блокчейн-платформах и чаще всего используется для этого блокчейн Эфириума. А значит для хранения можно использовать любой одновалютный Эфириум-кошелек, который поддерживает стандарт ERC 20 (именно по нему проводятся почти все ICO), а также на удобном вам мультивалютном кошельке для криптовалют поддерживающем этот стандарт, например на Exodus.

Другое дело, что это сейчас практически никак не регулируется в правовом плане и развелось очень много мошенников строящих пирамиды под видом ICO, которые в скором времени терпят крах (происходит их скам, т.е. схлопывание пузыря). Да и в случае честного проекта он может просто не выстрелить и вы не сможете продать токены дороже, чем их купили.

Если почитать договор по ICO, то можно прийти к выводу, что вы просто отдаете свои деньги организатором (дарите), а в замен получаете определенное число цифровых расписок (виртуальных акций, аналогичных ценным бумагам). Что дадут вам эти расписки зависит от конкретного договора.

Продать токены можно там же где вы их купили, либо на бирже криптовалют. Покупка же после окончания ICO возможна только на крипто-биржах (ну, и некоторых обменниках типа этого).

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

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

  1. Bounty (баунти) — жетоны раздают за помощь в реализации проекта.
  2. Airdrop (эирдроп) — раздается немного халявы за помощь в раскрутке проекта.

Правда тут все равно нужно что-то делать, хотя денег тратить не нужно.

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

  1. КоинГеко
  2. КоинМаркетКап
  3. Cyber.Fund
  4. Smith + Crown

Как работает JWT?

Если есть данные, достоверность которых следует подтвердить, нам надо подписать их секретным ключом, используя HMAC. Для этого применяется такой же способ хеширования, что и для одноразовых паролей, только вместо шести цифр берется весь хеш целиком. Единственная разница — это сам алгоритм хеширования: в таких токенах SHA-1 считают слишком коротким и небезопасным, поэтому обычно используют SHA-256.

Главная задача JWT — подтверждение личности создателя токена и сопутствующих данных. Обычно содержимое токена — логин или другой идентификатор пользователя.

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

Любой токен состоит из трех частей: заголовка со служебной информацией, данных и подписи. Так как стандартом безопасности считается SHA-256, то мы запишем его в наш заголовок.

{ «alg»: «HS256» }

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

{ «user_id»: 123456 }

Закодируем наши данные и заголовок в Base64 и соединим их через точку. Это делается, чтобы безопасно пересылать данные через HTTP: eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjogMTIzNDU2fQ. Теперь, зная и данные, и заголовок, мы можем посчитать ее хеш, который содержит наш пароль — строку QWERTYUI12345678.

$ echo -n ‘eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjogMTIzNDU2fQ’ | openssl sha256 -hmac ‘QWERTYUI12345678’ e0a6b48a961ee3fc7eb38afcdb1a8ef22efb0572e1d5333b85db2aa66919e98e

Этот хеш нам тоже надо перевести в кодировку Base64 и затем присоединить к уже имеющейся строке из заголовка и данных: eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjogMTIzNDU2fQ.4Ka0ipYe4/x-s4r82xqO8i77BXLh1TM7hdsqpmkZ6Y4 — это и есть наш токен. Можно пользоваться!


Так выглядит наш токен

Преимущества токена безопасности

Хотя это правда, что пароли и идентификаторы пользователей по-прежнему являются наиболее широко используемой формой аутентификации, токены безопасности являются более безопасным вариантом для защиты сетей и цифровых систем. Проблема с паролями и идентификаторами пользователей в том, что они не всегда безопасны. Злоумышленники продолжают совершенствовать методы и инструменты для взлома паролей, делая пароли уязвимыми. Данные паролей также могут быть доступны или украдены в результате утечки данных. Кроме того, пароли часто легко угадать, обычно потому, что они основаны на легко обнаруживаемой личной информации.

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

Площадки где можно создать NFT и торговать ими

Площадок для создания и продажи (marketplace) токенов в виде нфт, есть огромное количество. Сегодня всё чаще, крупные проекты открывают свои маркетплейсы и всё чаще в них встречаются возможность создавать их для обычных пользователей. Мы остановимся на самых популярных. Просто приведу их списком с небольшими комментариями, чтобы лучше их понять, как всё устроено и чем они отличаются друг от друга, лучше всего на них зайти и посмотреть как они работают.

  • OpenSea — самая популярная торговая площадка NFT
  • Rarible — площадка с бонусами для активных пользователей
  • SuperRare — площадка с самыми дорогими NFT артами (Перед тем как выложить работу на SuperRare, нужно пройти собеседование с администрацией площадки)
  • Binance NFT — биржа обмена криптовалют и очень хороший маркетплейс (по бирже Бинанс есть обзор)
  • Enjin Efinity — планирует конкурировать с Ethereum в качестве ключевой платформы для игровых токенов
  • AtomicHub — очень популярная площадка на сегодня, в ней большое количество бесплатных раздач или по низкой стоимости на старте. Хороший вариант, что бы пробовать перепродажу nft
Рейтинг
( 1 оценка, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]