JWT yordamida JSON obyektlarni himoyalab uzatish
Автор: Садуллаев Нодир Дилшодович
Рубрика: Спецвыпуск
Опубликовано в Техника. Технологии. Инженерия №2 (4) апрель 2017 г.
Дата публикации: 04.05.2017
Статья просмотрена: 67 раз
Библиографическое описание:
Садуллаев, Н. Д. JWT yordamida JSON obyektlarni himoyalab uzatish / Н. Д. Садуллаев. — Текст : непосредственный // Техника. Технологии. Инженерия. — 2017. — № 2.1 (4.1). — С. 22-25. — URL: https://moluch.ru/th/8/archive/57/2331/ (дата обращения: 17.12.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Похожие статьи
Криптоанализ и реализация потокового шифра RC4
Статья посвящена алгоритму RC4, который является одним из популярных алгоритмов шифрования в сетевых протоколах. В статье описываются основные принципы работы алгоритма и его реализации. Однако, статья также обращает внимание на уязвимости алгоритма ...
Инструменты для анализа данных: сравнение Python, R и других популярных платформ
В статье автор сравнил различные языки программирование такие как «Python», «R», «Julia», «SAS» и «MATLAB» и выявил их характерные особенности, на основе которых каждый сможет для себя решить с каким языком программирования он захочет работать.
Роль хэширования в работе «белого хакера»
Алгоритмы защиты информации берут свое начало в Римской империи, когда предпринимались первые попытки зашифровать информацию, чтобы она не попала к посторонним людям. Однако любой человек, знающий путь составления шифра мог получить засекреченную инф...
Обзор принципа доказательства без разглашения и протокола SRP
В данной статье автор стремится исследовать принцип доказательства без разглашения и протокола SRP с целью их анализа и применения в современных информационных системах. Статья описывает принцип доказательства без разглашения, который был разработан...
Определение кратчайшего пути между двумя объектами с помощью программы QGIS с использованием модуля Road Graph
В этой статье представлена информация о модуле Road Graph в программе QGIS и пример того, как этот модуль работает. Модуль Road Graph работает на алгоритме Дейкстры, определяющем кратчайшие расстояния между двумя объектами (адресами).
Прозрачное шифрование данных (TDE)
Как можно использовать прозрачное шифрование данных(TDE) и развить этот метод.
Анализ влияния использования протоколов MPLS и RSVP на надежность сети NGN
В статье проведено аналитическое исследование работы протоколов MPLS и RSVP в сети NGN. Показано эффективное использование протоколов MPLS на уровне ядра и RSVP на уровне доступа сети NGN. Получены графики зависимости качества обслуживания по парамет...
P2P-сеть в Ethereum
Цель этой статьи — объяснить реализацию концепции Р2Р-сетей в рамках Ethereum. Технология P2P имеет потенциал для устранения недостатков централизованных систем за счет использования богатых ресурсов конечных устройств, и с 1990-х годов она была внед...
Модернизация и дополнение IT-архитектуры предприятия посредством шины данных
В статье автор рассматривает шину данных как ключевой элемент современной ИТ-архитектуры, обеспечивающий эффективное взаимодействие между различными системами предприятия. Шина данных упрощает процесс интеграции и позволяет централизованно управлять ...
Обзор различных средств фаззинга как инструментов динамического анализа программного обеспечения
В данной статье описывается суть динамического анализа ПО на основе инструментов фаззинга, обзор и сценарии применения различных инструментов, реализующих данный подход. Все инструменты, представленные в статье, используются в цикле проверки ПО обесп...
Похожие статьи
Криптоанализ и реализация потокового шифра RC4
Статья посвящена алгоритму RC4, который является одним из популярных алгоритмов шифрования в сетевых протоколах. В статье описываются основные принципы работы алгоритма и его реализации. Однако, статья также обращает внимание на уязвимости алгоритма ...
Инструменты для анализа данных: сравнение Python, R и других популярных платформ
В статье автор сравнил различные языки программирование такие как «Python», «R», «Julia», «SAS» и «MATLAB» и выявил их характерные особенности, на основе которых каждый сможет для себя решить с каким языком программирования он захочет работать.
Роль хэширования в работе «белого хакера»
Алгоритмы защиты информации берут свое начало в Римской империи, когда предпринимались первые попытки зашифровать информацию, чтобы она не попала к посторонним людям. Однако любой человек, знающий путь составления шифра мог получить засекреченную инф...
Обзор принципа доказательства без разглашения и протокола SRP
В данной статье автор стремится исследовать принцип доказательства без разглашения и протокола SRP с целью их анализа и применения в современных информационных системах. Статья описывает принцип доказательства без разглашения, который был разработан...
Определение кратчайшего пути между двумя объектами с помощью программы QGIS с использованием модуля Road Graph
В этой статье представлена информация о модуле Road Graph в программе QGIS и пример того, как этот модуль работает. Модуль Road Graph работает на алгоритме Дейкстры, определяющем кратчайшие расстояния между двумя объектами (адресами).
Прозрачное шифрование данных (TDE)
Как можно использовать прозрачное шифрование данных(TDE) и развить этот метод.
Анализ влияния использования протоколов MPLS и RSVP на надежность сети NGN
В статье проведено аналитическое исследование работы протоколов MPLS и RSVP в сети NGN. Показано эффективное использование протоколов MPLS на уровне ядра и RSVP на уровне доступа сети NGN. Получены графики зависимости качества обслуживания по парамет...
P2P-сеть в Ethereum
Цель этой статьи — объяснить реализацию концепции Р2Р-сетей в рамках Ethereum. Технология P2P имеет потенциал для устранения недостатков централизованных систем за счет использования богатых ресурсов конечных устройств, и с 1990-х годов она была внед...
Модернизация и дополнение IT-архитектуры предприятия посредством шины данных
В статье автор рассматривает шину данных как ключевой элемент современной ИТ-архитектуры, обеспечивающий эффективное взаимодействие между различными системами предприятия. Шина данных упрощает процесс интеграции и позволяет централизованно управлять ...
Обзор различных средств фаззинга как инструментов динамического анализа программного обеспечения
В данной статье описывается суть динамического анализа ПО на основе инструментов фаззинга, обзор и сценарии применения различных инструментов, реализующих данный подход. Все инструменты, представленные в статье, используются в цикле проверки ПО обесп...