JWT yordamida JSON obyektlarni himoyalab uzatish
Автор: Садуллаев Нодир Дилшодович
Рубрика: Спецвыпуск
Опубликовано в Техника. Технологии. Инженерия №2 (4) апрель 2017 г.
Дата публикации: 04.05.2017
Статья просмотрена: 60 раз
Библиографическое описание:
Садуллаев, Н. Д. JWT yordamida JSON obyektlarni himoyalab uzatish / Н. Д. Садуллаев. — Текст : непосредственный // Техника. Технологии. Инженерия. — 2017. — № 2.1 (4.1). — С. 22-25. — URL: https://moluch.ru/th/8/archive/57/2331/ (дата обращения: 29.03.2024).
В этой статье, мы обсуждаем безопасную передачу информации между сторонами как объект 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
- 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 |
- 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.
- 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:
- “JSON Web Token” M. Jones, J. Bradley, N. Sakimura may 16, 2014
- “Spring Rest” Balaji Varanasi, Sudha Belida, 2015. Chapter 8.
- https://jwt.io/introduction/
- https://en.wikipedia.org/wiki/JSON_Web_Token
- https://auth0.com/learn/json-web-tokens/
Ключевые слова
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 может унифицировать все грани обработки...
Похожие статьи
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 может унифицировать все грани обработки...