web-dev-qa-db-ja.com

JSON Web Signature(JWS)ヘッダーでjku、kid、x5uを使用しても安全ですか?

JSON Web Signature(JWS)でjkukidx5uのようなヘッダーパラメーターが何を取得するのかわかりません。

秘密鍵/公開鍵に対してコンテンツの整合性を検証する必要があるため、jkukidx5uをJWSヘッダーに残しても安全ですか?誰かがこれらのセクションを独自のものに置き換えて、改ざんされたコンテンツに対する彼の鍵で新しい署名に署名する可能性があります。それでは、このような場合にどう対処するのでしょうか。

4
whuala

これらのフィールドは、コンポーネントがチケットを検証して、署名に使用されるキーを特定できるようにするためのものです。

  • jkuは、署名の生成に使用される公開鍵を参照するURIです。 RFC7517 形式に従う必要があります。トークンを検証するエンティティは、その署名鍵が信頼できるかどうかを確認する責任があります。
  • kidはキーの識別であり、特定の対象者のコンテキストでのみ有効です。アプリケーションのコンテキストでは、そのパラメーターを使用してキーを識別する方法を定義する必要があります。署名用のx509証明書ユーザーのfingerpring、証明書のシリアル番号、テーブル内の行への参照、JSONファイルに保存されたHMACシークレットのID、または署名者によって定義されたものは何でも、XMLドキュメント内のXPath。
  • x5uには、トークンの署名に使用されたx509証明書へのURLを含める必要があります。その証明書は [〜#〜] pem [〜#〜] 形式である必要があります。

通常、どのトークンにもこれらのパラメーターの1つしかありません(結局のところ、署名鍵は1つしか存在できません)が、異なる方法で同じ鍵にアクセスできるようにすることは不可能ではありません(つまり、同じキーを指すjkuヘッダーとx5uヘッダーの両方がありますが、そのようなあいまいさを避けるようにしてください)。

定義により、誰かがヘッダーを変更してチケットに再度署名した場合結果は同じトークンではないため、そのことを心配する必要はありません。適切に検証できないトークンは安全に拒否できます。

3
Stephane