AWS Encryption SDK とは - AWS Encryption SDK

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

AWS Encryption SDK とは

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

AWS Encryption SDK は、次のような問いへの回答となるものです。

  • どの暗号化アルゴリズムを使用するべきですか。

  • どのように、またはどのモードで、そのアルゴリズムを使用すべきですか。

  • 暗号化キーを生成するにはどうすればよいですか。

  • 暗号化キーを保護するにはどうすればよいですか。どこに保存するべきですか。

  • 暗号化されたデータをポータブルにするにはどうしたらよいですか。

  • 目的の受取人が暗号化されたデータを確実に読めるようにするにはどうすればよいですか。

  • 暗号化されたデータが書き込まれてから読み込まれるまでに変更されないようにするにはどうすればよいですか。

  • AWS KMS が返すデータキーはどのように使用しますか?

AWS Encryption SDK では、データの保護に使用するラッピングキーを指定する マスターキープロバイダー (Java および Python) か、キーリング (C、C#/.NET および JavaScript) を定義します。その上で、AWS Encryption SDK が提供する専用のメソッドを使用して、データを暗号化および復号します。それ以外のことは、AWS Encryption SDK によって行われます。

AWS Encryption SDK がなければ、アプリケーションの重要な機能よりも暗号化ソリューションを構築するために多くの労力を費やすことになるおそれがあります。AWS Encryption SDK は、上記のような問いに次のような解決策を提供しています。

暗号化のベストプラクティスに従ったデフォルトの実装

AWS Encryption SDK は、暗号化する各データオブジェクトに対してデフォルトで一意のデータキーを生成します。各暗号化操作に一意のデータキーを使用する暗号化のベストプラクティスに従います。

AWS Encryption SDK は、安全かつ標準として認められている対称キーアルゴリズムを使用してデータを暗号化します。詳細については、「AWS Encryption SDK でサポートされているアルゴリズムスイート」を参照してください。

ラッピングキーによるデータキーの保護のためのフレームワーク

AWS Encryption SDK は、1 つ以上のラッピングキーにより暗号化することでデータを暗号化するデータキーを保護します。1 つ以上のラッピングキーを使用してデータキーを暗号化するフレームワークを提供することにより、AWS Encryption SDK は暗号化されたデータをポータブルにするのに役立ちます。

たとえば、AWS KMS の AWS KMS key とオンプレミスの HSM のキーを使用してデータを暗号化します。片方が利用できない場合や、呼び出し元に両方のキーを使用する権限がない場合に備えて、いずれかのラッピングキーを使用してデータを復号できます。

暗号化されたデータと暗号化されたデータキーを一緒に保存する形式のメッセージ

AWS Encryption SDK は、暗号化されたデータと暗号化されたデータキーを所定のデータ形式の暗号化されたメッセージに一緒に保存します。データを暗号化したデータキーの追跡や保護は AWS Encryption SDK によって行われるため、お客様が行う必要はありません。

AWS Encryption SDK の一部の言語の実装では AWS SDK が必要ですが、AWS Encryption SDK は AWS アカウント を必須としておらず、どの AWS のサービスにも依存していません。AWS アカウント は、AWS KMS keys を使用してデータを保護する場合にのみ必要になります。

オープンソースのリポジトリで開発されました 

AWS Encryption SDK は GitHub のオープンソースリポジトリで開発されています。  これらのリポジトリを使用して、コードを表示したり、課題を読んだり送信したり、言語実装に固有の情報を見つけたりできます。 

暗号化ライブラリやサービスとの互換性

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

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

DynamoDB 暗号化クライアントおよび Amazon S3 クライアント側の暗号化

AWS Encryption SDK では、DynamoDB 暗号化クライアントまたは Amazon S3 クライアント側の暗号化で暗号化されたデータは復号できません。これらのライブラリでは、AWS Encryption SDK が返す 暗号化されたメッセージ を復号できません。 

AWS Key Management Service (AWS KMS)

AWS Encryption SDK は、マルチリージョン KMS キーを含む AWS KMS keys キーと データキー を使用してデータを保護できます。例えば、AWS アカウント の 1 つ以上の AWS KMS keys を使用してデータを暗号化するように AWS Encryption SDK を設定できます。ただし、AWS Encryption SDK を使用してデータを復号する必要があります。

AWS Encryption SDK では、AWS KMS の Encrypt オペレーションまたは ReEncrypt オペレーションから返された暗号化テキストは復号できません。同様に、AWS KMS Decrypt オペレーションは、AWS Encryption SDK が返す暗号化されたメッセージを復号化できません。

AWS Encryption SDK では、対称暗号化 KMS キー のみをサポートしています。「AWS Encryption SDK」では、暗号化または署名に 非対称 KMS キー を使用できません。AWS Encryption SDK は、メッセージに署名するアルゴリズムスイートに対して、独自の ECDSA 署名キーを生成します。

使用するライブラリまたはサービスの決定については、「AWS 暗号化サービスおよびツールガイド」の「How to Choose an Encryption Tool or Service」を参照してください。

サポートとメンテナンス

AWS Encryption SDK は、バージョニングやライフサイクルフェーズを含め、AWS SDK とツールが使用するものと同じ メンテナンスポリシー を使用します。ベストプラクティス として、ご使用のプログラミング言語に利用可能な AWS Encryption SDK の最新のバージョンを使用し、新しいバージョンがリリースされたらアップグレードすることをお勧めします。1.7.x より前の AWS Encryption SDK バージョンからバージョン 2.0.x 以降のアップグレードなど、バージョンに大きな変更が必要な場合、役に立つ 詳細な手順 に記載されています。

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

ご使用のプログラミング言語の AWS Encryption SDK バージョンのライフサイクル段階を確認するには、各 AWS Encryption SDK リポジトリの SUPPORT_POLICY.rst ファイルを参照してください。

詳細については、「AWS SDK とツールのリファレンスガイド」の「のバージョン AWS Encryption SDK」および「AWS SDK とツールのメンテナンスポリシー」を参照してください。

詳細情報

AWS Encryption SDK やクライアント側の暗号化の詳細については、以下を参照してください。

さまざまなプログラミング言語の AWS Encryption SDK の実装については、以下を参照してください。

フィードバックを送る

当社では、お客様からのフィードバックをお待ちしております。質問、コメント、ご報告いただく問題がある場合は、以下のリソースをご利用ください。

  • AWS Encryption SDK で潜在的なセキュリティの脆弱性を発見した場合は、AWS セキュリティまでご報告ください。GitHub で公開されている問題はご報告いただく必要はありません。

  • AWS Encryption SDK に関するフィードバックについては、使用されているプログラミング言語の GitHub リポジトリで issue を作成してください。

  • このドキュメントに関するフィードバックについては、このページの [フィードバック] のリンクをご利用ください。また、GitHub のこのドキュメントのオープンソースリポジトリである aws-encryption-sdk-docs で issue の作成やご参加をいただくこともできます。