Без токена что это
На данный момент насчитывается свыше 8,5 тысяч разных криптовалют и токенов. Однако много людей не знает, в чем их отличие. Попробуем сегодня разобраться, что такое токены, сколько они стоят и чем же они отличаются от таких криптовалют, как Bitcoin и Ethereum.
реклама
Вообще, токены – это общепринятый термин, который частую используют как общее название всех криптовалют. Однако токены значительно отличаются от Bitcoin и альткоинов.
Про токены простым языком
Токены являются цифровыми виртуальными единицами, выпускающимися кем-либо. Стоимость определяют их создатели. Они действуют на основе технологии blockchain. Так как криптовалюты тоже основаны на этой технологии, то именно это многих и сбивает с толку.
Кем могут быть выпущены токены? Токены выпускаются определенными лицами, в их ценности вкладываются товары, различные услуги, акции предприятий, какие-либо действия и др. Названия же могут быть любыми. У такого процесса есть свое название – токенизация, то есть каждый актив в виде токенов. Можно токенизировать ценные бумаги, акции предприятий, различную продукцию, консультации и т.д. Токены находятся в электронных кошельках своих создателей. Они передаются на условиях, поставленных их создателями.
Зачем они нужны?
реклама
Если говорить попроще, главное предназначение токена –бартер неких ценностей, реализация которого в реальности осложнена расстоянием между сторонами сделок, размерами тех самых ценностей, участвующих в сделках.
Часто токены могут быть источником заработка. Для этого вам нужно знать, какие активы могут увеличить свою стоимость. Чтобы дать ответ на данный вопрос, важно понимать, почему стоимость предлагаемых продуктов или услуг может увеличиться в будущем. Это могут быть или дефицитные активы, или активы, которые будут расти самостоятельно.
Это заложено во всех ICO. Первоначально, когда его дальнейшая судьба неизвестна, ICO предлагает купить токены по низкой цене в качестве инвестора в конкретный проект, описывая, как он может принести прибыль в будущем. Если проект будет развиваться, цена токенов увеличится, если они связаны с активами проекта или применяются в бизнесе.
реклама
Большое количество токенов создано на основе blockchain Ethereum, что в один момент подтолкнуло к росту Эфира.
Виды токенов
Токены можно разделить на 3 основные группы:
Utility tokens. Тут как пример можно привести начисление каких-либо баллов за совершение определенных действий, которые начисляются в играх.
реклама
Utility tokens – это токены на основе товаров или услуг.
Третий тип токенов наиболее обеспеченный, так как компании, которые предоставляют товары и услуги, или же отдельные лица, выступают гарантом совершения сделок. В данном случае один или несколько товаров (услуг) равняются одному токену.
То есть, токены, простыми словами представляют собой валюту в закрытой экосистеме, использующуюся для покупок товаров и услуг, выступают как вознаграждение за определенные действия.
Токены предназначены для упрощения и удобности проведения транзакций между сторонами, а также для ускорения процесса транзакции при помощи технологии blockchain. Это альтернативный способ инвестиции в акции.
Отличие токенов от монет
Токены отличаются от монет тем, как они выпускаются. Если монеты децентрализованы, они выпускаются разными компьютерами, то выпуском токенов занимается руководство одной или нескольких организаций, или же какое-либо конкретное лицо. Бывают и исключения, но чаще всего все транзакции, связанные с токенами, полностью подконтрольны, поскольку транзакции часто порождают обязательства.
Вторым существенным отличием является их стоимость, а именно факторы, которые ее определяют. Допустим, если стоимость Bitcoin напрямую зависит от спроса и предложения, то стоимость токена определяется, вложенным в него активом.
Bitcoin и альткоины функционируют на основе собственных blockchain, токены же функционируют на основе blockchain других криптовалют. Это дает пользователям даже с минимальными знаниями в этой сфере возможность создания своих токенов.
Если говорить проще, то у токенов более широкий спектр применения, нежели у криптовалют. Но у токенов меньший масштаб использования.
Покупка токенов и их хранение
Покупка и хранение токенов схожи с покупкой и хранением криптовалюты. Покупка осуществляется с помощью бирж, обменников или же напрямую у продавцов.
Хранение токенов осуществляется с помощью специальных электронных кошельков, на которых происходит хранение и обработка ключей, а формирование транзакций.
Но тут никак без рисков и проблем, связанных с:
Из-за чего так много токенов
В связи с тем, что токены являются цифровыми активами, основанными на blockchain каких-либо криптовалют, их намного легче создать. Помимо этого, этот метод удобен, поскольку он намного безопаснее, устраняет посредников в сделке, а также ускоряет процесс торговли.
С помощью существующих проверенных алгоритмов вы можете создавать токены и проводить ICO. В Интернете есть много конструкторов. Вы всего лишь нужно выбрать наиболее подходящий для вас конструктор, после чего перейти к созданию смарт-контракта.
Смарт-контракты представляют собой набор определенных функций, осуществляющихся внутри структуры: владение токенами, их передачи, пополнения балансов и др.
Их выпуск стандартизирован, что снижает риск потери денежных средств в случае возникновения ошибок смарт-контрактов. При выпуске выбираются наименование, символ, их количество. После всего этого информация добавляется в сеть.
Вывод
Существует большое количество ситуаций, где можно использовать токены. С помощью этих активов пользователям доступна покупка токенизированных акций, предметов искусства и др. Надеюсь, теперь вам стало хоть чуточку понятнее суть токенов, их предназначение.
Токен авторизации на примере JSON WEB Token
Введение
Начнем с того, что важно уметь различать следующие два понятия: аутентификации и авторизации. Именно с помощью этих терминов почти все клиент-серверные приложения основывают разделение прав доступа в своих сервисах.
Еще одно небольшое введение
Формальное определение
Приступим наконец к работе самого токена. Как я сказал ранее в качестве токенов наиболее часто рассматривают JSON Web Tokens (JWT) и хотя реализации бывают разные, но токены JWT превратились в некий стандарт, именно поэтому будем рассматривать именно на его примере.
JSON Web Token (JWT) — это открытый стандарт (RFC 7519) для создания токенов доступа, основанный на формате JSON.
Фактически это просто строка символов (закодированная и подписанная определенными алгоритмами) с некоторой структурой, содержащая полезные данные пользователя, например ID, имя, уровень доступа и так далее. И эта строчка передается клиентом приложению при каждом запросе, когда есть необходимость идентифицировать и понять кто прислал этот запрос.
Принцип работы
Рассмотрим принцип работы клиент серверных приложений, работающих с помощью JWT. Первым делом пользователь проходит аутентификацию, конечно же если не делал этого ранее и в этом есть необходимость, а именно, например, вводит свой логин и пароль. Далее приложение выдаст ему 2 токена: access token и refresh token (для чего нужен второй мы обсудим ниже, сейчас речь идет именно об access token). Пользователь тем или иным способом сохраняет его себе, например, в локальном хранилище или в хранилище сессий. Затем, когда пользователь делает запрос к API приложения он добавляет полученный ранее access token. И наконец наше приложение, получив данный запрос с токеном, проверяет что данный токен действительный (об этой проверке, опять же, ниже), вычитывает полезные данные, которые помогут идентифицировать пользователя и проверить, что он имеет право на запрашиваемые ресурсы. Таким нехитрым образом происходит основная логика работы с JSON Web Tokens.
https://habr.com/ru/post/336082/
Структура токена
Пришло время обсудить структуру токена и тем самым лучше разобраться в его работе. Первое что следует отметить, что JWT токен состоит из трех частей, разделенных через точку:
Полезные данные (playload)
funnytorimage.pw
Рассмотрим каждую часть по подробнее.
Заголовок
Это первая часть токена. Она служит прежде всего для хранения информации о токене, которая должна рассказать о том, как нам прочитать дальнейшие данные, передаваемые JWT. Заголовок представлен в виде JSON объекта, закодированного в Base64-URL Например:
Если раскодировать данную строку получим:
Полезные данные
Что в JSON формате представляет собой:
Именно здесь хранится вся полезная информация. Для данной части нет обязательных полей, из наиболее часто встречаемых можно отметить следующие:
Одной из самых важных характеристик любого токена является время его жизни, которое может быть задано полем exp. По нему происходит проверка, актуален ли токен еще (что происходит, когда токен перестает быть актуальным можно узнать ниже). Как я уже упоминал, токен может помочь с проблемой авторизации, именно в полезных данных мы можем добавить свои поля, которые будут отражать возможности взаимодействия пользователя с нашим приложением. Например, мы можем добавить поле is_admin или же is_preferUser, где можем указать имеет ли пользователь права на те или иные действия, и при каждом новом запросе с легкостью проверять, не противоречат ли запрашиваемые действия с разрешенными. Ну а что же делать, если попробовать изменить токен и указать, например, что мы являемся администраторами, хотя таковыми никогда не были. Здесь мы плавно можем перейти к третьей и заключительной части нашего JWT.
Подпись
Время жизни токена и Refresh Token
Заключение
В данной статье я постарался подробно рассмотреть работу клиент-серверных приложений с токеном доступа, а конкретно на примере JSON Web Token (JWT). Еще раз хочется отметить с какой сравнительной легкостью, но в тоже время хорошей надежностью, токен позволяет решать проблемы аутентификации и авторизации, что и сделало его таким популярным. Спасибо за уделенное время.
Токены vs Пароли
Пост навеян недавней темой про токены, в комментариях к которой царила некоторая неразбериха. Я сделал вывод, что многие не до конца понимают или даже вообще не понимают, что такое токен, с чем его едят и чем токен не является. Желание расставить все точки над i привело к написанию нижеследующего текста. Далее речь пойдет именно о USB-токенах, которые можно подключать к компьютеру, давать команды и получать результаты их выполнения. Приступим.
Аспекты хранения информации на токенах
Сразу хочется пояснить, что токен – это не флэшка. Конечно, он может хранить некоторое количество информации, но весьма ограниченное, например, 64 Кб. Существуют токены, которые содержат в себе флэш-память на несколько Гб. Однако данные хранятся в этой флэш-памяти при помощи той же самой технологии, что и на обычной флэшке. Поэтому функцию хранения больших объемов данных можно расценивать как второстепенную или побочную.
Можно сказать, что первоначальная функция токенов – это не извлекаемое хранение ключевой информации. Очевидно, с флэшкой общего мало. Что значит «не извлекаемое»? Это значит, что ключ из токена никогда не попадает никуда извне, например, в оперативную память компьютера. Данную строгую политику можно ослабить до того, что разрешается экспорт ключа из токена в оперативную память только в зашифрованном виде. Также существует опция экспорта ключа в открытом виде. Но даже при выборе владельца токена использовать только эту опцию, уровень безопасности все равно выше, чем хранение ключа на обычной флэшке. Выше он потому, что для экспорта ключа требуется знание PIN-кода, а для копирования ключа с флэшки PIN-код не требуется. Многие скажут: так можно же хранить ключ на флэшке и шифровать его паролем при помощи, например, RAR-а, и токен не нужен! Но, чтобы перебрать все пароли к архиву у нарушителя будет сколь угодно большое количество попыток, а токен после трех последовательных попыток ввода неверного PIN-а блокируется. Вывод: даже при самых скромных настройках безопасности хранить ключ на токене безопаснее, чем на флэшке. С хранением ключей все.
Другие функции токена
Что ещё умеет делать токен? Токен может самостоятельно:
1. Шифровать\расшифровывать в соответствии с алгоритмами симметричного и асимметричного шифрования
2. Генерировать ключи шифрования
3. Формировать и проверять ЭЦП
4. Хешировать данные и т.д.
Токен представляет собой некий «черный ящик» во время осуществления криптографических операций: данные поступают на вход, преобразуются с помощью ключа и передаются на выход. Его можно сравнить с микрокомпьютером. Ввод и вывод информации для токена происходит по USB, есть свой процессор, оперативная и защищенная долговременная память.
Для чего нам нужны пароли?
Для большинства из нас повсеместное использование паролей стало стандартом «де факто» или, если угодно, классикой современности. Хотим аутентифицироваться на почте или соцсетях – легко, зашифровать файл RAR-ом – пожалуйста. Главное преимущество паролей в простоте их использования. Однако, такие вопросы как забывчивость, передача по незащищенным каналам (теще по телефону), набор пароля на клавиатуре, предсказуемость и т.д. ставят под сомнение некоторые важные с точки зрения безопасности операции.
Если сравнивать пароль с криптографическим ключом, то выводы напрашиваются весьма неутешительные. В ГОСТ 28147-89 длина ключа составляет 256 бит (32 байта). При использовании генератора псевдослучайных чисел, ключ обладает хорошими статистическими свойствами. Пароль же, который является, например, словом из словаря, можно свести к псевдослучайному числу длиной 16 бит, что короче ГОСТ-ового ключа в 16 раз. Это сравнение само по себе представляет по криптографическим понятиям полный и безоговорочный fail!
Мое утверждение состоит в следующем: токены способны решать все те задачи, для которых сейчас применяются пароли. Все без исключения. И решать их более качественно и безопасно. Считаю, давно пора заменить схемы на паролях на полноценные криптографические протоколы с ключами. И в этом деле, лучшего помощника, нежели токен, не найти. Чтобы не быть голословным, рассмотрим пару конкретных примеров: аутентификация и шифрование данных.
Аутентификация
Подробно останавливаться на минусах парольной аутентификации нет смысла. Слишком много сообщений о взломанных страничках и почтовых ящиках нам приходилось слышать. А с помощью криптографии на токенах реально реализовать «любой из тысячи» существующих протоколов аутентификации, для которого ни перехват с модификацией трафика, ни кража БД с сервера не дадут результата для нарушителя. Пользователь может забыть пароль, но не может забыть ключ, т.к. последний надежно хранится на токене. Аутентифицироваться с токеном также удобно, как и по паролю.
Шифрование данных
Обычно данные шифруются на криптографическом ключе, а сам ключ шифруется на пароле. Безопасность всей схемы целиком и полностью зависит от пароля, который опять же не всегда сложен и случаен, набирается на клавиатуре, может быть забыт и т.д. В случае с токеном, возможны два варианта решения:
1. Ключ хранится на токене и не покидает его. Такой способ подходит только для малых объемов информации, т.к. скорость дешифрования при помощи токена не достаточно велика. Нарушителю извлечь ключ нереально.
2. Ключ хранится на токене, но при шифровании попадает в оперативную память. Этот способ применяется, например, для де/шифрования тома целиком. Извлечь ключ возможно, но не совсем тривиально. Пароль же украсть гораздо проще.
Конечно, за решения с помощью токенов придется платить, но к счастью, рублями, а не нервами и временем. Несмотря на то, что токены содержат полный арсенал криптографических операций, достаточно сложных для понимания большинством пользователей, само применение токена не представляет особого труда и интуитивно понятно. Токен действительно не требует от пользователя специальных профильных знаний и глубокого понимания заложенных в него механизмов. И он потенциально способен прийти на смену паролей и всего, что с ними связано.
Уверен, что при распространенности решений на основе токенов удастся избежать различных неприятных случаев, связанных с кражей паролей, а также увеличить уровень безопасности в глобальном смысле.
Искренне надеюсь, что у читателей остались вопросы, ведь рассказал о токенах я крайне мало. С удовольствием отвечу на них в комментариях!
Токенизация карт в E-commerce: что это такое и как работает?
Всем привет! Недавно мы в Яндекс.Кассе совместно с платежными системами Visa и Mastercard запустили новую технологию токенизации платежей для E-commerce, или, по-другому, онлайн-коммерции. Кто-то может подумать: что тут такого — с токенизацией карт разобрались уже с выходом Apple Pay, Google Pay и других *Pay. Но нет, тут что-то новенькое, а мы еще и первыми эту технологию запустили в России этой весной для магазинов-партнеров, так что почему бы не поделиться.
В США и Европе эта технология появилась несколько раньше, и пользователи таких сервисов, как Netflix и Amazon, уже платят E-commerce токенами, хотя, возможно, даже не знают об этом. А я сейчас расскажу, как это устроено не только снаружи (для партнеров и держателей карт), но и изнутри, с точки зрения разработчика и тимлида этого проекта. Если интересно — велкам под кат.
Что общего с Apple Pay и Google Pay
Те читатели, которые представляют, как работают Apple Pay и Google Pay (а кто не знает — вот наша статья про запуск *Pay), увидят тут знакомые слова.
Если коротко, то одна из особенностей технологий *Pay заключается в том, что плательщику не нужно передавать магазину данные своей банковской карты. Он один раз обменивает их на специальный цифровой токен и дальше, не подвергаясь риску перехвата данных карты, при платеже использует только этот токен. А преимущество в том, что токен работает только вместе с одноразовой криптограммой, которая генерируется на телефоне плательщика, а вне телефона эту криптограмму создать не получится. К тому же этими токенами легко управлять — удалять или создавать новые — дело одной минуты в онлайне, никаких походов в банк и прочей бюрократии.
Пока запомним эти особенности токенизации карт на устройствах пользователей:
Запомнили? А теперь перейдем к токенизации карт для E-commerce, иначе говоря, для онлайн-платежей в интернет-магазинах.
Итак, что такое токенизация в E-commerce
Вообще, токенизация карты — это обмен конфиденциальных данных банковской карты на специальный токен, который позволяет оплачивать покупки с помощью этой карты.
Конфиденциальные данные карты — это ее номер (PAN — Primary Account Number) и срок действия.
Если для подключения карты в *Pay инициатором является сам держатель карты, то токенизацию для E-commerce инициирует интернет-магазин. Но зачем (и с какой стати)?
Наверняка многие из вас пользуются сервисами с подписками: будь то ежемесячная оплата музыки, фильмов или, например, коммунальных услуг. Как оформляется эта подписка? Вы заходите на сайт интернет-магазина, вводите данные своей карты и ставите галочку, подтверждающую ваше согласие на то, что магазин сохранит данные вашей карты (PAN и срок действия) и сможет самостоятельно инициировать оплату за конкретную услугу.
Нужно понимать, что такое действие подразумевает, что магазин должен где-то сохранить данные карты. Тут обычно два варианта:
Давайте обо всем по порядку. При токенизации мы обмениваем данные банковской карты на некий токен, но что это такое? Токен предоставляется платежной системой карты — Mastercard или Visa. Он представляет собой уникальный идентификатор, аналогичный номеру учетной записи устройства в Apple Pay или номеру виртуального счета в Google Pay, которые можно найти в приложении на смартфоне (Wallet на устройствах Apple и Google Pay — на Android).
В отличие от *Pay, в E-commerce токенизации создание токена инициирует интернет-магазин или его платежное решение, а сами токены хранятся на серверах платежных систем.
Разумеется, кто угодно не может прийти к платежной системе и получить токен чьей-либо карты для оплаты покупок. Во-первых, токенизировать карты могут только те платежные решения, которые пройдут сертификацию и получат одобрение платежных систем. Такое платежное решение называется On-Behalf Token Requestor или Token Service Provider, но для простоты будем впредь оперировать термином Token Requestor. И только Token Requestor может инициировать платежи токеном. Во-вторых, токен всегда выпускается для конкретного магазина, и с помощью токена можно платить только в этом магазине. Очень похоже на то, как токен *Pay связан с устройством, на котором он был создан.
За счет чего это достигается? Просто перед проведением каждого платежа по токену Token Requestor должен получить одобрение у платежной системы на этот платеж. Факт такого одобрения надо будет предъявить во время фактического проведения платежа, поэтому одобрение это имеет форму одноразовой криптограммы, которую формирует платежная система карты. При проведении платежа эта криптограмма добавляется к параметрам запроса в банк-эквайер и затем передается платежной системе, которая проверяет подлинность этой криптограммы, которую сама ранее выдавала.
А что там про управление токеном независимо от управления картой? Тут вообще все просто — токен живет своей жизнью, имеет свои статусы жизненного цикла, и о каждом изменении статуса Token Requestor сразу же узнает от платежной системы карты.
Подведем некоторый итог. Что токенизация дает держателю карты?
*Мы сравнивали платежи за этот апрель в крупном онлайн-кинотеатре (MCC 4899) — привязанными картами без 3DS, без учета неуспешных платежей из-за нехватки денег на карте.
Технические аспекты
Для любителей копнуть чуть глубже, расскажу о технологии токенизации карт и ее запуске в Яндекс.Кассе — как все это выглядит изнутри нашего платежного решения.
Интеграция с платежными системами
Чтобы получить техническую возможность токенизировать карты и проводить платежи токенами, необходимо интегрироваться с Visa и Mastercard, пройти тесты, сертификацию и получить их одобрение на запуск в production. Поначалу это звучало устрашающе. Да и не только поначалу, если честно, по крайней мере, для меня. Но устрашала скорее сертификация, а по технике все было предельно ясно.
Интеграция подразумевает реализацию следующего API (условно) между платежной системой и нами в качестве Token Requestor:
Токенизация в Яндекс.Кассе
Яндекс.Касса представляет из себя большую систему по приему платежей для интернет-магазинов. Она состоит из многих десятков различных сервисов: backend-, frontend-приложения, BI-сервисы. Они обеспечивают прием платежа пользователя различными способами, перевод денежных средств магазину, управление платежами через личный кабинет магазина, аналитические сервисы и тому подобное. И как именно сюда встроилась токенизация карт?
Главный вопрос: в какой момент создавать токен для банковской карты?
В API Яндекс.Кассы есть возможность сохранять выбранный способ оплаты для последующих платежей в будущем, мы это называем автоплатежи.
Это может происходить как при привязке карты к аккаунту пользователя в личном кабинете магазина, так и при подписке на периодической основе, когда платежи с карты будут проводиться автоматически. В обоих сценариях при создании платежа магазин по API передает параметр save_payment_method: true, и после успешного платежа мы выдаем магазину payment_method_id — идентификатор сохраненного способа оплаты, с помощью которого он сможет проводить новые платежи.
Вот он, этот момент. Токены созданы как раз для платежей, инициированных магазином. Поэтому сразу после проведения платежа с сохранением способа оплаты мы асинхронно ставим нашему сервису токенизации задачу создать токен для пары «карта и магазин».
Что же сами платежные системы делают в момент токенизации карты?
Они обращаются в банк-эмитент, с запросом на создание токена (как это происходит и при создании токенов *Pay), и банк выпускает токен для данного магазина. Банк также может уведомить об этом держателя карты и отобразить созданный токен в его личном кабинете.
Как происходит платеж токеном?
Пожалуй, тут понадобится некоторая иллюстрация, как вообще проходит платеж ранее сохраненной картой, который инициирует интернет-магазин:
Итак, при платеже ранее сохраненным способом магазин передает только его идентификатор — payment_method_id. По этому идентификатору сервис платежей картами находит данные (PAN и срок действия) карты и передает их одному из банков-эквайеров, который далее общается с платежной системой карты.
С токенами в этом сценарии добавляется еще один шаг:
Если видим, что для карты и магазина ранее был выпущен токен, то мы можем провести платеж без использования данных карты. Для этого мы через сервис токенизации предварительно отправляем запрос в международную платежную систему с данными токена и в ответ получаем одноразовую криптограмму, которая подтверждает, что токен действующий и мы имеем право провести платеж. И уже после этого мы передаем банку-эквайеру данные токена вместе с этой криптограммой.
А что происходит в сценарии, когда пользователь перевыпускает карту в своем банке?
Если к карте ранее были выпущены токены, то банк-эмитент сообщает в платежную систему Mastercard/Visa, что карта перевыпущена. В свою очередь, каждый Token Requestor, который выпускал токены к этой карте, получит уведомление от платежной системы. Оно содержит обновленную информацию о карте: последние 4 цифры номера и новый срок действия. Токен при этом остается прежним.
Когда магазин инициирует очередной платеж с уже просроченной карты, которая на самом деле была перевыпущена, а у нас есть токен к ней для этого магазина — платеж пройдет успешно. К тому же мы сообщим магазину уже новые последние 4 цифры банковской карты — они будут присутствовать в ответах нашего API. Это нужно для того, чтобы и магазин, и пользователь всегда видели, с какой именно карты списываются средства.
Вместо заключения
Токенизация в E-commerce — это новый этап развития приема платежей, повышающий удобство для всех участников процесса оплаты. Мы ожидаем, что в ближайшее время технологию поддержат многие российские банки и провайдеры — и она станет новым стандартом платежного рынка.
Конечно, рассказ получился скорее обзорным, но я надеюсь, что каждый читатель найдет в нем что-то полезное для себя — повысит свой уровень финансовой грамотности, узнает о новинках в финтехе или, может, найдет идею для развития своего бизнеса.