Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ASP.NET Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 JWT токен с симметричным алгоритмом.  [new]
WaspNewCore
Member

Откуда:
Сообщений: 55
Объясните пожалуйста кое что. Немного не догоняю.

Есть ли смысл использовать JWT токен, подписанный симметричным алгоритмом ? Для чего он вообще нужен ?
Чтобы клиент мог проверить полученный от сервера токен, ему необходимо отдать ключ симметричного шифрования, и что тогда помешает злоумышленникам подделывать токен, зная этот ключ ? А если не отдавать ключ, то тогда клиент не сможет проверить его получается.
В чем смысл существования симметричного алгоритма, если у него такая проблема ? Могу предположить лишь, что единственным выходом является не давать клиенту секретный ключ, давая возможность проверять валидность ключа. Но это наверное не очень удобно и красиво.
И другой вопрос. имея на руках итоговый текст, зная алгоритм шифрования - разве нельзя вычислить симметричный ключ, которым подписан JWT токен?

Если же использовать асимметричный алгоритм. То как нужно передавать клиенту открытый ключ?
9 авг 18, 10:33    [21635516]     Ответить | Цитировать Сообщить модератору
 Re: JWT токен с симметричным алгоритмом.  [new]
hVostt
Member

Откуда:
Сообщений: 14762
WaspNewCore
Есть ли смысл использовать JWT токен, подписанный симметричным алгоритмом ? Для чего он вообще нужен ?


Вы о чём вообще? Какой ещё симметричный алгоритм?


WaspNewCore
И другой вопрос. имея на руках итоговый текст, зная алгоритм шифрования - разве нельзя вычислить симметричный ключ, которым подписан JWT токен?
Если же использовать асимметричный алгоритм. То как нужно передавать клиенту открытый ключ?


Идите ещё раз почитайте про устройство JWT. Нет там шифрования.
9 авг 18, 10:47    [21635538]     Ответить | Цитировать Сообщить модератору
 Re: JWT токен с симметричным алгоритмом.  [new]
WaspNewCore
Member

Откуда:
Сообщений: 55
hVostt,

RS256 - ассиметричный алгоритм
HS256 - симметричный алгоритм

Соответственно вопрос был - зачем существует HS256, если мы должны либо открыть ключ (и рисковать тем, что токен смогут свободно подделывать), либо не открывать, но тогда у клиента не будет возможности проверить подпись.

Да речь о подписи а не шифровании в данном случае.
PS. Шифрование в JWT токене тоже, по моему, есть. Но сейчас это меня не интересует. Сейчас мне нужно понять насчет подписи.
9 авг 18, 11:07    [21635587]     Ответить | Цитировать Сообщить модератору
 Re: JWT токен с симметричным алгоритмом.  [new]
WaspNewCore
Member

Откуда:
Сообщений: 55
RS256 (RSA Signature with SHA-256) is an asymmetric algorithm, and it uses a public/private key pair: the identity provider has a private (secret) key used to generate the signature, and the consumer of the JWT gets a public key to validate the signature. Since the public key, as opposed to the private key, doesn't need to be kept secured, most identity providers make it easily available for consumers to obtain and use (usually through a metadata URL).

HS256 (HMAC with SHA-256), on the other hand, is a symmetric algorithm, with only one (secret) key that is shared between the two parties. Since the same key is used both to generate the signature and to validate it, care must be taken to ensure that the key is not compromised.

Т.е. предлагается не открывать симметричный ключ ?
Вообще нужно ли клиенту иметь возможность проверять, что токен не подделан ? Может и не нужно...
9 авг 18, 11:09    [21635592]     Ответить | Цитировать Сообщить модератору
 Re: JWT токен с симметричным алгоритмом.  [new]
handmadeFromRu
Member

Откуда: родина Ленина!
Сообщений: 1800
hVostt разве ? там ж есть тем каким алгоритмом обработать строку что лежит в клаймзах к примеру. ну вот ту можно поглять что будет https://jwt.io/
или вон https://www.example-code.com/csharp/jwt_rsa_create.asp

WaspNewCore
клиент авторизируется и ему в ответ дается токен чтоб он его потом подцеплял к запросу. клиенту не надо валидировать токен уже. он его использует, по поводу симметричного ключа вы не понимаете что есть публичный ключ а есть приватный, вообще у вас каша в голове. просто отдохните и почитай литературу снова.
9 авг 18, 11:25    [21635643]     Ответить | Цитировать Сообщить модератору
 Re: JWT токен с симметричным алгоритмом.  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3324
WaspNewCore
Объясните пожалуйста кое что. Немного не догоняю.

Есть ли смысл использовать JWT токен, подписанный симметричным алгоритмом ? Для чего он вообще нужен ?
Чтобы клиент мог проверить полученный от сервера токен, ему необходимо отдать ключ симметричного шифрования, и что тогда помешает злоумышленникам подделывать токен, зная этот ключ ? А если не отдавать ключ, то тогда клиент не сможет проверить его получается.
В чем смысл существования симметричного алгоритма, если у него такая проблема ? Могу предположить лишь, что единственным выходом является не давать клиенту секретный ключ, давая возможность проверять валидность ключа. Но это наверное не очень удобно и красиво.
И другой вопрос. имея на руках итоговый текст, зная алгоритм шифрования - разве нельзя вычислить симметричный ключ, которым подписан JWT токен?
JSON Web Token - используется ассиметричный алгоритм

WaspNewCore
Если же использовать асимметричный алгоритм. То как нужно передавать клиенту открытый ключ?
я так понимаю, что предполагается использование защищённого канала
  • каждый ответ от сервера может быть проверен этим ключом
  • для отправки запроса клиент просто вычисляет хэш от параметров с солью в виде этого ключа и прикладывает его к каждому своему запросу, так сервер может убедиться что клиент именно тот кому выдали открытый ключ
  • вопрос достоверности открытого ключа на клиенте, я так понимаю не учитывается
  • 9 авг 18, 11:41    [21635695]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    WaspNewCore
    Member

    Откуда:
    Сообщений: 55
    handmadeFromRu,

    Я знаю как это работает.
    "клиенту не надо валидировать токен уже" - вот в этом и был вопрос. Нужно ли клиенту убеждаться, что токен не подделан ?
    9 авг 18, 11:56    [21635728]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    handmadeFromRu
    Member

    Откуда: родина Ленина!
    Сообщений: 1800
    WaspNewCore,
    клиент не сможет это сделать в любом случае(тогда клиент будет знать и хранить лишнее у себя), да и зачем если он клиент и смог авторизоваться?
    хотите защиту от снипинга то ssl
    сервак по этому токену потом будет валидировать ответ от клиента и ему уже надо будет либ посылать в пешее клиента либ работать с ним.
    9 авг 18, 12:40    [21635831]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    hVostt
    Member

    Откуда:
    Сообщений: 14762
    WaspNewCore
    PS. Шифрование в JWT токене тоже, по моему, есть. Но сейчас это меня не интересует. Сейчас мне нужно понять насчет подписи.


    Но ваш вопрос не относится к JWT, а к вопросам криптографии и защиты информации в целом. JWT не отвечает на вопросы, как вы будете обмениваться ключами, секретами, но действует в рамках стандартов и рекомендаций.
    9 авг 18, 12:47    [21635859]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    hVostt
    Member

    Откуда:
    Сообщений: 14762
    handmadeFromRu
    hVostt разве ? там ж есть тем каким алгоритмом обработать строку что лежит в клаймзах к примеру. ну вот ту можно поглять что будет https://jwt.io/
    или вон https://www.example-code.com/csharp/jwt_rsa_create.asp


    Можно. Но нафига? Обмен токеном идёт по зашифрованному каналу.
    9 авг 18, 13:01    [21635888]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    hVostt
    Member

    Откуда:
    Сообщений: 14762
    kealon(Ruslan)
    JSON Web Token - используется ассиметричный алгоритм


    Там дофига алгоритмов используется, но обязательный - это обычная хеш функция hmac sha-256.
    9 авг 18, 13:07    [21635902]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    handmadeFromRu
    Member

    Откуда: родина Ленина!
    Сообщений: 1800
    hVostt,

    к этому я пытался вывести ТС)
    9 авг 18, 14:40    [21636188]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    Агнец за бортом
    Member

    Откуда:
    Сообщений: 964
    WaspNewCore
    Нужно ли клиенту убеждаться, что токен не подделан ?


    Зачем?
    9 авг 18, 22:16    [21636860]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    WaspNewCore
    Member

    Откуда:
    Сообщений: 55
    Агнец за бортом,

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

    Возможно, что стандартном подходе Клиент-Сервер, может и не нужно особое доверие к токену. Но тоже спорно.
    10 авг 18, 11:36    [21637444]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    hVostt
    Member

    Откуда:
    Сообщений: 14762
    WaspNewCore
    Соответственно доверие к токену у клиента должно быть.


    Это сомнительное удовольствие, валидировать токен на клиенте.
    Вам когда паспорт выдают, вы как его проверяете? :)

    Доверие должно быть со стороны сервера, а клиент просто получил бумажку для получения доступа к ресурсам.
    10 авг 18, 12:11    [21637540]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    hVostt
    Member

    Откуда:
    Сообщений: 14762
    WaspNewCore,

    Да и не сможете вы проверить валидность токена на клиенте, так как секрет клиенту не известен.
    10 авг 18, 12:14    [21637547]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    kealon(Ruslan)
    Member

    Откуда: Нижневартовск
    Сообщений: 3324
    hVostt,

    есть способы, в принципе https на этом пострено
    в частности с паспортом, его же не по почте присылают, валидацией выступает работник паспортной службы у которого его получаешь и знаки защиты
    10 авг 18, 15:29    [21638069]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    hVostt
    Member

    Откуда:
    Сообщений: 14762
    kealon(Ruslan)
    есть способы, в принципе https на этом пострено
    в частности с паспортом, его же не по почте присылают, валидацией выступает работник паспортной службы у которого его получаешь и знаки защиты


    Ну так и клиент получает токен у сервера авторизации. Благодаря HTTPS, можно сказать, что напрямую. Зачем его ещё валидировать?

    При чём, это невозможно, так как валидировать может только сервер, куда клиент получает доступ с помощью токена.
    10 авг 18, 15:32    [21638075]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    Petro123
    Member

    Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
    Сообщений: 34707
    kealon(Ruslan)
    hVostt,

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

    Не понимаю, почему тут не принято давать ссылки на документацию?
    автор
    JSON Web Token (JWT) — это открытый стандарт (RFC 7519) для создания токенов доступа, основанный на JSON формате. Как правило, используется для передачи данных авторизации в клиент-серверных приложениях. Токены создаются сервером, подписываются секретным ключом и передаются клиенту, который в дальнейшем использует данный токен для подтверждения своей личности.

    Иными словами, токен это заменитель куки и он для сервера а не для клиента.
    Т.е. чтобы сервер тебя узнал при повторном входе.
    Если клиент сам стал сервером, тогда другой разговор.
    А так, ни куки, ни токены валидировать не надо.
    10 авг 18, 15:59    [21638109]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    WaspNewCore
    Member

    Откуда:
    Сообщений: 55
    hVostt
    WaspNewCore,

    Да и не сможете вы проверить валидность токена на клиенте, так как секрет клиенту не известен.


    Ассиметричные алгоритмы работают так, что проверить можно. Т.к. шифруется все секретным ключем, а проверяется открытым ключем.
    10 авг 18, 16:01    [21638115]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    Petro123
    Member

    Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
    Сообщений: 34707
    WaspNewCore,
    Все можно написать, только это уже не стандарт и с сервером надо договорится.
    Можно отпечатки пальцев слать.
    10 авг 18, 16:05    [21638121]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    WaspNewCore
    Member

    Откуда:
    Сообщений: 55
    Petro123
    kealon(Ruslan)
    hVostt,

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

    Не понимаю, почему тут не принято давать ссылки на документацию?
    автор
    JSON Web Token (JWT) — это открытый стандарт (RFC 7519) для создания токенов доступа, основанный на JSON формате. Как правило, используется для передачи данных авторизации в клиент-серверных приложениях. Токены создаются сервером, подписываются секретным ключом и передаются клиенту, который в дальнейшем использует данный токен для подтверждения своей личности.

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



    Нет. Это не просто кука. А некий "паспорт" где прописаны права доступа предоставленные юзеру (к примеру).
    Токен нужен не только самому серверу - проверить, что токен не подделали, но и возможной третьей стороне.

    В яндексе на этом многое построено, вот почитайте
    https://tech.yandex.ru/oauth/

    Юзер логинится в свой акк только раз, а уже сотни приложений могут использовать яндексовый токен как тот самый паспорт юзера.
    Соответственно встает необходимость убеждатся, что токен не подделан. Что его сгенерировал Яндекс.
    10 авг 18, 16:07    [21638125]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    WaspNewCore
    Member

    Откуда:
    Сообщений: 55
    Petro123
    WaspNewCore,
    Все можно написать, только это уже не стандарт и с сервером надо договорится.
    Можно отпечатки пальцев слать.


    Это именно что стандарт.
    Обычно как раз таки JWT Токен (или OAth токен) может генерится сервером авторизации. А использоватся уже на других серверах. Достаточно стандартный подход.

    Вон целая компания только этим и живет, что предоставляет свои сервера для генерации токенов.
    https://auth0.com/

    Хотя все это можно сделать и самому и бесплатно :)
    10 авг 18, 16:09    [21638129]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    Petro123
    Member

    Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
    Сообщений: 34707
    WaspNewCore
    Нет. Это не просто кука. А некий "паспорт" где прописаны права доступа предоставленные юзеру (к примеру).
    ну дак сервер их читает т.к. забыл этот список при переходе по страничкам.

    WaspNewCore
    В яндексе на

    Тогда тему на oauth надо менять.
    И стандарт его как раз приводить.
    10 авг 18, 16:59    [21638184]     Ответить | Цитировать Сообщить модератору
     Re: JWT токен с симметричным алгоритмом.  [new]
    Petro123
    Member

    Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
    Сообщений: 34707
    WaspNewCore,
    Я к тому что jwt не должен валидироваться и согласен с hWostt.
    А ТС пусть уточняет про oauth.
    10 авг 18, 17:01    [21638189]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
    Все форумы / ASP.NET Ответить