Q&A
解決済
1回答
1146閲覧
総合スコア94
JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。
0グッド
0クリップ
投稿2019/08/12 05:40
0
JWTの構造は、ヘッダー、ペイロード、シグネチャーで、ヘッダー+ペイロードをそれぞれbase64urlエンコードしヘッダーのアルゴリズムで計算した署名をシグネチャとして結合していると理解しています。
そこで、途中で第三者がペイロードを改ざんし、シグネチャを再計算してをトークンを生成し送付すると、改ざんが可能な気がしますが、そこら辺の改ざん検知の担保ってどの様な仕組みが仕様化されているのでしょか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答1件
ベストアンサー
基本的には「署名」の計算には「鍵」が必要です。 JWTの実際の署名の仕組みはよくはしりませんが、簡単な例で説明すると
■ 署名 data = "改ざんされたくない情報" secret_key = "ひみつの鍵" signature = Hash(secret_key + data)
data = "改ざんされたくない情報"
secret_key = "ひみつの鍵"
signature = Hash(secret_key + data)
として、 (data, signature) を公開する
(data, signature)
■ 検証 (data, signature) のペアが正しいか(自分が署名したものか)を検証するには、 Hash(secret_key + data) == signature を調べれば良い、という感じになります。
Hash(secret_key + data) == signature
第三者には secret_key がわからないので、 改ざんしたデータに対して正しい署名が計算できない、という理屈になります。
secret_key
投稿2019/08/12 06:18
総合スコア948
回答へのコメント
2019/08/13 10:49
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
JWTの改ざん検知に関して
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/13 10:49