JSON Web Tokenの形式は次のとおりです。
encoded(header)。encrypted(payload)。signature with a secret(たとえば、sha256を使用して署名します)。
Hmac sha256(HS256)で選択されたJWTの場合、シークレットが長くなく、複雑でもない場合(例: "abc123"):
このトークン署名を総当たりにすることは可能ですか? (間違った署名上限を考慮しないでください)
Sh256をブルートフォースするのは難しいですか?
JWTで、SH256の秘密を破る=署名を正常に複製しますか? (追加の暗号化を考慮しないでください)
はい。 秘密鍵をクラックする をSHA256署名で使用すると、任意のJWTを自分で作成できます。署名はSHA256 HMACです。 三 2つのSHA256操作なので、 プレーンなSHA256のクラッキング の2倍以上の速度になります。一般的なハードウェアでは、毎秒10⁹試行の順序で実行できます。
質問1:このトークン署名を総当たりにすることは可能ですか?
理論的には、はい。 [〜#〜] but [〜#〜]ブルートフォースを試みる前に考慮すべき2つのこと:
最初:すべてのWebトークンのシークレットは変更されますか?はいの場合、クラッキングの取り組みはその1つのトークンに適しています。トークンには非常に貴重な情報が含まれているため、クラックに数日または数年分の計算能力を費やすことができますか?これを自分で聞いてください。
2番目: "encoded(header).encoded(payload).signature with a secret"?無制限の処理能力または無制限の金額にアクセスできる場合は、この post を読んで、どれほど高価かを理解することをお勧めします。ハッシュを解読することです。
質問2:sha256をブルートフォースする難しさはどうですか?
質問1の回答の2番目の考慮事項を参照してください。
質問3:JWTで、sha256の秘密を破る=署名を正常に複製しますか?
私はJWTのエキスパートではありません。ただし、上記の質問への回答が許容できると思われる場合は、その概念を理解しています。したがって、質問に答えるには、質問1の回答の最初の考慮事項に戻って参照してください。すべてのWebトークンのシークレットが変更された場合、署名を複製してトランザクションを再生することはできません。番号が付けられたシーケンスなど、秘密の変更を予測するのが簡単な場合を除きます。シークレットが一定のままであれば、はい、署名を複製できます。