JSON Web Token - чому корисна навантаження є загальнодоступною?


30

Я не можу зрозуміти міркування для того, щоб зробити претензії / корисне навантаження JWT загальнодоступними після розшифровки base64.

Чому?

Здається, було б набагато корисніше зашифрувати секрет.

Чи може хтось пояснити, чому або в якій ситуації зберігання цих даних є загальнодоступним?


коли ви пишете JWT, ви, мабуть, маєте на увазі JWS. Тому що JWE (який також є "підкласом" JWT) насправді шифрує його вміст.
Олексій

Відповіді:


28

Ви вирішили не шифрувати корисну навантаження з тих самих причин, що ви вирішили не шифрувати нічого іншого: вартість (якою б вона була невеликою) перевищує користь, і багато даних просто не потрібно захищати таким чином.

Здебільшого вам потрібен захист від того, що люди підробляють дані, щоб оновлюватися невірний запис або хтось перевіряючий рахунок отримує в нього гроші, яких, як передбачається, не має. Підпис веб-токена JSON досягає цього, оскільки зміна будь-якої частини комбінації заголовка / корисного навантаження / підпису приводить до недійсності пакета.

Зауважте, що ви все-таки можете захистити пакети на транспортному шарі за допомогою SSL.


Ну я бачу, так що JWT по суті є новим маркером CSRF. Дякуємо за ваше пояснення, вона очистила плутанину.
ineedhelp

6
Ні JWT не є новим маркером CSRF. Це 2 різні речі.
Еш

@ash, якщо деталі операції зберігаються в JWT та перевіряються на сервері, чи не JWT по суті відіграє роль попередження CSRF у цьому сценарії? Я розумію, що головна мета JWT ванілі - це автентифікація, що дуже ясно з цієї відповіді. Я думаю, я уявляв собі додавання більше даних і виконання двох речей відразу.
ineedhelp

@RobertHarvey, ви неправильно використовуєте JWT. JST - "парасольовий" термін для JWS та JWE. JWS - це автентифікація, JWE - для шифрування. Отже, "мета веб-токена JSON - це автентифікація" має бути насправді "JWS - це автентифікація".
Олексій

@Alexey: Я змінив свою відповідь на пристосування.
Роберт Харві

4

Використання терміна підпис у RFC аналогічно цифровому підпису в асиметричній криптографії. У асиметричній криптографії, якщо відправник шифрує повідомлення своїм приватним ключем, кожен, хто має це повідомлення, може розшифрувати його відкритим ключем відправника. Отже, мета підпису терміна - не зберігати повідомлення в таємниці, а перевірити цілісність / відправника повідомлення, що не було змінено.

У випадку з JWTs відправляюча система є і творцем, і споживачем повідомлення (див. Схему нижче), а мета - переконатися, що маркер, переданий користувачеві, не був підроблений (наприклад, надано підвищені привілеї).

І як згадував @Robert, JWT можуть / повинні все ще бути зашифровані TLS.

Ось добре пояснення JWT та підписів, з яких виводиться зображення нижче. 5 простих кроків до розуміння веб-токенів JSON (JWT)

asdfasdf


2

Щоб додати відповідь Роберту Харвісу, існує істотний недолік для шифрування корисного навантаження - це означає, що одержувачу послуги потрібно поділитися секретом із сервером аутентифікації (ключ шифрування), щоб зрозуміти, уповноважений носій маркера чи ні. На противагу цьому кожен може перевірити JWT, використовуючи лише відкритий ключ, опублікований сервером аутентифікації.

Це ключова частина специфікації openid connect, оскільки вона дозволяє клієнтським програмам перевіряти маркери ідентичності, видані сервером auth, а також полегшує розгортання ресурсних серверів (оскільки їх не потрібно розгортати з доступом до секретного шифрування ключ), а також допомагає при спробі діагностувати будь-які проблеми з виданим JWT.


Ви намагаєтеся порівняти асиметричні та симетричні механізми шифрування, jwt - це реалізація шифрування RSA.
TheAnimatrix
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.