翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
データキーの生成
承認されたユーザーであれば GenerateDataKey API (および関連 API) を使用して、特定のタイプのデータキーまたは任意の長さのランダムキーをリクエストできます。このトピックでは、この API オペレーションの簡略化されたビューを提供します。詳細については、AWS Key Management Service API リファレンスの GenerateDataKey API を参照してください。
次に示すのは、GenerateDataKey
のリクエスト構文です。
{ “EncryptionContext”: {“string” : “string”}, “GrantTokens”: [“string”], “KeyId”: “string”, “NumberOfBytes”: “number” }
リクエストは以下のデータを JSON 形式で受け入れます。
- KeyId
-
データキーの暗号化に使用するキーのキー識別子です。この値は、対称暗号化 KMS キーを識別する必要があります。
このパラメータは必須です。
- NumberOfBytes
-
生成するバイト数を含む整数値です。このパラメータは必須です。
発信者は、
KeySpec
またはNumberOfBytes
を指定する必要があります。両方を指定することはできません。 - EncryptionContext
-
(オプション) キーを使用する暗号化および復号化のプロセスで認証する追加データを含む名前と値のペアです。
- GrantTokens
-
(オプション) キーを生成または使用するアクセス許可を提供する権限を示す、許可トークンのリストです。許可や許可トークンの詳細については、AWS Key Management Service デベロッパーガイドの「Authentication and access control for AWS KMS」を参照してください。
コマンドを認証すると、 は AWS KMS KMS キーに関連付けられた現在のアクティブな EKT を取得します。 AWS KMS ホストとドメイン内の HSM 間の保護されたセッションを介して、提供されたリクエストと暗号化コンテキストとともに EKT を HSM に渡します。
HSM は、次の操作を実行します。
-
リクエストされたシークレットマテリアルを生成し、揮発性メモリに保持します。
-
リクエストで定義された KMS キーのキー ID と一致する EKT を復号化し、アクティブな HBK = Decrypt(DKi, EKT) を取得します。
-
ランダムなノンス N を生成します。
-
HBK および N から、256 ビットの AES-GCM 導出暗号化キー K を生成します。
-
シークレットマテリアル ciphertext = Encrypt(K, context, secret) を暗号化します。
GenerateDataKey
は、 AWS KMS ホストと HSM 間の安全なチャネルを介してプレーンテキストのシークレットマテリアルと暗号文を返します。 AWS KMS その後、 は TLS セッションを介してそのマテリアルを送信します。プレーンテキストまたは暗号文は保持 AWS KMS されません。暗号文、暗号化コンテキスト、KMS キーを使用する権限がない場合、基礎となるシークレットを返すことはできません。
次に示すのは、応答の構文です。
{ "CiphertextBlob": "blob", "KeyId": "string", "Plaintext": "blob" }
データキーの管理は、アプリケーションデベロッパーに委ねられています。データキーによるクライアント側の暗号化 (ただし AWS KMS 、データキーペアは除きます) のベストプラクティスとして、 を使用できますAWS Encryption SDK。
データキーは任意の頻度でローテーションできます。さらに、データキーは、ReEncrypt
API オペレーションを使用して、異なる KMS キーまたはローテーションされる KMS キーに再暗号化することができます。詳細については、AWS Key Management Service API リファレンスの ReEncrypt を参照してください。