Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Problemy z JSON Web Tokens ... i garść rozwiązań
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Marcin Hoppe
October 14, 2018
Technology
71
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Problemy z JSON Web Tokens ... i garść rozwiązań
Marcin Hoppe
October 14, 2018
More Decks by Marcin Hoppe
See All by Marcin Hoppe
Przepraszam, czy można?
marcinhoppe
0
36
Hacking OAuth 2.0
marcinhoppe
0
63
JSON Web Tokens. Problemy i rozwiązania
marcinhoppe
0
140
Other Decks in Technology
See All in Technology
The Knowledge Spine: A Machine-Executable Ontology for Governed Marketing Activation
vananth22
0
110
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
3
1.8k
AI de Idea
kawaguti
PRO
2
130
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
130
Reactの設計論
uhyo
24
14k
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
170
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
4.6k
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
470
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
960
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
510
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
200
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
470
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
We Have a Design System, Now What?
morganepeng
55
8.3k
The SEO Collaboration Effect
kristinabergwall1
1
570
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The Curse of the Amulet
leimatthew05
3
15k
It's Worth the Effort
3n
188
29k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Transcript
Problemy z JSON Web Tokens … i garść rozwiązań @marcin_hoppe
wym. dżot @marcin_hoppe RFC 7519
JSON Web Tokens @marcin_hoppe
JSON Object Signing and Encryption JSON Web Signature JSON Web
Encryption JSON Web Keys JSON Web Algorithms JSON Web Tokens @marcin_hoppe
@marcin_hoppe Bezpieczne ciasteczka cookie
@marcin_hoppe OpenID Connect IdP API id_token access_token
@marcin_hoppe FORMAT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ zdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4 gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJ SMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
@marcin_hoppe FORMAT {"alg": "HS256", "typ": "JWT" } {"sub": "1234567890", "iss":
"https://issuer.com", "aud": "https://myapi.com", "exp": 1516239022 } + podpis (HMAC)
https://jwt.io @marcin_hoppe NARZĘDZIE
@marcin_hoppe CRYPTO
@marcin_hoppe SZYFROWANIE
@marcin_hoppe Dystrybucja kluczy
@marcin_hoppe Dystrybucja kluczy IdP API id_token access_token
Jak sfałszować token? @marcin_hoppe
„alg”: „none” @marcin_hoppe PROBLEM 1
@marcin_hoppe PROBLEM 1 eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ zdWIiOiJtaTZ8MDA3IiwibmFtZSI6IkphbWVzIEJ vbmQiLCJsaWNlbnNlX3RvX2tpbGwiOnRydWV9.0w wpvqdLFxhio2zCXObMXDFX1NRZNT3A7_n0uRKdCJ Yw404KYpO4bvIX2IKag8aJZ25690xo54ekcqlvKK PnFoLqjjtZJdo43npESp9XaLDoEHXU8nZlDLEg2W pHSZQXe4tLEy677eIULzze2OJhGSsKYPpKdjcS4c
Zc1fWvqA8
@marcin_hoppe PROBLEM 1 eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJz dWIiOiJtaTZ8MDA3IiwibmFtZSI6IkphbWVzIEJv bmQiLCJsaWNlbnNlX3RvX2tpbGwiOnRydWV9.
@marcin_hoppe PROBLEM 1 eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJz dWIiOiJzcGVjdHJlfDAwMSIsIm5hbWUiOiJFcm5z dCBTdGF2cm8gQmxvZmVsZCJ9.
RS256 ⇒ HS256 @marcin_hoppe PROBLEM 2
@marcin_hoppe PROBLEM 2 {"alg": ”RS256", "typ": "JWT" } {"sub": "1234567890",
"iss": "https://issuer.com", "aud": "https://myapi.com", "exp": 1516239022 } + podpis RSA (klucz publiczny)
@marcin_hoppe PROBLEM 2 {"alg": ”HS256", "typ": "JWT" } {"sub": "1234567890",
"iss": "https://issuer.com", "aud": "https://myapi.com", "exp": 1516239022 } + podpis HMAC (klucz publiczny)
@marcin_hoppe PROBLEM 2 {"alg": ”HS256", "typ": "JWT" } {"sub": ”0000000001",
"iss": "https://issuer.com", "aud": "https://myapi.com", "exp": 1516239022 } + podpis HMAC (klucz publiczny)
Słabe klucze HMAC @marcin_hoppe PROBLEM 3
Klucze HMAC H4sł4 to nie klucze hashcat i słowniki Ten
sam klucz dla wszystkich Brak KDFów @marcin_hoppe PROBLEM 3
@marcin_hoppe Podmiana tokenów IdP #1 API #1 PROBLEM 4
@marcin_hoppe Podmiana tokenów IdP #1 API #2 PROBLEM 4
@marcin_hoppe PROBLEM 4 {"alg": ”RS256", "typ": "JWT" } {"sub": "1234567890",
"exp": 1516239022 } + podpis RSA (klucz publiczny)
@marcin_hoppe PROBLEM 4 {"alg": ”RS256", "typ": "JWT" } {"sub": "1234567890",
"iss": "https://idp1.com", "aud": "https://api1.com", "exp": 1516239022 } + podpis RSA (klucz publiczny)
Co robić? „alg”: „none” Wymuszać algorytm i klucz Ostrożnie z
HMAC Weryfikować claimy @marcin_hoppe
A może są inne formaty? @marcin_hoppe
Tokenowy zawrót głowy @marcin_hoppe
Platofrm Agnostic SEcurity TOkens Ciastka i tokeny Local: poufność i
integralność z kluczem symetrycznym Public: integralność z kluczem publicznym @marcin_hoppe
@marcin_hoppe CRYPTO
@marcin_hoppe FORMAT v2.local.97TTOvgwIxNGvV80XKiGZg_kD3tsXM_ -qB4dZGHOeN1cTkgQ4PnW8888l802W8d9AvEGnoN BY3BnqHORy8a5cC8aKpbA0En8XELw2yDk2f1sVOD yfnDbi6rEGMY3pSfCbLWMM2oHJxvlEl2XbQ
@marcin_hoppe FORMAT {"alg” : ”XChaCha20-Poly1305", ”nonce": 0000...0} {”data": ”this is
a signed message", ”exp” : "2019-01-01T00:00:00+00:00”} Stopka (AEAD): (pusty)
PASETO vs JWT Problem #1 Problem #2 Problem #3 Problem
#4 @marcin_hoppe
Wnioski wym. dżot Zastosowanie kryptografii jest trudne Są alternatywy @marcin_hoppe
Marcin Hoppe Engineering Manager Product Security Auth0 Security Working Group
Node.js Foundation marcin.hoppe @ acm.org twitter.com/Marcin_Hoppe
Ask me anything! @marcin_hoppe