web-dev-qa-db-ja.com

Amazon AWS KMS-一般的かつJWTでの署名の概念

Amazon AWS KMS(キー管理システム)を調べます。

Amazon AWS APIを介して公開されるメソッドは暗号化と復号化のみを行うため、混乱しました( https://docs.aws.Amazon.com/kms/latest/APIReference/Welcome.html )。ただし、データ(特にJWT)に署名したいと思います。

私の質問:

1)署名はコンテンツのハッシュのかろうじて暗号化ですか?

2)JWTの場合、JWTのコンテンツをハッシュして暗号化して署名フィールドに入力すると、正しい署名になりますか?

おかげで、

1
dev

KMS + JWTは混乱しやすく、簡単に誤用されます。この質問は語用論に関するものなので、以下の要約の回答は喜んでそれらを拡張しますが、詳細は複雑です。

1) Is signing barely encryption of the hash of the content?

そうではない。

2) In JWT case, if I hash the content of JWT and encrypt it and 
   put it in signature field, will it be correct signing?

ならない。

認証トークンにJWTを使用している場合は、次のような短いバージョンが考えられます。

  • KMSを使用して、暗号化形式とプレーンテキスト形式の両方で256ビットのデータキーを生成します。 https://docs.aws.Amazon.com/kms/latest/APIReference/API_GenerateDataKey.html
  • 暗号化された形式のデータキーを、作成されたCMKキーIDと共に、データベースまたはアプリケーション構成に保存します。
  • 言語プラットフォームの優先JWTライブラリで「秘密」として256ビットのプレーンテキストデータキーを使用して、JWTの署名と検証を行います。
  • アプリケーションが再起動したら、データベースから暗号化されたデータキーを取得し、KMS Decryptを呼び出してプレーンテキストバージョンのデータキーを取得し、上記のようにJWTの署名と検証に使用します。

お役に立てば幸いです。

1
Jonah Benton