

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

# 暗号化の基本
<a name="crypto-primitives"></a>

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

## エントロピーと乱数生成
<a name="entropy-and-random-numbers"></a>

AWS KMS キーの生成は、 AWS KMS HSMs で実行されます。HSM では、[AES-256 を使った NIST SP800-90A 決定論的ランダムビットジェネレーター (DRBG) CTR\_DRBG](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf) を使用したハイブリッド乱数生成機能を実装しています。非決定論的ランダムビットジェネレーターは 384 ビットのエントロピーでシードされ、追加のエントロピーで更新されます。これにより、暗号化マテリアルの呼び出しごとに予測抵抗が提供されます。

## 対称キーのオペレーション (暗号化のみ)
<a name="symmetric-key-0ps"></a>

HSM 内で使用されるすべての対称キーの暗号化コマンドには、[高度暗号化規格 (AES)](http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) で 256 ビットキーの [Galois Counter Mode (GCM)](http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf) を使用します。復号化のための同様の呼び出しには、逆関数を使用します。

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

多くの場合、特にデータキーの暗号化を参照する場合、 は説明に AAD を含めることを AWS 省略します。これらのケースでは周囲のテキストにより、暗号化される構造が、暗号化されるプレーンテキストと保護されるクリアテキスト AAD の間で分割されることが暗示されます。

AWS KMS には、 を使用してキーマテリアルを生成する AWS KMS key 代わりに、キーマテリアルを AWS KMS にインポートするオプションが用意されています。このインポートされたキーマテリアルは、[RSAES-OAEP](https://datatracker.ietf.org/doc/html/rfc8017#section-7.1) または [RSAES-PKCS1-v1\_5](https://datatracker.ietf.org/doc/html/rfc8017#section-7.2) を使用して暗号化し、 AWS KMS HSM への転送中にキーを保護することができます。RSA キーペアは、 AWS KMS HSM で生成されます。インポートされたキーマテリアルは AWS KMS HSM で復号され、サービスによって保存される前に AES-GCM で再暗号化されます。

## 非対称キーのオペレーション (暗号化、デジタル署名、署名の検証)
<a name="asymmetric-key-ops"></a>

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

AWS KMS は 3 種類の非対称暗号をサポートしています。
+ **RSA-OAEP (暗号化用) および RSA-PSS/RSA-PKCS-\#1-v1\_5 (署名および検証用)** – さまざまなセキュリティ要件に対応できるよう、RSA キーの長さは 2048、3072、4096 (ビット単位) がサポートされています。
+ **楕円曲線 (ECC)** – 署名と検証にのみ使用できます。ECC 曲線 NIST P256、P384、P521、SECP 256k1 がサポートされています。
+ **Post Quantum Cryptography** - 量子コンピューティングに耐性がある新しいパブリックキー暗号化アルゴリズム。ML\_[DSA\_44、ML\_DSA\_65、および ML\_DSA\_87 キーサイズの NIST FIPS 204 Module-Lattice Digital Signature Algorithm (ML-DSA)](https://csrc.nist.gov/pubs/fips/204/final) をサポートします。

## キー導出関数
<a name="key-derivation-functions"></a>

キー導出関数は、最初のシークレットまたはキーから追加のキーを取得するために使用されます。 AWS KMS では、キー導出関数 (KDF) を使用して、 AWS KMS keyでの暗号化の呼び出しごとにキーを取得します。すべての KDF オペレーションでは、SHA256 [[FIPS180]](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf) で HMAC [[FIPS197]](http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf)、[カウンタモードの KDF](https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-108.pdf) を使用します。256 ビットの導出キーは AES-GCM とともに使用され、顧客データとキーを暗号化または復号化します。

## AWS KMS デジタル署名の内部使用
<a name="digital-signatures"></a>

デジタル署名は、 AWS KMS エンティティ間のコマンドや通信を認証するためにも使用されます。すべてのサービスエンティティには、楕円曲線デジタル署名アルゴリズム (ECDSA) のキーペアがあります。[Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS)](https://datatracker.ietf.org/doc/html/rfc5753/) および X9.62-2005: *Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)* で定義されているように、これらにより ECDSA が実行されます。エンティティでは、[Federal Information Processing Standards Publications,FIPS PUB 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf) で定義されている、SHA384 と呼ばれる安全なハッシュアルゴリズムを使用します。キーは、曲線 secp384r1 (NIST-P384) 上で生成されます。

## エンベロープ暗号化
<a name="envelope-encryption"></a>

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

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

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

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) は、 AWS KMS サービス内で提供される暗号化機能に加えて、クライアント側のエンベロープ暗号化ライブラリを提供します。これらのライブラリを使用して、データとその暗号化に使用している暗号化キーを保護できます。