web-dev-qa-db-ja.com

JWTキー-非対称および対称

対称鍵と非対称鍵の違いを理解しています。キーが署名の計算と検証に使用されることを理解しています。しかし、もう少し深く掘り下げて、オンラインで見つけるのに苦労していることをもう少し理解したいと思います。

内容を確認するために消費者に鍵が渡されていますか?対称鍵が使用されている場合、それによって消費者はJWTの内容を変更できるようになりませんか?

非対称鍵を使用する場合、署名は秘密鍵または公開鍵で計算されますか?消費者には公開鍵/秘密鍵が与えられていますか?

15
n00b

対称鍵はピアツーピアでのみ使用されるため、受信者が自分と送信者だけが共有鍵を持っている(そして彼が意図された受信者である)JWTを変更することは無意味です。

非対称調号(JWTおよび一般)は、送信者が秘密鍵を使用して生成し、受信者が公開鍵を使用して検証します。コンシューマー/レシーバーには、帯域外で発生する公開鍵のみが与えられます(つまり、保護されたデータの交換に使用するものとは別の通信手段を介して)。

19
Hans Z.

送信者の秘密鍵で署名された非対称JWT(JWS)を使用すると、トークンの受信者は基本的に、base64でエンコードされているクリアテキスト以外のペイロード(ヘッダー/クレーム)を受信します。これが、Secured Socket Layer(SSL)環境で送信する必要がある理由です。受信した署名を検証するために、受信者は公開鍵を使用して、受信したペイロードの署名を再計算します。受信署名と計算署名の2つの署名が一致しない場合、ペイロードは信頼できません-無効です。したがって、このような非対称JWSはnot含めるのに適した方法です。ペイロードのコンテンツが暗号化されていないため、社会保障番号などの機密性の高い「クレーム」。このような機密データをJWTに含めると、Json Web Token EncryptedJWEを使用できます。 JWEでは、ペイロード全体が暗号化されます。

1
user3594395

JWTのペイロードを暗号化する人は誰もいません。署名がすべてです! RSAまたはECDSA(両方とも非対称)署名は、puiblicキーを使用するだけで検証できます。対称署名署名の場合は、auth-serviceが必要です。

最も一般的なJWT署名アルゴリズム:

HMAC + SHA256
RSASSA-PKCS1-v1_5 + SHA256
ECDSA + P-256 + SHA256

もっと見る https://tools.ietf.org/html/rfc7518#section-

0
simUser