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 を更新するタイミングを検知できるようにすることが可能です。
承認されたユーザーは、AWS アカウント内でHMAC KMS キーを作成、管理、および使用できます。これには、キーの有効化と無効化、エイリアスとタグの設定と変更、および HMAC KMS キーの削除のスケジュールが含まれます。キーポリシー、IAM ポリシー、およびグラントを使用して、KMS キーへのアクセスを制御することもできます。AWS CloudTrail ログで、AWS 内で HMAC KMS キーを使用または管理するすべてのオペレーションを監査することができます。インポートされたキーマテリアルで 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 KMS がサポートするすべての AWS リージョン でサポートされています。
詳細はこちら
-
KMS キーのタイプを選択する方法については、「KMS キータイプの選択」を参照してください。
-
各タイプの KMS キーでサポートされる AWS KMS API オペレーションを比較する表については、「キータイプリファレンス」を参照してください。
-
マルチリージョン HMAC KMS キーの作成については、「AWS KMS のマルチリージョンキー」を参照してください。
-
AWS KMS コンソールが HMAC KMS キーに設定するデフォルトのキーポリシーの違いを調べるには、「AWS サービスで KMS キーを使用することをキーユーザーに許可する」を参照してください。
-
HMAC KMS キーの料金については、「AWS Key Management Service の料金
」を参照してください。 -
HMAC KMS キーに適用されるクォータについては、「リソースクォータ」および「クォータのリクエスト」を参照してください。
-
HMAC KMS キーの削除については、「AWS KMS keys を削除する」を参照してください。
-
JSON Web トークンを作成するための HMAC の使用について学ぶには、AWS セキュリティブログの「How to protect HMACs inside AWS KMS
」( 内で HMAC を保護する方法) を参照してください。 -
ポッドキャストを聴く: AWS 公式ポッドキャストにてAWS Key Management Service が HMAC を導入
。
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 |