【要点】
◎JSON形式のデータをURLセーフでコンパクトな形式にしたもの
「Base64エンコードされたヘッダ」.「Base64エンコードされた JSON の中身」.「電子署名」
【規格】
◆RFC7519
https://datatracker.ietf.org/doc/html/rfc7519
https://tex2e.github.io/rfc-translater/html/rfc7519.html
【変換】
◆JWT.io
https://jwt.io/
【ツール】
◆PyJWT による JWT の生成と検証 (Hakky)
https://book.st-hakky.com/docs/pyjwt-intro/
【概要】
■パート
【概要】
項目 |
内容 |
備考 |
---|---|---|
Header | 電子署名がどのような方法で行われるかの情報が格納 | base64でデコード |
PAYLOAD | 送りたい情報本体(Claim) | base64でエンコードしてピリオドで連結 |
VERIFY SIGNATURE | base64でエンコードしピリオド(.)で繋いだヘッダーとペイロードを署名アルゴリズムでハッシュ化したもの | ピリオドで連結 |
■Header
予約済項目名 | 役割 | 備考 |
---|---|---|
alg | 署名アルゴリズム。HS256 など | 必須 |
typ | トークのタイプ。JWT 指定が推奨 |
■署名検証回避方法
alg | 備考 |
---|---|
none | |
HMAC-SHA |
■Registered Claim Names
claim |
detail |
---|---|
iss | Issuer JWTの発行者識別子 |
aud | Audience 誰を対象に発行されたか |
exp | expiration time 期限を示す |
iat | Issued at 発行された日時 |
■攻撃方法
項目 | 内容 |
---|---|
アルゴリズムをnoneにする | "alg": "none" |
【ブログ】
◆JWT について調べた内容をまとめました。 (Qiita, 2017/10/15)
https://qiita.com/t-toyota/items/8d0ffb265845ab8cc87c
⇒ https://security-log.hatenablog.com/entry/2017/10/15/000000
◆攻撃して学ぶJWT【ハンズオンあり】 (Money Forward Developers Blog, 2020/09/15)
https://moneyforward-dev.jp/entry/2020/09/15/jwt/
⇒ https://security-log.hatenablog.com/entry/2020/09/15/000000
◆CTFのWebセキュリティにおける認証認可まわりまとめ(Cookie/Session、Authentication/Authorization、JWT、IDOR, TOTP, OAuth) (はまやんはまやんはまやん, 2021/12/03)
https://blog.hamayanhamayan.com/entry/2021/12/03/213402
⇒ https://tt-ctf.hatenablog.jp/entry/2021/12/03/000000 [TT_CTF Blog]
◆基本から理解するJWTとJWT認証の仕組み (豆蔵, 2022/12/08)
https://developer.mamezou-tech.com/blogs/2022/12/08/jwt-auth/
⇒ https://security-log.hatenablog.com/entry/2022/12/08/000000
【公開情報】
◆PyJWT による JWT の生成と検証 (Hakky, 2023/09/12)
https://book.st-hakky.com/docs/pyjwt-intro/
⇒ https://security-log.hatenablog.com/entry/2023/09/12/000000_1
【資料】
◆JWT ハンドブック (Sebastian Peyrott(Auth0), 2018)
https://assets.ctfassets.net/2ntc334xpx65/5HColfm15cUhMmDQnupNzd/30d5913d94e79462043f6d8e3f557351/jwt-handbook-jp.pdf
⇒ https://security-log.hatenablog.com/entry/2018/12/31/000000
【検索】
google: JWT
google: JSON Web Token
google:news: JWT
google:news: JSON Web Token
google: site:virustotal.com JWT
google: site:virustotal.com JSON Web Token
google: site:github.com JWT
google: site:github.com JSON Web Token
■Bing
https://www.bing.com/search?q=JWT
https://www.bing.com/search?q=JSON Web Token
https://www.bing.com/news/search?q=JWT
https://www.bing.com/news/search?q=JSON Web Token
https://twitter.com/search?q=%23JWT
https://twitter.com/search?q=%23JSON Web Token
https://twitter.com/hashtag/JWT
https://twitter.com/hashtag/JSON Web Token
【関連まとめ記事】
◆認証 (まとめ)
https://security-log.hatenablog.com/entry/Certification