4

JWK の指紋 (別名拇印) を作成するための標準的な正規の方法はありますか?

私が読んでいたことから、標準では a のkid指定方法が定義されていないようですが、これは奇妙だと思います。私にとっては、ルックアップテーブルを必要とする値ではなく、決定論的な値にすることで、他の人が公開鍵を所有することで簡単にキー ID を再作成できるようにすることが最も効果的です。

SSH フィンガープリントと X.509 サムプリントが標準化されていることは承知していますが、JWK が使用されるすべての環境 (特にブラウザー) に適したソリューションではないように思えます。そのような (つまり、forge) は、大量のメモリ、帯域幅、および vm コンパイル時間を浪費します。

アップデート

正式には「指紋」ではなく「拇印」と呼ばれています。

4

2 に答える 2

6

RFC7638があなたの質問に答えると思います。

この RFC は、JWK でハッシュ値を計算する方法を説明しています。

実装は非常に簡単です。

  • 必要なパラメーターのみを保持します。RSA キーの場合: ktynおよびeEC キーの場合: crvktyxおよびy
  • これらのパラメーターを辞書順に並べ替えます: ektyおよびn
  • パラメータと値を計算して Json に変換します。{"e":"AQAB","kty":"RSA","n":"0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2 aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCi FV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65Y GjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n 91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_x BniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw"}
  • SHA-256 を使用してハッシュし、Base64 Url Safe にエンコードします。NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs
于 2017-03-03T23:25:10.500 に答える
0

真の標準があるとは思いませんが、このトピックはIETF メーリング アーカイブで議論されています。正規の JSON が一般的に良いアイデアであるかどうかによって、会話は少し横道に逸れたように見えましたが、標準的なフィンガープリンティング方法として妥当と思われる方法が 1 つあります。

  1. JWK からすべての「メタデータ」フィールドを削除します (この場合、「メタデータ」は不要なキーとして定義されます。つまり、「kty」と、JWA RFC-7518で定義された暗号化アルゴリズムのパラメータ以外のもの)。
  2. 削除された JWK を「正規の」JSON に変換します (キーを辞書順で並べ替え、先頭または末尾の空白をなくし、トークン間に空白を入れません)。
  3. 作成された JSON 文字列に対してダイジェストを計算します。

正規の JSON について私が認識している真の標準もありませんが、私が見たすべてのソースは、少なくとも上記の規則に同意しています (JWK に使用されるオブジェクトのタイプに関連する唯一の規則です)。 .

于 2017-03-03T23:26:44.053 に答える