неверная структура судир токена что это такое

Содержание
  1. Как исправить ‘Неверный формат пользовательского токена. Пожалуйста, проверьте документацию и неверную подпись, когда я проверяю токен
  2. Токен авторизации на примере JSON WEB Token
  3. Введение
  4. Еще одно небольшое введение
  5. Формальное определение
  6. Принцип работы
  7. Структура токена
  8. Заголовок
  9. Полезные данные
  10. Подпись
  11. Время жизни токена и Refresh Token
  12. Заключение
  13. Токен Авторизации
  14. Типы токенов авторизации
  15. Процесс токен авторизации
  16. Что такое аутентификация на основе токенов?
  17. Как токены работают?
  18. Безопасно ли использование токенов?
  19. Рекомендации по аутентификации на основе токенов
  20. Что такое JSON веб-токены?
  21. Почему стоит использовать токены авторизации?
  22. Зачем нужен Refresh Token, если есть Access Token?
  23. Зачем вообще нужны токены
  24. Зачем нужен первый токен
  25. Зачем нужен второй токен
  26. Зачем на самом деле нужен второй токен
  27. Как правильно использовать NFT в России и не нарушить закон
  28. Как регулируется рынок NFT в России?
  29. NFT и налоги
  30. Авторское право при передаче NFT

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

Я получаю сообщение об ошибке:

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

И ошибка, когда я проверяю свой токен в JWT с сообщением

Я уже не знаю, какой чек в моем токене будет действительным.

Пожалуйста, направьте меня на правильный путь, который решает проблему. Спасибо!

Я следовал за шагами, описанными здесь: Firebase. Попытка сгенерировать пользовательские токены для firebases методом Auth.auth(). SignIn (withCustomToken :). Используйте фреймворк SwiftyJWT.

Время истечения позже, чем выдано на 3600 секунд. Эти значения в секундах с эпохи UNIX

Добавьте настраиваемое поле, потому что SwiftyJWT имеет только jwtId, но мне нужен uid. Мой идентификатор длиной от 1 до 36 символов

Использовать алгоритм RS256

let bodyKey = «——BEGIN RSA PRIVATE KEY——\n’some-generate-key ‘\n —— КОНЕЦ RSA PRIVATE KEY——«

var payload = JWTPayload()

полезная нагрузка. isser= «firebaseserviceaccount@’my-project-id-firebaseApp’.iam.gserviceaccount.com»

полезная нагрузка. subject= «firebaseserviceaccount@’my-project-id-firebaseApp’.iam.gserviceaccount.com»

полезная нагрузка. issueAt= Int (Date(). timeIntervalSince1970)

полезная нагрузка. expiration= payload.issueAt! + 3600

Полезные данные let someUID = «dfsgdfg4546ysg45t67». customFields= [«uid»: EncodableValue (значение: someUID)]

let privateKey = попробовать? RSAKey (base64String: bodyKey, keyType:.PRIVATE)

guard let key = privateKey else

let jwtWithKeyId= JWT (полезная нагрузка: полезная нагрузка, алгоритм:.rs256 (ключ))

Проверьте это в SwiftyJWT и получите результат:

заголовок Полезная нагрузка: Проверить подпись:

Поля «RSA PRIVATE KEY» и «RSA PUBLIC KEY» заполнены. Но есть сообщение с ошибкой «Неверная подпись».

Источник

Токен авторизации на примере 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.

a552f19a78eb1b439486366fa7682b47https://habr.com/ru/post/336082/

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

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

Полезные данные (playload)

07f220c235fd94e7a2734c9fc01d8b5afunnytorimage.pw

Рассмотрим каждую часть по подробнее.

Заголовок

Это первая часть токена. Она служит прежде всего для хранения информации о токене, которая должна рассказать о том, как нам прочитать дальнейшие данные, передаваемые JWT. Заголовок представлен в виде JSON объекта, закодированного в Base64-URL Например:

ab0e1c3e5505e07de095d8a7956665e5

Если раскодировать данную строку получим:

Полезные данные

48d78e346ba55f121362d8f9133ecdf5

Что в JSON формате представляет собой:

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

Одной из самых важных характеристик любого токена является время его жизни, которое может быть задано полем exp. По нему происходит проверка, актуален ли токен еще (что происходит, когда токен перестает быть актуальным можно узнать ниже). Как я уже упоминал, токен может помочь с проблемой авторизации, именно в полезных данных мы можем добавить свои поля, которые будут отражать возможности взаимодействия пользователя с нашим приложением. Например, мы можем добавить поле is_admin или же is_preferUser, где можем указать имеет ли пользователь права на те или иные действия, и при каждом новом запросе с легкостью проверять, не противоречат ли запрашиваемые действия с разрешенными. Ну а что же делать, если попробовать изменить токен и указать, например, что мы являемся администраторами, хотя таковыми никогда не были. Здесь мы плавно можем перейти к третьей и заключительной части нашего JWT.

Подпись

Время жизни токена и Refresh Token

Заключение

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

Источник

Токен Авторизации

В настоящее время киберпреступность стала проблемой мирового уровня. Например, Дмитрий Самарцев, директор BI.ZONE в сфере кибербезопасности привёл на Всемирном экономическом форуме следующие цифры. В 2018 году ущерб мировой экономики от киберпреступности составил по его словам 1.5 триллиона долларов. В 2022 году прогнозируются потери уже в 8 триллионов, а в 2030 ущерб от киберпреступлений может превысить 90 триллионов долларов. Чтобы уменьшить потери от киберпреступлений, необходимо совершенствовать методы обеспечения безопасности пользователей. В настоящее время существует множество методов аутентификации и авторизации, которые помогают реализовать надежную стратегию безопасности. Среди них многие эксперты выделяют в качестве лучшей авторизацию на основе токенов.

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

Рассмотрим эту систему. Как правило, идеология их применения базируется на следующих принципах:

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

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

При необходимость заново подключиться к серверу и авторизироваться под своим аккаунтом, пользователю требуется заново вводить пароль и логин.

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

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

Типы токенов авторизации

Токены авторизации различаются по типам. Рассмотрим их:

Устройства, которые необходимо подключить физически. Например: ключи, диски и тому подобные. Тот, кто когда-либо использовал USB-устройство или смарт-карту для входа в систему, сталкивался с подключенным токеном.

Устройства, которые находятся достаточно близко к серверу, чтобы установить с ним соединение, но оно не подключаются физически. Примером такого типа токенов может служить «magic ring» от компании Microsoft.

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

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

Процесс токен авторизации

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

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

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

аутентификация по паролю (обычное запоминание комбинации символов)

аутентификация по биометрии (отпечаток пальца, сканирование сетчатки глаза, FaceID)

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

Как токены работают?

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

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

Хотя эти традиционные системы аутентификации токенов все еще действуют сегодня, увеличение количества смартфонов сделал аутентификацию на основе токенов проще, чем когда-либо. Смартфоны теперь могут быть дополнены, чтобы служить генераторами кодов, предоставляя конечным пользователям коды безопасности, необходимые для получения доступа к их сети в любой момент времени. В процессе входа в систему пользователи получают криптографически безопасный одноразовый код доступа, который ограничен по времени 30 или 60 секундами, в зависимости от настроек на стороне сервера. Эти мягкие токены генерируются либо приложением-аутентификатором на устройстве, либо отправляются по запросу через SMS.

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

Безопасно ли использование токенов?

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

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

Рекомендации по аутентификации на основе токенов

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

Правильный веб-токен. Хотя существует целый ряд веб-токенов, ни один из них не может обеспечить ту же надежность, которую предоставляет веб-токен JSON (JWT). JWT считается открытым стандартом (RFC 7519) для передачи конфиденциальной информации между несколькими сторонами. Обмен информацией осуществляется цифровой подписью с использованием алгоритма или сопряжения открытого и закрытого ключей для обеспечения оптимальной безопасности.

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

Что такое JSON веб-токены?

В своей компактной форме веб-токены JSON состоят из трех частей, разделенных точками: заголовок, полезная нагрузка, подпись. Поэтому JWT выглядит обычно выглядит следующим образом: «xxxx.yyyy.zzzz».

Заголовок состоит из двух частей: типа токена, которым является JWT, и используемого алгоритма подписи, такого как HMAC SHA256 или RSA.

Тоже не понял, что за прикол там происходит.

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

Выходные данные представляют собой три строки Base64-URL, разделенные точками, которые могут быть легко переданы в средах HTML и HTTP, будучи при этом более компактными по сравнению со стандартами на основе XML, такими как SAML.

Почему стоит использовать токены авторизации?

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

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

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

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

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

Источник

Зачем нужен Refresh Token, если есть Access Token?

Зачем вообще нужны токены

Зачем нужен первый токен

image loaderЕсть много разных токенов. Обычные, криптографические, «access key», «session token», разные схемы получения, использования и revoke. При этом одна из ключевых идей заключается в том, что если кто нехороший получит чужой токен, то самое неприятное, что случится — это доступ похитителя к сервису, от которого токен похищен. Пароль, тот самый, который один на все сервисы, похититель не получит. А пользователь, если поймет, что кроме него к сервису получил доступ кто-то другой, может токен отозвать. После чего получить себе новый, имея логин и пароль.

image loader

Зачем нужен второй токен

В OAuth 2 и некоторых других схемах авторизации (например, у нас) есть не один, а целых два токена. Первый, access token, используется при запросах к серверу (например, при логине). У него есть два свойства: он многоразовый и короткоживущий. Наш, к примеру, живет 48 часов, а у кого-то 30 минут. Время выбирается на основании того, как используется сервис. Второй, refresh token, используется для обновления пары access и refresh токенов. У него тоже есть два свойства, обратные первому токену: он одноразовый и долгоживущий. Совсем долгоживуший, наш живет месяц.

Зачем на самом деле нужен второй токен

image loaderВсе оказалось и проще, и сложнее чем я думал. Следите за руками:

Случай 1: Боб узнал оба токена Алисы и не воспользовался refresh

В этом случае Боб получит доступ к сервису на время жизни access token. Как только оно истечет и приложение, которым пользуется Алиса, воспользуется refresh token, сервер вернет новую пару токенов, а те, что узнал Боб, превратятся в тыкву.

Случай 2: Боб узнал оба токена Алисы и воспользовался refresh

В этом случае оба токена Алисы превращаются в тыкву, приложение предлагает ей авторизоваться логином и паролем, сервер возвращает новую пару токенов, а те, что узнал Боб, снова превратятся в тыкву (тут есть нюанс с device id, может вернуть ту же пару что и у Боба. В таком случае следующее использование refresh токена превратит токены Боба в то, что изображено справа).

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

Источник

Как правильно использовать NFT в России и не нарушить закон

756254925798265

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

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

Как регулируется рынок NFT в России?

В российском праве нет такого понятия, как невзаимозаменяемый токен (NFT). Законы «О ЦФА» и «О Краудфандинге» вводят понятия цифровая валюта, цифровые финансовые активы, утилитарные цифровые права. Согласно действующему законодательству, NFT нужно воспринимать как право на иное имущество, объяснил член Комиссии по правовому обеспечению цифровой экономики Московского отделения Ассоциации юристов России Юрий Брисов. По его словам, NFT — это выражение права на объект интеллектуальной собственности.

Но NFT нельзя назвать криптовалютой или цифровой валютой. Такими токенами невозможно за что-то платить, они не могут называться цифровым финансовым активом, подчеркнул Брисов. Человек покупает уникальный виртуальный объект или оцифрованный сертификат на уникальный объект в реальном мире.

«С точки зрения права это не сильно отличается от рынка искусства, но есть своя специфика с точки зрения оборота именно цифровых активов. Поэтому к NFT в России следует применять положения, касающиеся цифровых прав ст. ст. 128 и 141.1 ГК и положения, касающиеся объектов права интеллектуальной собственности и оборота вещей», — объяснил специалист.

По словам Брисова, в иностранном праве часто все проще. Например, в США токены классифицируют исходя из их экономической сути: если токеном платят за товар — это криптовалюта; если токен дает корпоративные права — это акция; если токен дает какую-то услугу — это и есть услуга (utility), если токен, такой как NFT, относится к картине, то его и будут рассматривать как совокупность авторского права, исключительного права и самой вещи (картины в рамке или в «цифровой рамке»).

NFT и налоги

Специальное регулирование продажи невзаимозаменяемых токенов в российском налоговом законодательстве отсутствует (законопроект об изменениях в Налоговый кодекс РФ еще рассматривается, но он также не регулирует подробно этот аспект). Минфин России в своих разъяснениях придерживается базового подхода к налогообложению криптоактивов — доход от продажи минус расход на покупку умножить на ставку НДФЛ для физлиц или налога на прибыль организаций, объяснил старший юрист налоговой практики Bryan Cave Leighton Paisner (Russia) LLP Дмитрий Кириллов.

Налоговые последствия продажи NFT будут зависеть от договорной модели, по которой работает конкретная площадка, выпускающая NFT, отметил Кириллов. По общему правилу NFT закрепляет отчуждение исключительного права на произведение, реже — лицензию на использование произведения с разовым платежом (например, экземпляр электронной картины с уникальным номером). В таком случае токен NFT может быть расценен не как самостоятельный объект, а как носитель по аналогии с передачей прав на «коробочное» программное обеспечение, где предметом сделки является лицензия на ПО, а не диск с экземпляром программы.

Создатель произведения, «зашитого» в NFT, будет обязан подать налоговую декларацию по НДФЛ до 30 апреля года, следующего за годом продажи токена, и уплатить налог до 15 июля того же года. При этом он вправе уменьшить облагаемый НДФЛ доход на сумму профессиональных налоговых вычетов — это могут документированные расходы или расчетная сумма в 20-40% дохода в зависимости от вида произведения.

По словам Кириллова, если покупатель такого NFT решит продать его дальше, он также будет обязан задекларировать доход от продажи и уплатить НДФЛ. При этом он сможет уменьшить доход на сумму документально подтвержденных расходов на покупку этого токена.

Авторское право при передаче NFT

Никакие права при купле/продаже/дарении NFT автоматически не передаются, подчеркнул преподаватель Moscow Digital School Герберт Шопник. По его словам, NFT — пока лишь инструмент обмена токенами с привязкой к цифровому контенту.

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

Создатель NFT указывает условия передачи прав в описании к своему токену. Такая публичная оферта размещается на NFT-маркетплейсе. Благодаря технологии невзаимозаменяемых токенов стало проще доказать, сохранить и получить авторские отчисления, объяснил член Комиссии по правовому обеспечению цифровой экономики Московского отделения Ассоциации юристов России Брисов.

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

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

Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.

Источник

Adblock
detector