[解決済み] JWTは解読できても、安全性はどうなのか?
質問
を取得した場合 JWT ペイロードをデコードすることができますが、それはどのように安全なのでしょうか?ヘッダーからトークンを取り出し、ペイロードのユーザー情報をデコードして変更し、同じように正しくエンコードされたシークレットを付けて送り返すことはできないのでしょうか?
セキュアでなければならないことは分かっているのですが、どうしてもその技術を理解したいのです。何が足りないのでしょうか?
解決方法は?
JWTは、署名されたもの、暗号化されたもの、またはその両方があります。トークンが署名されているが暗号化されていない場合、誰でもその内容を読むことができますが、秘密鍵を知らないときはそれを変更することができません。さもなければ、受信者は署名が一致しなくなったことに気づくでしょう。
コメントへの回答 私はあなたのコメントを正しく理解しているかどうかわからない。念のため:デジタル署名を知っていて、理解していますか?一つのバリエーション(HMAC、これは対称型ですが、他にもたくさんあります)を簡単に説明します。
アリスがボブにJWTを送りたい場合を考えてみましょう。二人はある共有の秘密を知っています。マロリーはその秘密を知らないが、干渉してJWTを変えたいと考えている。それを防ぐために、アリスは次の計算をします
Hash(payload + secret)
を作成し、これを署名として付加する。
メッセージを受信したとき、Bobもまた
Hash(payload + secret)
を使用して、署名が一致するかどうかをチェックします。
しかし、Malloryがコンテンツの何かを変更した場合、彼女は一致する署名(これは、以下のようになります)を計算することができません。
Hash(newContent + secret)
). 彼女はその秘密を知らないし、それを知る術もない。
つまり、もし彼女が何かを変更したら、署名はもう一致しなくなり、ボブは単純にもうJWTを受け入れないでしょう。
例えば、私が別の人に次のようなメッセージを送ったとしましょう。
{"id":1}
で署名し
Hash(content + secret)
. (+はここでは単なる連結)。SHA256 Hash関数を使い、得られた署名は以下の通りです。
330e7b0775561c6e95797d4dd306a150046e239986f0a1373230fda0235bda8c
. 今度はあなたの番です。Malloryの役になって、メッセージに署名してみてください。
{"id":2}
. 私がどの秘密を使ったか分からないので、できません。もし受信者がその秘密を知っていると仮定すれば、彼はどんなメッセージの署名も計算し、それが正しいかどうかをチェックすることができます。
関連
-
GTA3 オートフルブラッド C++
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?
-
[解決済み] HTTPSヘッダーは暗号化されていますか?
-
[解決済み] なぜCSRF防止トークンをクッキーに入れるのが一般的なのですか?
-
[解決済み] ライブラリを使用せずに、javascriptでjwtトークンをデコードするにはどうすればよいですか?
-
[解決済み】JWTリフレッシュトークンフロー
-
[解決済み】PostmanでヘッダーにJWTトークンを入れて送信する。
-
[解決済み】JWTをブラウザに保存する場所は?CSRFから保護する方法は?
-
[解決済み] JWTはlocalStorageとcookieのどちらに保存するべきか?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 正規のコードに0x90(NOP)シーケンスが含まれる場合
-
[解決済み] ClientとUser-Agentの違い
-
[解決済み] HTTPSヘッダーは暗号化されていますか?
-
[解決済み] bcryptはどうして塩を内蔵しているのですか?
-
[解決済み] JWTは解読できても、安全性はどうなのか?
-
[解決済み] HTTPクッキーはポート指定ですか?
-
[解決済み] reCaptchaはクラックされましたか?[クローズド]
-
[解決済み] ベストプラクティス。パスワードのソルティングとペパリング?
-
[解決済み] パスワードのハッシュ化と暗号化の違いについて
-
[解決済み] チェックボックスリキャプチャの仕組みと使い方を教えてください。