AWS KMS 暗号化の必須事項 - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS KMS 暗号化の必須事項

AWS KMS は、設定可能な暗号化アルゴリズムを使用して、システムが承認されたアルゴリズムまたはモードから別のアルゴリズムまたはモードにすばやく移行できるようにします。暗号化アルゴリズムの初期デフォルトセットは、セキュリティプロパティとパフォーマンスについて、連邦情報処理標準 (FIPS承認済み) アルゴリズムから選択されています。

エントロピーと乱数生成

AWS KMS キーの生成は で実行されます AWS KMS HSMs。は、NIST SP800-90A Deterministic Random Bit Generator (DRBG) CTR_DRBG using AES-256 を使用するハイブリッド乱数ジェネレータHSMsを実装します。非決定論的ランダムビットジェネレーターは 384 ビットのエントロピーでシードされ、追加のエントロピーで更新されます。これにより、暗号化マテリアルの呼び出しごとに予測抵抗が提供されます。

対称キーのオペレーション (暗号化のみ)

で使用されているすべての対称キー暗号化コマンドは、256 ビットキーを使用する Galois Counter Mode (AES) の Advanced Encryption Standards () HSMsを使用します。 GCM復号化のための同様の呼び出しには、逆関数を使用します。

AES-GCM は認証された暗号化スキームです。暗号文を生成するためにプレーンテキストを暗号化することに加えて、暗号文上の認証タグと、認証が必要な追加データ (さらに認証されたデータ、または) を計算しますAAD。認証タグは、データがソースと称されるソースからのものであり、暗号文と AADが変更されていないことを確認するのに役立ちます。

頻繁に、特にデータキーの暗号化を参照する場合、 の説明AADに を含めることを AWS 省略します。このような場合、暗号化される構造は、暗号化されるプレーンテキストと保護AADされるクリアテキストの間でパーティション化されることが、テキストを囲むことによって暗示されます。

AWS KMS には、キーマテリアルの生成に頼る AWS KMS key のではなく、キーマテリアル AWS KMS を にインポートするオプションがあります。このインポートされたキーマテリアルは、 への転送中にキーを保護するために RSAES-OAEP を使用して暗号化できます AWS KMS HSM。RSA キーペアは で生成されます AWS KMS HSMs。インポートされたキーマテリアルは で AWS KMS HSM復号され、 AES-GCM で再暗号化されてから、 サービスによって保存されます。

非対称キーのオペレーション (暗号化、デジタル署名、署名の検証)

AWS KMS は、暗号化、デジタル署名、およびキー契約オペレーションの両方で非対称キーオペレーションの使用をサポートしています。非対称キーオペレーションは、数学的に関連付けられるパブリックキーとプライベートキーのペアに依存します。これらは暗号化と復号化、署名と検証、および共有シークレットの取得のいずれかの用途に使用できますが、一つのキーペアを複数の用途に使用することはできません。プライベートキーが暗号化 AWS KMS されていないままになることはありません。オペレーションを呼び出す AWS KMS AWS KMS APIか、パブリックキーをダウンロードして の外部で使用できます AWS KMS。

AWS KMS は、以下の非対称暗号をサポートしています。

  • RSA-OAEP (暗号化の場合) & RSA-PSS および RSAPKCS--#1-v1_5 (署名と検証の場合) – さまざまなセキュリティ要件でRSAキーの長さ (ビット単位) をサポート: 2048、3072、4096。

  • 楕円曲線 (ECC) – 署名と検証、または共有シークレットの取得に使用されますが、両方ではありません。ECC 曲線をサポート: NIST P256, P384, P521、SECP256k1。

  • SM2 (中国リージョンのみ) — 暗号化と復号化、署名と検証、共有シークレットの取得に使用されますが、キーの使用を 1 つ選択する必要があります。SM2PKE 暗号化とSM2DSA署名をサポートします。

キー導出関数

キー導出関数は、最初のシークレットまたはキーから追加のキーを導出するために使用されます。 は、キー導出関数 (KDF) AWS KMS を使用して、 での暗号化ごとにコールごとのキーを導出します AWS KMS key。すべてのKDFオペレーションは、HMACFIPS197KDF[0] で [] を使用してカウンターモードで を使用します。 SHA256 FIPS18256 ビット派生キーは、 AESGCM- で使用され、カスタマーデータとキーを暗号化または復号化します。

AWS KMS デジタル署名の内部使用

デジタル署名は、 AWS KMS エンティティ間のコマンドや通信を認証するためにも使用されます。すべてのサービスエンティティには、楕円曲線デジタル署名アルゴリズム (ECDSA) キーペアがあります。これらは、「暗号化メッセージ構文」の楕円曲線暗号化の使用 (ECC) アルゴリズム () および「X9.62-2005: 金融サービス業界向けの公開キー暗号化: 楕円曲線デジタル署名アルゴリズム)CMS」で定義されているECDSAとおりに動作します。 X9 ECDSA エンティティは、 と呼ばれる連邦情報処理標準出版物 180-4 FIPS PUB で定義されている安全なハッシュアルゴリズムを使用しますSHA384。キーは曲線 secp384r1 (NIST-P384) で生成されます。

エンベロープ暗号化

データを暗号化するとデータは保護されますが、暗号化キーを保護する必要があります。1 つの方法としては、それを暗号化します。エンベロープ暗号化は、データキーでプレーンテキストデータを暗号化してから、そのデータキーを別のキーで暗号化する手法です。

データ暗号化キーを別の暗号化キーで暗号化し、その暗号化キーを別の暗号化キーで暗号化することもできます。しかし、最終的には、キーとデータを復号するために、1 つのキーをプレーンテキストで保持する必要があります。この最上位プレーンテキストキーの暗号化キーは、ルートキーと呼ばれます。

エンベロープ暗号化

AWS KMS は、暗号化キーを安全に保存および管理することで、暗号化キーを保護するのに役立ちます。に保存されたルートキー AWS KMSは、 として知られ AWS KMS keys、 AWS KMS FIPS検証済みのハードウェアセキュリティモジュールを暗号化したままにしないでください。KMS キーを使用するには、 を呼び出す必要があります AWS KMS。

エンベロープ暗号化は、多くの暗号化システムで使用されている基本的な構造です。エンベロープ暗号化では、2 つ以上の暗号化キーを使用してメッセージを保護します。通常、1 つのキーは長期的な静的キー k から派生し、もう 1 つのキーはメッセージごとのキー でありmsgKey、メッセージを暗号化するために生成されます。エンベロープは、ciphertext = Encrypt(msgKey, message) というメッセージを暗号化することで形成されます。その後、メッセージキーは長期静的キーで暗号化されます: encKey = Encrypt(k, msgKey) 。最後に、2 つの値 (暗号文) encKeyは 1 つの構造にパッケージ化されるか、暗号化されたメッセージをエンベロープします。

k へのアクセス権を持つ受信者は、最初に暗号化されたキーを復号化してからメッセージを復号化することで、エンベロープされたメッセージを開くことができます。

AWS KMS は、これらの長期的な静的キーを管理し、データのエンベロープ暗号化のプロセスを自動化する機能を提供します。

暗号化は、 AWS KMS サービス内で提供される暗号化機能に加えて、クライアント側のエンベロープ暗号化ライブラリAWS SDKを提供します。これらのライブラリを使用して、データとその暗号化に使用している暗号化キーを保護できます。

複数キー暗号化キーによるエンベロープ暗号化

エンベロープ暗号化には、いくつかの利点があります。

  • データキーの保護

    データキーを暗号化する場合、暗号化されたデータキーの保存について心配する必要がありません。これは、そのデータキーが暗号化によって本質的に保護されているためです。暗号化されたデータとともに、暗号化されたデータキーを安全に保存できます。

  • 複数のキーを使用した同じデータの暗号化

    暗号化オペレーションには時間がかかります (特に、暗号化するデータが大きいオブジェクトである場合)。異なるキーで raw データを複数回にわたって再暗号化する代わりに、raw データを保護するデータキーのみを再暗号化できます。

  • 複数のアルゴリズムの強度の結合

    一般に、対称キーアルゴリズムは、パブリックキーアルゴリズムよりも高速で、より小さい暗号文を生成します。一方、パブリックキーのアルゴリズムはロールを本質的に分離し、キー管理を簡単にします。エンベロープ暗号化により、それぞれの方法を組み合わせることができます。

暗号化オペレーション

では AWS KMS、暗号化オペレーションはKMSキーを使用してデータを保護するAPIオペレーションです。KMS キーは 内に留まるため AWS KMS、 を呼び出し AWS KMS て暗号化オペレーションでKMSキーを使用する必要があります。

KMS キーを使用して暗号化操作を実行するには、、 (AWS CLI) AWS SDKs、 AWS Command Line Interface または を使用します AWS Tools for PowerShell。 AWS KMS コンソールで暗号化オペレーションを実行することはできません。いくつかのプログラミング言語で暗号化オペレーションを呼び出す例については、を参照してください AWS KMS を使用するためのコード例 AWS SDKs

次の表に AWS KMS 、暗号化オペレーションを示します。また、オペレーションで使用されるキーのキータイプとKMSキー使用要件も示します。

操作 キーのタイプ キーの用途
Decrypt 対称または非対称 ENCRYPT_DECRYPT
DeriveSharedSecret 非対称 KEY_AGREEMENT
暗号化 対称または非対称 ENCRYPT_DECRYPT
GenerateDataKey 対称 ENCRYPT_DECRYPT
GenerateDataKeyPair 非対称 [1]

カスタムKMSキーストアのキーではサポートされていません。

ENCRYPT_DECRYPT
GenerateDataKeyPairWithoutPlaintext 非対称 [1]

カスタムKMSキーストアのキーではサポートされていません。

ENCRYPT_DECRYPT
GenerateDataKeyWithoutPlaintext 対称 ENCRYPT_DECRYPT
GenerateMac HMAC GENERATE_VERIFY_MAC
GenerateRandom 該当なし。 このオペレーションではKMSキーを使用しません。 該当なし
ReEncrypt 対称または非対称 ENCRYPT_DECRYPT
Sign 非対称 SIGN_VERIFY
検証 非対称 SIGN_VERIFY
VerifyMac HMAC GENERATE_VERIFY_MAC

[1] 対称暗号化キーで保護された非対称データKMSキーペアを生成します。

暗号化オペレーションのアクセス許可については、「AWS KMS アクセス許可」を参照してください。

すべてのユーザーに対して AWS KMS 応答性と高機能を実現するために、 は 1 秒あたりに呼び出される暗号化オペレーションの数のクォータ AWS KMS を確立します。詳細については、「暗号化オペレーションの共有クォータ」を参照してください。