Токены доступа что это

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

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

Содержание статьи

Справочник анонима

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

Другие статьи цикла:

Если для тебя эти материалы тривиальны — отлично! Но ты сделаешь доброе дело, отправив ссылку на них своим друзьям, знакомым и родственникам, менее подкованным в технических вопросах.

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

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

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

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

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

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

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

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

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

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

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

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это Так выглядит код QR для обмена секретом
Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это Тот же самый секрет, только текстом

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

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

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

Входим в приложение

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

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

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

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

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

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

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

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

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это Так выглядит наш токен

Подробнее про стандарт JWT можно почитать на сайте организации RFC, а про реализацию для своего любимого языка — на сайте jwt.io.

Заключение

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

Источник

На данный момент насчитывается свыше 8,5 тысяч разных криптовалют и токенов. Однако много людей не знает, в чем их отличие. Попробуем сегодня разобраться, что такое токены, сколько они стоят и чем же они отличаются от таких криптовалют, как Bitcoin и Ethereum.

реклама

Вообще, токены – это общепринятый термин, который частую используют как общее название всех криптовалют. Однако токены значительно отличаются от Bitcoin и альткоинов.

Про токены простым языком

Токены являются цифровыми виртуальными единицами, выпускающимися кем-либо. Стоимость определяют их создатели. Они действуют на основе технологии blockchain. Так как криптовалюты тоже основаны на этой технологии, то именно это многих и сбивает с толку.

Кем могут быть выпущены токены? Токены выпускаются определенными лицами, в их ценности вкладываются товары, различные услуги, акции предприятий, какие-либо действия и др. Названия же могут быть любыми. У такого процесса есть свое название – токенизация, то есть каждый актив в виде токенов. Можно токенизировать ценные бумаги, акции предприятий, различную продукцию, консультации и т.д. Токены находятся в электронных кошельках своих создателей. Они передаются на условиях, поставленных их создателями.

Зачем они нужны?

реклама

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

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

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

реклама

Большое количество токенов создано на основе blockchain Ethereum, что в один момент подтолкнуло к росту Эфира.

Виды токенов

Токены можно разделить на 3 основные группы:

Utility tokens. Тут как пример можно привести начисление каких-либо баллов за совершение определенных действий, которые начисляются в играх.

реклама

Utility tokens – это токены на основе товаров или услуг.

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

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

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

Отличие токенов от монет

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

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

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

Если говорить проще, то у токенов более широкий спектр применения, нежели у криптовалют. Но у токенов меньший масштаб использования.

Покупка токенов и их хранение

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

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

Но тут никак без рисков и проблем, связанных с:

Из-за чего так много токенов

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

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

Смарт-контракты представляют собой набор определенных функций, осуществляющихся внутри структуры: владение токенами, их передачи, пополнения балансов и др.

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

Вывод

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

Источник

Аутентификация и авторизация в микросервисных приложениях

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это
Автор: Вячеслав Михайлов, Solutions Architect

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

Что такое аутентификация?

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

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

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

Способы аутентификации

При использовании HTTP-протокола простейший способ аутентификации — Basic access authentication. В принципе этот протокол устарел и уже редко используется в интернете, особенно в незащищенных соединениях, но еще сохраняется во внутрикорпоративных системах, просто потому что некоторые из них созданы достаточно давно. Стоит разобраться, как он работает.

HTTP Basic Authentication

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

Первым, что при обращении к защищенному ресурсу сервер выдаст пользователю, не имеющему доступа, будет ошибка 401 Unauthorized. При этом ответ также содержит информацию о типе аутентификации (в нашем случае – Basic), который он может принимать, и контекст, в рамках которого эта аутентификация действует (Realm). Пользователь вводит логин и пароль, они упаковываются в Base64 и отправляются на сервер для проверки. Здесь существуют различные опасности. Самая распространенная — угроза man-in-the-middle attack, или атаки посредника, в ходе которой при использовании незащищенного соединения учетные данные могут перехватить злоумышленники в момент передачи от клиента к серверу или обратно.

HTTP Digest Authentication

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

Следующим этапом развития технологии стала чуть более сложная система HTTP digest authentication, которая исключает передачу учетных данных в открытом виде — здесь для проверки используется MD5-хеш с некоторыми примесями, что позволяет избежать подбора логина и пароля. Конечно, этот алгоритм выглядит более надежным, но и он подвержен целому ряду не самых сложных атак. Например, вот тут можно почитать об атаках более подробно.

Forms Authentication

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

Позднее появился процесс Forms authentication, при котором аутентификация происходит на более высоком уровне модели абстракции. HTTP-сервер при этом не сообщает об ошибке доступа, а просто перенаправляет неаутентифицированного пользователя на другую страницу. Обычно на этой странице отображаются поля для ввода логина и пароля, после заполнения которых формируется POST-запрос с данными и через защищенный канал направляется на сервер. Серверная сторона в свою очередь возвращает пользователю токен или идентификатор сессии, который сохраняется в Cookies и в дальнейшем используется для доступа к защищенному ресурсу.

Token Authentication

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

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

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

На следующей схеме дополнительно отражены те этапы взаимодействия, в которых пользователь принимает непосредственное участие. Этот момент и является недостатком подобной схемы — нам всегда нужен пользователь, чтобы получить доступ к ресурсу.
Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

OAuth2 & Open ID Connect

Дальнейшее усовершенствование процесса понадобилось ввиду того, что токен-аутентификация требует присутствия пользователя в момент получения доступа к защищенному ресурсу. Потому что Identity provider при передаче ему управления будет с пользователем взаимодействовать, запрашивая, например, логин и пароль.

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

В 2006 году в ходе работы над реализацией протокола Open ID для Twitter обнаружилась потребность в новом открытом протоколе авторизации. В 2007 инженеры Google и AOL начали совместную работу над ним, а в 2009 Twitter предложил своим пользователям решение, делегировавшее сторонним сервисам доступ к аккаунтам и основанное на протоколе OAuth. Три года спустя была опубликована новая версия — OAuth 2, упростившая разработку клиентских приложений и получившая целый ряд новых возможностей, среди которых оказалось и обновление токена без участия пользователя. Многие сервисы начали использовать этот протокол еще до его официального утверждения.

Разбираемся детально ху из ху

OpenID 1.0 (2006) & OpenID 2.0 (2007) позволяли приложению(арб) запрашивать у доверенного сервера (authority) проверку пользователя(user). Отличия между версиями для нас несущественны.

Взгляд сверху

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

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

Single sign-on — технология единого входа — позволяет пользователю переключаться между различными приложениями без повторной аутентификации. Используя SSO можно избежать множественных логинов, так что пользователь просто не будет замечать этих переключений. При этом ситуации, когда в рамках вашей инфраструктуры таких приложений будет больше одного, встречаются постоянно. Технология единого входа особенно удобна в больших энтерпрайз-системах, состоящих из десятков приложений, слабо связанных между собой. Вряд ли пользователи будут довольны, вводя логин и пароль при каждом обращении к системе учета рабочего времени, корпоративному форуму или внутренней базе документов.

В качестве реализации мы рассматриваем протокол OAuth2. В принципе, существуют и другие, например, Kerberos, успешно взаимодействующий с Windows, но в случае гетерогенной сети, в которой существуют компьютеры, использующие и Windows-, и Mac-, и UNIX-системы, использовать проприетарные протоколы зачастую неудобно. Тем более, это касается случаев, когда доступ к вашим сервисам осуществляется через веб — здесь OAuth2 оказывается лучшим кандидатом.

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

На рисунке выше показано, какие именно протоколы используются при каждом типе взаимодействия.

Как мы знаем из раздела «разбираемся детально ху из ху», OpenID Сonnect нужен, чтобы получить у пользователя его учетные данные и проверить их. OAuth 2.0 нужен, чтобы получать токены доступа и с ними обращаться к ресурсам.

Терминология OAuth2 & OpenID Connect

Сервис выдачи токенов

Open ID Connect Provider — важнейший объект всей конструкции централизованного сервиса аутентификации, он также может называться Security Token Service, Identity Provider authorization server и т. д. Различные источники называют его по-разному, но по смыслу это сервис, который выдает токены клиентам.

Клиент

Client — устройство или программа (браузер, приложение), которым требуется либо токен для аутентификации пользователя, либо токен для доступа к какому-то ресурсу (подразумевается, что данный ресурс «знаком» с тем конкретным «Security Token Service» у которого клиент запрашивает токен для доступа).

Пользователь

User — собственно конечный пользователь — человек.

Область (scope)

Scope — идентификатор ресурса, к которому клиент хочет получить доступ. Список scope посылается в адрес сервиса выдачи токенов в составе запроса на аутентификацию.

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

Scopes бывают двух видов:

Запрос на аутентификацию

Authentication/Token Request — процесс запроса аутентификации.

Токен личности

Identity Token — подтверждение аутентификации. Этот токен содержит минимальный набор информации о пользователе.

Токен доступа

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

Токен обновления

Refresh Token — токен, по которому STS вернет новый Access Token. В зависимости от режима работы, Refresh Token может быть многоразовым и одноразовым. В случае с одноразовым токеном, при запросе нового Access Token будет также сформирован готовый Refresh Token, который следует использовать при повторном обновлении. Очевидно, что одноразовые токены более безопасны.

Более подробно о составе токенов в разделе «структура токена».

Процесс аутентификации

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

При обращении пользователя к клиенту, тот перенаправляет пользователя на Open ID Connect Provider, который запрашивает у пользователя логин и пароль. В случае успешного прохождения проверки параметров аутентификации он возвращает назад identity token и access token, с которыми пользователь может обращаться к защищенному ресурсу.

Структура токена

Формат

Токены доступа что это. Смотреть фото Токены доступа что это. Смотреть картинку Токены доступа что это. Картинка про Токены доступа что это. Фото Токены доступа что это

В реализации OAuth2 используется так называемый jwt-токен, который состоит из трех частей. Допустим, при обращении к Identity provider вы отправляете логин/пароль и в ответ получаете токен. Он будет включать в себя: Header (заголовок), Payload (контент) и Signature (подпись). На сайте jwt.io его можно декодировать и посмотреть содержимое формате JSON. На этом сайте вы также найдете описание правил формирования jwt-токенов.

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

Кроме identity tokens, есть еще и аccess tokens, которые содержат информацию о выданных пользователю клеймах. Срок действия access token достаточно короткий, потому что его хищение может обеспечить несанкционированный доступ к ресурсу. Т. е. злоумышленник, если ему удастся заполучить токен этого типа, доступ получит на очень непродолжительное время. Для получения нового access token используется refresh token, который обычно не фигурирует в незащищенных средах, в частности в режиме доступа из браузера он вообще не используется. Какие именно токены будут возвращены клиенту в процессе аутентификации, разберемся в следующей части.

Основные поля

Кратко остановимся на том, какие есть стандартные полях в токене и зачем они нужны:

Заключение первой части

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

Минимальная реализация интеграция Identity Server в ваше приложение выглядит так:

Минимальная реализация интеграции веб-клиента с Identity Server:

Минимальная реализация интеграции веб-API с Identity Server:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *