implementing-jwt-signing-and-verification について
開発者やセキュリティ評価担当者向けの、JWT署名と検証を実装するスキルです。複数のアルゴリズム、クレーム検証、鍵のローテーションと一般的な攻撃への対策を扱います。
主な機能
- 01複数アルゴリズムでのJWT署名
- 02署名と標準クレームの検証
- 03有効期限とオーディエンスの確認
- 04アルゴリズム混同とnone攻撃への対策
- 05JWK Setsによる鍵ローテーション
- 06認証ミドルウェアの構築
活用シーン
- 01WebアプリケーションのJWT認証実装
- 02改ざん済みまたは期限切れトークンの拒否
- 03分散システムの鍵ローテーション設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill implementing-jwt-signing-and-verificationインストール後、Claude Code で/implementing-jwt-signing-and-verificationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
JWT の署名と検証の実装
概要
RFC 7519 で定義されている JSON Web Token(JWT)は、ウェブアプリケーションでの認証と認可に使用される、コンパクトで URL セーフなトークンです。このスキルでは、HMAC-SHA256、RSA-PSS、EdDSA アルゴリズムを使用した安全な JWT 署名の実装に加え、検証、トークンの有効期限、クレームの検証、および一般的な JWT 攻撃(アルゴリズムの混同、none アルゴリズム、鍵のインジェクション)への防御を扱います。
使用する場面
- 環境に JWT の署名と検証機能を実装、デプロイ、または設定するとき
- コンプライアンス要件に沿ったセキュリティ制御を確立するとき
- この領域のセキュリティアーキテクチャを構築または改善するとき
- この実装を必要とするセキュリティ評価を実施するとき
前提条件
- 暗号技術の概念とツールに関する知識
- 安全に実行できるテスト環境またはラボ環境へのアクセス
- 必要な依存関係をインストール済みの Python 3.8 以降
- テスト活動に必要な適切な許可
目標
- HS256、RS256、ES256、EdDSA による JWT 署名を実装する
- JWT 署名を検証し、標準クレームを検証する
- トークンの有効期限、not-before、有効対象の検証を実装する
- アルゴリズムの混同攻撃と none アルゴリズム攻撃を防御する
- JWK Set を使用した JWT 鍵のローテーションを実装する
- 完全な認証ミドルウェアを構築する
主な概念
JWT アルゴリズム
| アルゴリズム | 種類 | 鍵 | セキュリティレベル |
|---|---|---|---|
| HS256 | 対称(HMAC) | 共有シークレット | 128 ビット |
| RS256 | 非対称(RSA) | RSA 鍵ペア | 112 ビット |
| ES256 | 非対称(ECDSA) | P-256 鍵ペア | 128 ビット |
| EdDSA | 非対称(Ed25519) | Ed25519 鍵ペア | 128 ビット |
一般的な JWT 攻撃
- アルゴリズムの混同:RS256 から HS256 に切り替え、公開鍵を HMAC シークレットとして使用する
- none アルゴリズム:署名検証を回避するために alg=none を設定する
- 鍵のインジェクション:JWK ヘッダーに鍵を埋め込む
- 弱いシークレット:短い HMAC シークレットを総当たりで解読する
- トークンのリプレイ:有効期限のない有効なトークンを再利用する
セキュリティに関する考慮事項
- アルゴリズムヘッダーは必ず許可リストと照合して検証してください
- 本番環境では alg=none を決して受け入れないでください
- 分散システムでは非対称アルゴリズム(RS256、ES256)を使用してください
- 有効期限を短く設定してください(アクセストークンは 15 分)
- トークンの更新メカニズムを実装してください
- シークレットは安全に保管してください(ソースコード内には保管しないでください)
検証基準
- JWT の署名により、すべてのアルゴリズムで有効なトークンが生成される
- 署名検証により、改ざんされたトークンが拒否される
- 有効期限切れのトークンが拒否される
- アルゴリズムの混同攻撃が防止される
- none アルゴリズムが拒否される
- JWK 鍵のローテーションが正しく機能する
- クレーム検証により、必須クレームがすべて強制される
コメント
Markdown 対応