コース目次 / 第0章

はじめに — トークンを、開けてみる前に

JWTがどこで使われるかと、このコースが自作トークンだけを扱うことを確認します。試食で見た「デコードできる」を出発点に、法と倫理ゲートに同意します。

第0章 / 全5章目安 約4分この章のゴール: 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章です。

この章はまだ完了していません。