AWS KMS での HMAC キー
Hash-based Message Authentication Code (HMAC) KMS キーは、AWS KMS 内で HMAC を生成して検証するために使用される対称キーです。それぞれの HMAC KMS キーに関連する一意のキーマテリアルは、HMAC アルゴリズムが必要とするシークレットキーを提供します。HMAC KMS キーを GenerateMac および VerifyMac オペレーションで使用して、AWS KMS 内のデータの整合性と信頼性を検証することができます。
HMAC アルゴリズムは、暗号化ハッシュ関数と共有シークレットキーを組み合わせます。これらはメッセージとシークレットキー (HMAC KMS キーのキーマテリアルなど) を使用して、一意の固定サイズのコード (タグ) を返します。メッセージの文字が 1 字でも違う場合、またはシークレットキーが同一ではない場合、結果として得られるタグはまったく異なるものになります。HMAC は、シークレットキーをリクエストすることによって信頼性も提供します。シークレットキーがなければ、同一の HMAC タグを生成することは不可能です。HMAC は、デジタル署名のように機能しますが署名と検証の両方に単一のキーを使用するので、対称署名と呼ばれることもあります。
AWS KMS が使用する HMAC KMS キーと HMAC アルゴリズムは、RFC 2104
HMAC を使用して、JSON Web トークン (JWT)、トークン化されたクレジットカード情報、または送信されたパスワードなどのメッセージの信頼性を判断することができます。決定論的なキーを必要とするアプリケーションでは特に、セキュアなキー導出関数 (KDF) としても使用することもできます。
HMAC KMS キーは、ユーザーがキーに設定するアクセスコントロールに従って、キーマテリアルの生成と使用のすべてが AWS KMS で行われることから、アプリケーションソフトウェアからの HMAC よりも多くのメリットを提供します。
ヒント
ベストプラクティスでは、HMAC を含めたどの署名メカニズムについても、その有効時間を制限することが推奨されています。そうすることで、アクターが有効性を何度も確立したり、メッセージが置き換えらえた後も長期間有効性を確立したりする攻撃が阻止されます。HMAC タグにタイムスタンプは含まれませんが、トークンまたはメッセージにタイムスタンプを含めて、HMAC を更新するタイミングを検知できるようにすることが可能です。
- サポートされている暗号化オペレーション
-
HMAC KMS キーは、
GenerateMacおよびVerifyMac暗号化オペレーションのみをサポートします。HMAC KMS キーを使用してデータの暗号化やメッセージの署名を行ったり、HMAC オペレーションで他のタイプの KMS キーを使用したりすることはできません。GenerateMacオペレーションを使用するときは、ユーザーが最大 4,096 バイトのメッセージ、HMAC KMS キー、および HMAC キー仕様との互換性がある MAC アルゴリズムを指定して、GenerateMacが HMAC タグを計算します。HMAC タグを検証するには、HMAC タグ、同一のメッセージ、HMAC KMS キー、および 元の HMAC タグを計算するためにGenerateMacが使用した MAC アルゴリズムを提供する必要があります。VerifyMacオペレーションは HMAC タグを計算し、それが提供された HMAC タグと同一であることを検証します。入力と計算された HMAC タグが同一ではない場合は、検証が失敗します。HMAC KMS キーは自動キーローテーションをサポートしていないため、カスタムキーストアで HMAC KMS キーを作成することはできません。
AWS のサービス内のデータを暗号化するために KMS キーを作成している場合は、対称暗号化キーを使用します。HMAC KMS キーを使用することはできません。
- リージョン
-
HMAC KMS キーは、AWS KMS がサポートするすべての AWS リージョン でサポートされています。
詳細
-
HMAC KMS キーを作成するには、「HMAC KMS キーを作成する」を参照してください。
-
マルチリージョンの HMAC KMS キーを作成するには、「AWS KMS のマルチリージョンキー」を参照してください。
-
AWS KMS コンソールが HMAC KMS キーに設定するデフォルトのキーポリシーの違いを調べるには、「暗号化オペレーションで KMS キーを使用することをキーユーザーに許可する」を参照してください。
-
HMAC KMS キーの識別と表示については、「HMAC KMS キーの特定」を参照してください。
-
JSON Web トークンを作成するための HMAC の使用について学ぶには、AWS セキュリティブログの「How to protect HMACs inside AWS KMS
」を参照してください。 -
ポッドキャストを聴く: Introducing HMACs for AWS Key Management Service
(公式 AWS ポッドキャスト)。