このトピックでは、平文を暗号文に暗号化する方法について説明します。
使用上の注意
この操作は、ソフトウェアキー管理タイプのKey Management Service (KMS) インスタンスの対称キーに対してのみ呼び出すことができます。 キーの仕様、暗号化モード、およびキーのバージョンの詳細については、「キーの種類と仕様」をご参照ください。
AdvanceEncrypt操作またはEncrypt操作を呼び出して、平文を暗号文に暗号化できます。 2つの操作の次の違いに注意してください。
AdvanceEncrypt: キーのプライマリバージョンは、平文を暗号文に暗号化するために使用されます。 暗号文を復号化するには、AdvanceDecrypt操作を呼び出す必要があります。
暗号化: キーの初期バージョンは、平文を暗号文に暗号化するために使用されます。 Decrypt操作またはAdvanceDecrypt操作を呼び出して、暗号文を復号化できます。
自動キーローテーションを有効にする場合は、AdvanceEncrypt操作を呼び出して、キーローテーション機能が無効にならないようにする必要があります。 自動キーローテーションの詳細については、「キーローテーションの設定」をご参照ください。
使用上の注意
プロトコルバッファを使用してすべてのリクエストパラメータをエンコードした後、リクエストボディの長さが3 MBを超えないようにしてください。 リクエストボディが3 MBを超えると、サーバーはリクエストを拒否し、HTTP 413ステータスコードを返します。 1回の操作で暗号化と復号化を行うには、データサイズを6 KBに制限することを推奨します。 データが制限を超える場合は、エンベロープ暗号化を使用することを推奨します。 詳細については、「エンベロープ暗号化の使用」をご参照ください。
単一の暗号化または復号化で大量のデータを使用すると、ネットワーク障害のリスクが高まり、ネットワーク伝送に必要な時間が長くなり、KMSがデータを暗号化および復号化するのに必要な期間が長くなります。
リクエストパラメーター
パラメーター | 型 | 必須 / 任意 | 例 | 説明 |
KeyId | String | 対象 | key-hzz62f1cb66fa42qo **** | キーのグローバル一意ID。 このパラメーターは、キーにバインドされているエイリアスに設定できます。 重要 ソフトウェアキー管理タイプのKMSインスタンスでは、キーは対称キーである必要があります。 |
Plaintext | バイト | 対象 | バイナリデータ | 暗号化するプレーンテキスト。 |
アルゴリズム | String | 非対象 | AES_GCM | 暗号化アルゴリズム。 このパラメーターを設定しない場合、KMSはデフォルト値を使用します。 詳細については、「キーの種類と仕様」をご参照ください。 |
Iv | バイト | 非対象 | バイナリデータ | データの暗号化に使用される初期ベクトル。 このパラメーターは、AlgorithmがAES_GCMまたはAES_CBCに設定されている場合にのみ有効になります。
このパラメーターを設定しない場合、KMSは乱数を生成します。 重要 設定しないことを推奨します。 |
Aad | binary | 非対象 | バイナリデータ | GCMモードを使用してデータキーを暗号化する場合の認証データ。 AlgorithmがAES_GCMに設定されている場合、ビジネス要件に基づいてこのパラメーターを使用できます。 重要 Aadが設定されている場合、AdvanceDecrypt操作を呼び出すときに同じパラメーターを設定する必要があります。 |
PaddingMode | String | 非対象 | PKCS7_PADDING | パディングモード。 このパラメーターは、AlgorithmがAES_CBCまたはAES_ECBに設定されている場合にのみ必要です。 有効な値:
|
レスポンスパラメーター
パラメーター | タイプ | 例 | 説明 |
CiphertextBlob | バイト | バイナリデータ | キーを使用して暗号化された平文の暗号文。 説明 CiphertextBlobには、KeyId、Algorithm、PaddingMode、およびIvに関する情報が含まれています。 AdvanceDecrypt操作を呼び出してデータを復号する場合にのみ、CiphertextBlobを設定する必要があります。 |
アルゴリズム | String | AES_GCM | 暗号化アルゴリズム。 |
KeyId | String | key-hzz62f1cb66fa42qo **** | キーのグローバル一意ID。 リクエストのKeyIdをキーのエイリアスに設定した場合、エイリアスがバインドされているキーのIDが返されます。 |
KeyVersionId | String | key-hzz62f1cb66fa42qopd9s-17kedv **** | キーのバージョン。 プライマリバージョンが使用されます。 |
Iv | バイト | バイナリデータ | データの暗号化に使用される初期ベクトル。 AlgorithmがAES_GCMまたはAES_CBCに設定されている場合にのみ、有効な値が返されます。他のシナリオでは、空の値が返されます。 |
PaddingMode | String | PKCS7_PADDING | パディングモード。 このパラメーターは、AlgorithmがAES_CBCまたはAES_ECBに設定されている場合にのみ有効な値を返します。 他のシナリオでは、空の値が返されます。 |
RequestId | String | c0037a6d-7784-4ef2-a692-288fdefc7b9d | リクエストのID。問題の特定とトラブルシューティングに使用されます。 |
エラーコード
HTTPステータスコード | エラーコード | エラーメッセージ | 説明 |
404 | Forbidden.OnlySymmetricKeySupported | キー % sは対称キーではありません。 APIは対称キーのみをサポートします。 | 対称キーのみがサポートされています。 説明 非対称暗号化は、セキュリティドメイン間のデータ暗号化または鍵交換に使用されます。 この場合、KMSは片側では使用されません。 |
エラーコードのリストについては、「サービスエラーコード」をご参照ください。