コース目次 / 第0章
はじめに — トークンを、開けてみる前に
JWTがどこで使われるかと、このコースが自作トークンだけを扱うことを確認します。試食で見た「デコードできる」を出発点に、法と倫理ゲートに同意します。
JWT(JSON Web Token)は、いまの Web で広く使われている、署名付きのトークンです。ログイン後の「あなたが誰か」を、サーバとブラウザの間で運ぶのによく使われます。sec-http で見た Cookie の中身が JWT だった、ということもよくあります。
試食コース(sec-web-taste)で、JWT を一度だけ触りました——鍵がなくても中身が読めた。あのときの驚きが、このコースの出発点です。JWT を3つの部品に分解して、「なぜ読めるのか」「何が改ざんを止めているのか」「その守りは、どう甘くなるのか」を、順に確かめます。
このコースが触るのは、自作トークンだけ
法と倫理ゲート
手を動かす前に
このコースは攻撃の技術に触れます。実習してよい相手は、次の3つだけです。
- (a) 自分で作った練習用のやられ環境(このサイトが配る自作ターゲット)
- (b) あなた自身の許可された環境(自分の Thousand SKY・secret-notes-ctf など)
- (c) CTF 競技の中(規約の範囲で)
実在する第三者のシステムを許可なく触ることは、不正アクセス禁止法に触れます。 このゲートは、その線引きを毎回の入口で確かめるためのものです。詳しくは「セキュリティの法と倫理」へ。
このコースでは、トークンをデコードし、署名を検証し、ときには偽造します。強い操作です。だから、扱う相手をはっきりさせます。
このコースで作り・分解し・偽造するのは、すべてあなた自身がこの場で作ったトークンだけです。実在のサービスが発行したトークン——あなたが使っているサービスの Cookie に入っている本物の JWT——を偽造して使えば、それは不正アクセスです(法と倫理)。
ここで学ぶのは「なぜ危ういのか」という仕組みであって、他人のトークンを破る方法ではありません。仕組みが分かれば、あなたは安全に検証する側を作れるようになります。それがゴールです。
このコースの地図
デモは、あなたの手元で完結します(ブラウザのコンソールや、node のスクリプト)。ネットワークにも、他人にも触れません。
| 章 | 学ぶこと |
|---|---|
| 第1章 | 分解する — 3つの部品と、なぜ中身が読めるのか |
| 第2章 | 署名と検証 — 何が改ざんを止めているのか |
| 第3章 | 危うい実装 — alg:none・alg 混同・弱い鍵 |
準備ができたら、次の章へ。まずは、1本の JWT を3つに割るところからです。
こうなっていればOK
卒業まであと4章です。
この章はまだ完了していません。
保存できませんでした(プライベートブラウズ中かもしれません)。この端末に進捗は残りませんが、先へは進めます。