JWT yordamida JSON obyektlarni himoyalab uzatish | Статья в журнале «Техника. Технологии. Инженерия»

Автор:

Рубрика: Спецвыпуск

Опубликовано в Техника. Технологии. Инженерия №2 (4) апрель 2017 г.

Дата публикации: 04.05.2017

Статья просмотрена: 14 раз

Библиографическое описание:

Садуллаев Н. Д. JWT yordamida JSON obyektlarni himoyalab uzatish // Техника. Технологии. Инженерия. — 2017. — №2.1. — С. 22-25. — URL https://moluch.ru/th/8/archive/57/2331/ (дата обращения: 19.10.2018).



В этой статье, мы обсуждаем безопасную передачу информации между сторонами как объект JSON используя JWT. Мы также покажем, как шифровать и расшифровывать информацию JSON по секретному ключу с помощью алгоритма HMAC или пары открытый/закрытый ключ, используя RSA.

Ключевые слова. JSON, JWT, шифрование данных, дешифрование данных, алгоритмы шифрования, HMAC, RSA, SHA256, методы шифрования данных, SAML, SWT

In this article, we discuss about securely transmitting information between parties as a JSON object using JWT. We also show how to encrypt and decrypt JSON information by secret with HMAC algorithm or a public/private key pair using RSA.

Key words. JSON, JWT, data encryption, data decryption, encryption algorithms, HMAC, RSA, SHA256, data encryption methods, SAML, SWT

Kirish. JWT(JSON Web Token) bu tomonlar orasida ma’lumotlarni JSON yordamida himoyalab uzatish uchun ishlab chiqilgan ochiq standart(RFC 7519) hisoblanadi. Bunda ma’lumotlar tekshirilgan va ishonchli ko’rinishda uzatiladi. Chunki ma’lumot uzatilishidan oldin shifrlanadi. JWT maxfiy so’z bilan(HMAC algoritmi yordamida) yoki ochiq va yopiq kalitlar juftligi bilan RSA algoritmi yordamida shifrlab uzatilishi mumkin. JWT ning asosiy avfzalliklari:

– Zichlashtirish. Ma’lumotlar uzatilayotgan paytda shifrlab, qisqartirilgan ko’rinishda uzatiladi. Bu ma’lumotlarni tez almashish imkonini beradi.

– O’z ichiga barcha zaruriy ma’lumotlarni olganligi. JWT ning asosiy qismida turli turli zaruriy ma’lumotlarni tokenga qo’shib yuborishimiz ham mumkin.

JWT ning ishlatilishi:

– Autentikatsiya. JWT ko’pincha autentikasiya masalalarida ishlatiladi. Bunda resurslardan foydalanish huquqi tokenga qarab beriladi. Agarda tog’ri tokendan foydalanilayotgan bo’lsa, tokenni ichidan foydalanuvchini logini va paroli ajratib olinadi. Bazi holatlardan login va parol o’rniga token ishlatiladi.

– Ma’lumot almashish. JWT ning asosiy qismi(payload) da ixtiyoriy ma’lumotni qo’yib uzatish mumkin. Bunda berilgan ma’lumot ochiq yoki yopiq kalit yordamida shifrlab uzatiladi.

Asosiy qism. JWT asosiy 3 ta qismdan iborat bo’lgan token hisoblanadi. Umumiy ko’rinishi quidagicha:

1-rasm

  1. Bosh qismi — odatda 2 ta qismdan tokenni turi va hashlash algoritmini nomidan tashkil topgan bo’ladi. Token turi tariqasida odatda “JWT” ishlatilaadi. Hashlash algoritmlari sifatida esa HMAC, SHA256 yoki RSA larni ishlatish mumkin. 1-jadvalda to’liq ro’yhati keltirilgan:

1-jadval

Imzo

Algoritm

Qisqacha tarifi

HS256

HMAC256

HMAC, SHA-256 yordamida ishlatilishi

HS384

HMAC384

HMAC, SHA-384 yordamida ishlatilishi

HS512

HMAC512

HMAC, SHA-512 yordamida ishlatilishi

RS256

RSA256

RSASSA-PKCS1-v1_5, SHA-256 yordamida ishlatilishi

RS384

RSA384

RSASSA-PKCS1-v1_5, SHA-384 yordamida ishlatilishi

RS512

RSA512

RSASSA-PKCS1-v1_5, SHA-512 yordamida ishlatilishi

ES256

ECDSA256

ECDSA, P-256 va SHA-256 yordamida ishlatilishi

ES384

ECDSA384

ECDSA, P-384 va SHA-384 yordamida ishlatilishi

ES512

ECDSA512

ECDSA, P-521 va SHA-512 yordamida ishlatilishi

  1. Tana qismi(Payload) — Tokenni ikkinchi qismi bo’lib, bu qismda foydalanuvchi haqidagi asosiy yoki qo’shimcha ma’lumotlar saqlanadi. Asosiy qismdagi ma’lumotlar 3 hil:

maxsus saqlanuvchi(preserved) — tokenda ishlatilishi uchun oldindan yaratilgan, ishlatish taklif etiladigan, lekin majburiy bo’lmagan atributlar.

ochiq(public) — tokenni ichiga joylashtirilgan ochiq ma’lumotlar, bular odatda urlda parameter sifatida ishlatilishi taklif etiladi.

shaxsiy(private) — tokenni ichida joylashgan maxsus atributlar.

  1. Imzo. Bosh qism, asosiy qismni shifrlash uchun ishlatiladigan shifrlash algoritmlari va ularni kalit so’zlaridan ibora bo’lgan qism.

Shifrlash va deshifrlash. JWT dan foydalanish va undagi ma’lumotlarni qanday tartibda shifrlash va deshifrlashni ko’rish uchun bir qancha saytlar mavjud. Shulardan biri JWTning rasmiy sayti(http://jwt.io). Shu saytdagi “debugger” bo’limi orqali ma’lumotlarni shifrlash va deshifrlashni ko’rib o’tamiz.

Ma’lumotlarni HMAC SHA256 algoritmi yordamida shifrlash(kalit so’z: secret).

2-rasm

Ma’lumotni uzatilishi. Yuqoridagi JSON obyekt HMAC algoritmi yoramida shifrlangandan keyin 3 ta qismdan iborat bo’lgan quidagi token hosil bo’ladi.

3-rasm

Izoh.Birinchi nuqtagacha bo’lgan qismi bosh qism, ikkinchisi asosiy qism, oxirgisi imzo qismi.

Shu ma’lumotlarni RS256 algoritmi yordamida shifrlanishi. Bunda imzo qismida RSA Algoritmining ochiq va yopiq kalitlari ham tokenni ichiga joylashtirib yuboriladi:

4-rasm

RSA algoritmi yordamida yuqoridagi JSON obyekt shifrlangandan keyin quidagi token hosil bo’ladi. Bu token ham HMAC algoritmi bilan shifrlangani kabi 3 ta qismdan iborat. Faqat imzo qismidagi belgilar soni uzunroq bo’ladi.

5-rasm

Xulosa. Yuqorida ko’rib o’tilgan JWT yordamida ma’lumotlarni uztish usulida, ma’lumotlar to’liqligicha shifrlanadi va ma’lumotni maxfiyligi taminlanadi. Bulardan tashqari yana quidagi avfzalliklarini ham sanab o’tish mumkin:

– JSON ma’lumot XML ga qaraganda qisqa bo’ladi, Shuning uchun JWT bilan ma’lumot uzatish SAML(Security Assertion Markup Language Token) ga qaraganda tezkor bo’ladi.

– Ma’lumotlarni shifrlash usullaridan biri bo’lgan SWT(Simple Web Token) da faqat simmetrik shifrlash ishlatiladi, JWT da esa simmetrik va assimmetrik shifrlashlardan ham foydalanish mumkin.

– Ma’lumotlarni turli hil algoritmlar yordamida shifrlash mumkin(1-jadval).

– JWT ni Java, C,.NET, Python, NodeJS, JavaScript, Perl, Ruby, Go, Haskell, Scala, Clojure, Objective-C, Swift, Delphi, PHP kabi ko’plab dasturlash tillari uchun kutubxonalari mavjud.

– JWT ni turli xil ko’rinishdagi mijozlar, jumladan mobil telefonlarda ma’lumot almashishda ham ishlatish mumkin.

Аdabiyotlar:

  1. “JSON Web Token” M. Jones, J. Bradley, N. Sakimura may 16, 2014
  2. “Spring Rest” Balaji Varanasi, Sudha Belida, 2015. Chapter 8.
  3. https://jwt.io/introduction/
  4. https://en.wikipedia.org/wiki/JSON_Web_Token
  5. https://auth0.com/learn/json-web-tokens/
Основные термины (генерируются автоматически): JWT, JSON, HMAC, RSA, ECDSA, SAML, SWT, NET, RFC, PHP.

Ключевые слова

JSON, JWT, шифрование данных, дешифрование данных, алгоритмы шифрования, HMAC, RSA, SHA256, методы шифрования данных, SAML, SWT

Похожие статьи

Analyses JWT libraries for java platform | Статья в журнале «Техника.»

JSON, JWT, JOSE Header, Claims, Claims set, Issuer, Subject, Audience, Expiration Time, JWT libraries, java-jwt, jjwt, Nimbus-jose-jwt, jose4j.

JWT libraries implemented most common languages such as Java, PHP, C++, JavaScript, Haskell, Go, Scala, Ruby etc.

Системы сбора информации в аспекте кибербезопасности

В NXlog в дополнение к другим пользовательским форматам поддерживаются старый BSD Syslog и новый стандарт syslog IETF (RFC 3164 и RFC 5424–5426).

Система представляет данные в формате JSON и благодаря этому Fluentd может унифицировать все грани обработки...

Обсуждение

Социальные комментарии Cackle

Похожие статьи

Analyses JWT libraries for java platform | Статья в журнале «Техника.»

JSON, JWT, JOSE Header, Claims, Claims set, Issuer, Subject, Audience, Expiration Time, JWT libraries, java-jwt, jjwt, Nimbus-jose-jwt, jose4j.

JWT libraries implemented most common languages such as Java, PHP, C++, JavaScript, Haskell, Go, Scala, Ruby etc.

Системы сбора информации в аспекте кибербезопасности

В NXlog в дополнение к другим пользовательским форматам поддерживаются старый BSD Syslog и новый стандарт syslog IETF (RFC 3164 и RFC 5424–5426).

Система представляет данные в формате JSON и благодаря этому Fluentd может унифицировать все грани обработки...

Посетите сайты наших проектов

Задать вопрос