JWT シークレットはどれくらいの長さが必要?
迷ったときの目安と、長さよりも大切なポイントをまとめたガイドです。
要点
迷ったら 32 バイト以上のランダムな値を基準にしてください。文字数そのものより、十分な乱数と推測しにくさが重要です。
実務での目安
多くの HMAC ベースの JWT 構成では、32 バイト程度のランダム値が実用的な基準になります。余裕を持たせたい場合は 64 バイトでも問題ありません。大事なのは、長さよりも「暗号学的に安全な乱数」で作ることです。
openssl rand -base64 32短すぎる secret のリスク
短い値や単語ベースの値は、総当たりや推測に弱くなります。特に辞書語、パターン化した文字列、再利用した値は避けてください。
- 辞書語だけのシークレットは避ける
- サービス名や日付を入れない
- 同じ値を複数用途で使い回さない
運用のコツ
開発・検証・本番で secret を分け、漏えい時にはローテーションできるようにしておくと安全です。JWT を長時間有効にする場合は、ローテーションの手順も先に決めておくと安心です。
関連ガイド