

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

# AWS Encryption SDKとは
<a name="introduction"></a>

 AWS Encryption SDK は、業界標準とベストプラクティスを使用して、すべてのユーザーがデータの暗号化と復号を簡単に行えるように設計されたクライアント側の暗号化ライブラリです。これにより、データの暗号化と復号の最善の方法ではなく、アプリケーションのコア機能に集中できるようになります。 AWS Encryption SDK は、Apache 2.0 ライセンスの下で無料で提供されます。

 AWS Encryption SDK は次のような質問に答えます。
+ どの暗号化アルゴリズムを使用するべきですか。
+ どのように、またはどのモードで、そのアルゴリズムを使用すべきですか。
+ 暗号化キーを生成するにはどうすればよいですか。
+ 暗号化キーを保護するにはどうすればよいですか。どこに保存するべきですか。
+ 暗号化されたデータをポータブルにするにはどうしたらよいですか。
+ 目的の受取人が暗号化されたデータを確実に読めるようにするにはどうすればよいですか。
+ 暗号化されたデータが書き込まれてから読み込まれるまでに変更されないようにするにはどうすればよいですか。
+ が AWS KMS 返すデータキーの使用方法を教えてください。

では AWS Encryption SDK、データを保護するために使用するラッピング[キーを決定するマスターキープロバイダー](concepts.md#master-key-provider)またはキー[リング](concepts.md#keyring)を定義します。次に、 が提供する簡単な方法を使用してデータを暗号化および復号します AWS Encryption SDK。残りは が AWS Encryption SDK 行います。

を使用しない場合 AWS Encryption SDK、アプリケーションのコア機能よりも暗号化ソリューションの構築により多くの労力を費やす可能性があります。は、以下の情報を提供して、 AWS Encryption SDK これらの質問に答えます。

**暗号化のベストプラクティスに従ったデフォルトの実装**  
デフォルトでは、 は暗号化するデータオブジェクトごとに一意のデータキー AWS Encryption SDK を生成します。各暗号化操作に一意のデータキーを使用する暗号化のベストプラクティスに従います。  
は、安全で認証された対称キーアルゴリズムを使用してデータを AWS Encryption SDK 暗号化します。詳細については、「[でサポートされているアルゴリズムスイート AWS Encryption SDK](supported-algorithms.md)」を参照してください。

**ラッピングキーによるデータキーの保護のためのフレームワーク**  
は、1 つ以上のラッピングキーで暗号化することで、データを暗号化するデータキー AWS Encryption SDK を保護します。複数のラッピングキーを使用してデータキーを暗号化するフレームワークを提供することで、 AWS Encryption SDK は暗号化されたデータを移植可能にします。  
たとえば、 AWS KMS key の AWS KMS とオンプレミス HSM のキーでデータを暗号化します。片方が利用できない場合や、呼び出し元に両方のキーを使用する権限がない場合に備えて、いずれかのラッピングキーを使用してデータを復号できます。

**暗号化されたデータと暗号化されたデータキーを一緒に保存する形式のメッセージ**  
は、暗号化されたデータと暗号化されたデータキーを、定義されたデータ形式を使用する[暗号化されたメッセージ](concepts.md#message)にまとめて AWS Encryption SDK 保存します。つまり、 がユーザー AWS Encryption SDK に代わってデータを暗号化するデータキーを追跡または保護する必要はありません。

の一部の言語実装には AWS SDK AWS Encryption SDK が必要ですが、 AWS Encryption SDK は を必要とせず AWS アカウント 、どの AWS サービスにも依存しません。は、 [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms-keys)を使用してデータを保護する AWS アカウント 場合にのみ必要です。

## オープンソースリポジトリで開発
<a name="esdk-repos"></a>

 AWS Encryption SDK は GitHub のオープンソースリポジトリで開発されています。これらのリポジトリを使用して、コードを表示したり、課題を読んだり送信したり、言語実装に固有の情報を見つけたりできます。　
+ AWS Encryption SDK for C — [aws-encryption-sdk-c](https://github.com/aws/aws-encryption-sdk-c/)
+ AWS Encryption SDK for .NET — `aws-encryption-sdk`リポジトリの [.NET](https://github.com/aws/aws-encryption-sdk/tree/mainline/AwsEncryptionSDK/runtimes/net/) ディレクトリ。
+ AWS 暗号化 CLI — [aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)
+ AWS Encryption SDK for Java — [aws-encryption-sdk-java](https://github.com/aws/aws-encryption-sdk-java/)
+ AWS Encryption SDK for JavaScript — [aws-encryption-sdk-javascript](https://github.com/aws/aws-encryption-sdk-javascript/)
+ AWS Encryption SDK for Python — [aws-encryption-sdk-python](https://github.com/aws/aws-encryption-sdk-python/)
+ AWS Encryption SDK for Rust — `aws-encryption-sdk`リポジトリの [Rust](https://github.com/aws/aws-encryption-sdk-dafny/tree/mainline/AwsEncryptionSDK/runtimes/rust/) ディレクトリ。
+ AWS Encryption SDK Go の場合 — `aws-encryption-sdk`リポジトリの [Go](https://github.com/aws/aws-encryption-sdk/tree/mainline/releases/go/encryption-sdk/) ディレクトリ

## 暗号化ライブラリやサービスとの互換性
<a name="intro-compatibility"></a>

 AWS Encryption SDK は複数の[プログラミング言語で](programming-languages.md)サポートされています。言語実装はすべて相互運用可能です。ある言語実装で暗号化し、別の言語実装で復号できます。相互運用性は、言語の制約を受ける可能性があります。その場合の制約については、言語実装に関するトピックで説明します。また、暗号化および復号を行う場合は、互換性のあるキーリング、またはマスターキーとマスターキープロバイダーを使用する必要があります。詳細については、「[キーリングの互換性](choose-keyring.md#keyring-compatibility)」を参照してください。

ただし、 を他のライブラリと相互運用 AWS Encryption SDK することはできません。各ライブラリは暗号化されたデータを異なる形式で返すため、あるライブラリで暗号化したデータを別のライブラリで復号することはできません。

**DynamoDB 暗号化クライアントおよび Amazon S3 クライアント側の暗号化**  <a name="ESDK-DDBEC"></a>
は、[DynamoDB 暗号化クライアント](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/)または [Amazon S3 クライアント側の暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)によって暗号化されたデータを復号 AWS Encryption SDK できません。これらのライブラリは、 が AWS Encryption SDK 返す[暗号化されたメッセージを](concepts.md#message)復号できません。 

**AWS Key Management Service (AWS KMS)**  <a name="ESDK-KMS"></a>
 AWS Encryption SDK は、 [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)および [データキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)を使用して、マルチリージョン KMS キーを含むデータを保護できます。たとえば、 AWS KMS keys の 1 つ以上の でデータを暗号化 AWS Encryption SDK するように を設定できます AWS アカウント。ただし、そのデータを復号 AWS Encryption SDK するには、 を使用する必要があります。  
は、 AWS KMS [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) または [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) オペレーションが返す暗号文を復号 AWS Encryption SDK できません。同様に、 AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションでは、 が AWS Encryption SDK 返す[暗号化されたメッセージを](concepts.md#message)復号できません。  
は[、対称暗号化 KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-concepts.html#symmetric-cmks)のみ AWS Encryption SDK をサポートします。「 AWS Encryption SDK」では、暗号化または署名に [非対称 KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-concepts.html#asymmetric-cmks) を使用できません。 AWS Encryption SDK は、メッセージに署名する[アルゴリズムスイート](supported-algorithms.md)に対して、独自の ECDSA 署名キーを生成します。

## サポートとメンテナンス
<a name="support"></a>

 AWS Encryption SDK は、 AWS SDK とツールが使用するのと同じ[メンテナンスポリシー](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html)を使用します。これには、バージョニングフェーズとライフサイクルフェーズが含まれます。[ベストプラクティス](best-practices.md)として、プログラミング言語 AWS Encryption SDK に利用可能な最新バージョンの を使用し、新しいバージョンがリリースされたらアップグレードすることをお勧めします。バージョン 1.7.*x* より前の AWS Encryption SDK バージョンからバージョン 2.0.*x* 以降にアップグレードするなど、バージョンに大きな変更が必要な場合は、[詳細な手順](migration.md)が役立ちます。

の各プログラミング言語実装 AWS Encryption SDK は、個別のオープンソース GitHub リポジトリで開発されています。各バージョンのライフサイクルフェーズやサポートフェーズは、リポジトリによって異なる可能性があります。　 たとえば、特定のバージョンの は、1 つのプログラミング言語での一般提供 (フルサポート) フェーズにあるものの、別のプログラミング言語でend-of-supportフェーズにある AWS Encryption SDK 場合があります。可能な限り完全にサポートされているバージョンを使用し、サポートが終了したバージョンは避けることをお勧めします。　　

プログラミング言語 AWS Encryption SDK のバージョンライフサイクルフェーズを確認するには、各 AWS Encryption SDK リポジトリの `SUPPORT_POLICY.rst` ファイルを参照してください。
+ AWS Encryption SDK for C — [SUPPORT\_POLICY.rst](https://github.com/aws/aws-encryption-sdk-c/blob/master/SUPPORT_POLICY.rst)
+ AWS Encryption SDK for .NET — [SUPPORT\_POLICY.rst](https://github.com/aws/aws-encryption-sdk-dafny/blob/mainline/SUPPORT_POLICY.rst)
+ AWS 暗号化 CLI — [SUPPORT\_POLICY.rst](https://github.com/aws/aws-encryption-sdk-cli/blob/master/SUPPORT_POLICY.rst)
+ AWS Encryption SDK for Java — [SUPPORT\_POLICY.rst](https://github.com/aws/aws-encryption-sdk-java/blob/master/SUPPORT_POLICY.rst)
+ AWS Encryption SDK for JavaScript — [SUPPORT\_POLICY.rst](https://github.com/aws/aws-encryption-sdk-javascript/blob/master/SUPPORT_POLICY.rst)
+ AWS Encryption SDK for Python — [SUPPORT\_POLICY.rst](https://github.com/aws/aws-encryption-sdk-python/blob/master/SUPPORT_POLICY.rst)

詳細については、[のバージョン AWS Encryption SDK](about-versions.md)「SDK とツールリファレンスガイド」の「」および AWS SDKs」を参照してください。 [AWS SDKs ](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html) 

## 詳細情報
<a name="intro-see-also"></a>

 AWS Encryption SDK およびクライアント側の暗号化の詳細については、以下のソースを試してください。
+ この SDK で使用される用語と概念のヘルプについては、「[の概念 AWS Encryption SDK](concepts.md)」を参照してください。
+ ベストプラクティスのガイドラインについては、「[のベストプラクティス AWS Encryption SDK](best-practices.md)」を参照してください。
+ SDK の仕組みについては、「[SDK のしくみ](how-it-works.md)」を参照してください。
+ でオプションを設定する方法を示す例については AWS Encryption SDK、「」を参照してください[の設定 AWS Encryption SDK](configure.md)。
+ 技術情報の詳細については、「[AWS Encryption SDK リファレンス](reference.md)」を参照してください。
+ の技術仕様については AWS Encryption SDK、GitHub の[AWS Encryption SDK 「仕様](https://github.com/awslabs/aws-encryption-sdk-specification/)」を参照してください。
+ の使用に関する質問に対する回答については AWS Encryption SDK、[AWS 「Crypto Tools Discussion Forum](https://forums.aws.amazon.com/forum.jspa?forumID=302)」を読んで投稿してください。

の AWS Encryption SDK さまざまなプログラミング言語での実装については、「」を参照してください。
+ **C**: GitHub の [AWS Encryption SDK for C](c-language.md)、 AWS Encryption SDK [C ドキュメント](https://aws.github.io/aws-encryption-sdk-c/html/)、および [aws-encryption-sdk-c](https://github.com/aws/aws-encryption-sdk-c/) リポジトリを参照してください。
+ **C\#/.NET**: GitHub の「[AWS Encryption SDK .NET 用](dot-net.md)」と `aws-encryption-sdk` リポジトリの [aws-encryption-sdk-net](https://github.com/aws/aws-encryption-sdk/tree/mainline/AwsEncryptionSDK/runtimes/net/) ディレクトリを参照してください。
+ **コマンドラインインターフェイス**: GitHub の[AWS Encryption SDK コマンドラインインターフェイス](crypto-cli.md)「」、「Encryption CLI AWS のドキュメントを読む」、および[aws-encryption-sdk-cli](https://github.com/aws/aws-encryption-sdk-cli/)」リポジトリを参照してください。 [https://aws-encryption-sdk-cli.readthedocs.io/en/latest/](https://aws-encryption-sdk-cli.readthedocs.io/en/latest/)
+ **Java**: GitHub の[AWS Encryption SDK for Java](java.md)「」、 AWS Encryption SDK [「Javadoc](https://aws.github.io/aws-encryption-sdk-java/)」、および[aws-encryption-sdk-java](https://github.com/aws/aws-encryption-sdk-java/)」リポジトリを参照してください。

  **JavaScript**: 「[AWS Encryption SDK for JavaScript](javascript.md)」、GitHub の [aws-encryption-sdk-javascript](https://github.com/aws/aws-encryption-sdk-javascript/) リポジトリを参照してください。
+ **Python**: GitHub の [AWS Encryption SDK for Python](python.md)、 AWS Encryption SDK [Python ドキュメント](https://aws-encryption-sdk-python.readthedocs.io/en/latest/)、および [aws-encryption-sdk-python](https://github.com/aws/aws-encryption-sdk-python/) リポジトリを参照してください。

## フィードバックを送る
<a name="report-issues"></a>

当社では、お客様からのフィードバックをお待ちしております。質問、コメント、ご報告いただく問題がある場合は、以下のリソースをご利用ください。
+ で潜在的なセキュリティ脆弱性を発見した場合は AWS Encryption SDK、[AWS セキュリティに通知](https://aws.amazon.com/security/vulnerability-reporting/)してください。GitHub で公開されている問題はご報告いただく必要はありません。
+ に関するフィードバックを提供するには AWS Encryption SDK、使用しているプログラミング言語の GitHub リポジトリに問題を提出します。
+ このドキュメントに関するフィードバックについては、このページの **[フィードバック]** のリンクをご利用ください。また、GitHub のこのドキュメントのオープンソースリポジトリである [aws-encryption-sdk-docs](https://github.com/awsdocs/aws-encryption-sdk-docs) で issue の作成やご参加をいただくこともできます。