AWS KMS での HMAC キー - AWS Key Management Service

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 は対称署名と呼ばれることもあります。これらはデジタル署名のように機能しますが、署名と検証の両方に単一のキーを使用するからです。

HMAC は通常、JSON Web トークン (JWT)、トークン化されたクレジットカード情報、または送信されたパスワードなどのメッセージの信頼性を判断するために使用されます。決定論的なキーを必要とするアプリケーションでは特に、セキュアなキー導出関数 (KDF) としても使用することもできます。

HMAC KMS キーは、ユーザーがキーに設定するアクセスコントロールに従って、キーマテリアルの生成と使用のすべてが AWS KMS で行われることから、アプリケーションソフトウェアからの HMAC よりも多くのメリットを提供します。AWS KMS が使用する HMAC KMS キーと HMAC アルゴリズムは、RFC 2104 で定義されている業界標準に準拠しています。HMAC KMS キーは、FIPS 140-2 Cryptographic Module Validation Program の認定を受けた AWS KMS ハードウェアセキュティモジュールで生成されており (中国 (北京) および中国 (寧夏) リージョンを除く)、暗号化されずに AWS KMS 外で使用されることはありません。HMAC KMS キーを使用するには、AWS KMS を呼び出す必要があります。

ヒント

ベストプラクティスでは、HMAC を含めたどの署名メカニズムについても、その有効時間を制限することが推奨されています。そうすることで、アクターが有効性を何度も確立したり、メッセージが置き換えらえた後も長期間有効性を確立したりする攻撃が阻止されます。HMAC タグにタイムスタンプは含まれませんが、トークンまたはメッセージにタイムスタンプを含めて、HMAC を更新するタイミングを検知できるようにすることが可能です。

HMAC KMS キーは、AWS アカウント内で作成、管理、および使用することができます。これには、キーの有効化と無効化エイリアスタグの設定と変更、および HMAC KMS キーの削除のスケジュールが含まれます。キーポリシーIAM ポリシー、および権限を使用して、KMS キーへのアクセスを制御することもできます。AWS CloudTrail ログで、AWS 内で HMAC KMS キーを使用または管理するすべてのオペレーションを監査することができます。また、複数のAWS リージョンで同じ HMAC KMS キーのコピーのように機能する HMAC マルチリージョン KMS キーを作成することも可能です。

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 リージョンのみでサポートされています。

  • 米国東部 (オハイオ) (us-east-2)

  • 米国東部 (バージニア北部) (us-east-1)

  • 米国西部 (オレゴン) (us-west-2)

  • アジアパシフィック (大阪) (ap-northeast-3)

  • 欧州 (ミラノ) (eu-south-1)

  • 欧州 (パリ) (eu-west-3)

  • 欧州 (ストックホルム) (eu-north-1)

  • 中東 (バーレーン) (me-south-1)

  • 南米 (サンパウロ) (sa-east-1)

詳細はこちら

HMAC KMS キーの主な仕様

AWS KMS は、さまざまな長さの対称 HMAC キーをサポートします。選択するキー仕様は、セキュリティ、規制、またはビジネス要件に応じて異なります。キーの長さによって、GenerateMac および VerifyMac オペレーションで使用される MAC アルゴリズムが決まります。一般に、キーが長いほど安全性が高くなります。ユースケースにとって実用的な最も長いキーを使用してください。

HMAC キーの仕様 MAC アルゴリズム
HMAC_224 HMAC_SHA_224
HMAC_256 HMAC_SHA_256
HMAC_384 HMAC_SHA_384
HMAC_512 HMAC_SHA_512