[アップデート] Amazon S3 に二重層サーバーサイド暗号化が追加されました。

Amazon S3 に追加された二重層サーバーサイド暗号化(DSSE-KMS)により、さらに強力なデータ保護とコンプライアンス対策を実現できます。
2023.06.23

こんにちは、AWS事業本部の平木です!

Amazon S3 のサーバーサイド暗号化のオプションに二重層サーバーサイド暗号化 (DSSE-KMS) が追加されたため、このブログでは DSSE-KMS の概要について記載します!

DSSE-KMS とは

今回のアップデートには、以下のように説明されています。

Customers can now apply two independent layers of server-side encryption to objects in Amazon S3. Dual-layer server-side encryption with keys stored in AWS Key Management Service (DSSE-KMS) is designed to meet National Security Agency CNSSP 15 for FIPS compliance and Data-at-Rest Capability Package (DAR CP) Version 5.0 guidance for two layers of CNSA encryption.

顧客は、Amazon S3のオブジェクトに2層の独立したサーバーサイド暗号化を適用できるようになりました。 AWS Key Management Service (DSSE-KMS)に保存された鍵による2層のサーバーサイド暗号化は、FIPS準拠のための国家安全保障局CNSSP 15と、2層のCNSA暗号化のためのData-at-Rest Capability Package (DAR CP) Version 5.0ガイダンスに適合するように設計されています。 (Deepl翻訳)
引用: Amazon S3 announces dual-layer server-side encryption for compliance workloads

DSSE-KMS は、Amazon S3 バケットへオブジェクトをアップロードする時に、 Amazon S3 バケット内のオブジェクトに2層の暗号化を適用する新しい暗号化オプションです。
FIPS 準拠のための CNSSP 15と DAR CP バージョン5.0ガイダンスを満たすよう設計されており、データに複数層の暗号化を適用する規制要件に対応できます。
米国国防総省(DoD)の顧客など、高度に規制された業界の厳格なセキュリティ基準も簡単に満たせます。

DSSE-KMS による暗号化の各層では、256ビットの AES-GCM(Advanced Encryption Standard with Galois Counter Mode)アルゴリズムが使用されます。
256ビットの鍵の長さを使用する AES は、軍用レベルの暗号化技術で、米国政府の重要機密情報の暗号化にも採用されており、米国政府の中で極秘情報に分類されるデータを暗号化できるほど安全とされています。

CNSSP 15と DAR CP バージョン5.0

CNSSP 15と DAR CP バージョン5.0は、米国政府によって定められたセキュリティ基準の一つで、データ保護および暗号化技術に関する厳しい要件が含まれています。
これらの基準を満たすことで、機密データが適切に保護され、不正アクセスや改ざんから安全であることが確保されます。

CNSSP 15

FIPS (Federal Information Processing Standards: 連邦情報処理標準) 準拠のための CNSSP 15(Committee on National Security Systems Policy No. 15)は、米国の国家安全保障システムに関わる情報技術について、暗号化と暗号技術の使用に関する指針を示しています。
DSSE-KMS が CNSSP 15に準拠していることは、以下の要件を満たしていると言えます。

  • 暗号化アルゴリズム
    • 米国家安全保障局(NSA)が承認した暗号化アルゴリズム (例えば、AESやECDSA,Diffie-Hellman Key Exchange 等) を使用している。
  • キーサイズ
    • 適切な鍵長を持つキーを使用し、強固なセキュリティを保証している(例:AES-GCM では 256 ビット)。
  • キーマネージメント
    • 適切なキーローテーションポリシーやアクセス許可管理が実施されている。

CNSSP 15 の内容は、 CNSS のサイトより確認できます。
CNSS - POLICIES
CNSSP 15 (PDF)

DAR CP バージョン5.0

DAR CP(Data At Rest Cryptographic Protection)は、Data at Rest(保存データ)を保護するための暗号化技術に関するガイダンスです。
バージョン5.0では、二重層の暗号化が規定されており、 DSSE-KMS が DAR CP バージョン5.0に準拠していることは、以下の要件を満たしていると言えます。

  • 二重層暗号化
    • 2つの異なる暗号化レイヤーが使用され、独立したデータ暗号化キーを持つことで、より強固なデータ保護が提供されます。
  • 同じ暗号化アルゴリズムの異なる実装
    • 各暗号化層で使用されるアルゴリズムは、同じアルゴリズムであるものの、異なる実装を使用し、潜在的な脆弱性を最小限に抑えます。
    • 例えば1つのレイヤーではパスワードを使用できるが、もう一方のレイヤーではトークンやその他の要素を使用する必要があります。

DAR CP バージョン5.0の内容は、National Security Agency サイト内の COMPLIANCE CHECKLIST より確認できます。
DAR CP v5_0 Compliance Checklist (PDF)

これらの基準に準拠することで、DSSE-KMS は高度なセキュリティ保護を提供し、データの安全性とコンプライアンスを確保できることが示されています。

Amazon S3 で提供される4つのサーバーサイド暗号化オプション

Amazon S3 では、今回のアップデートにより以下4つの暗号化オプションが利用可能です。

  • Amazon S3 マネージドキー (SSE-S3) によるサーバー側暗号化
  • AWS KMS カスタマーマネージドキー (SSE-KMS) によるサーバー側暗号化
  • カスタマー提供キー (SSE-C) によるサーバー側暗号化
  • KMS (DSSE-KMS) に保存されたキーによる二重層サーバー側暗号化

やってみた

S3 バケットに DSSE-KMS を有効化してみる

まずは適当な S3 バケットを東京リージョンに作成します。

「デフォルトの暗号化」にて、暗号化タイプを選択します。
KMS キーは AWS マネージドキーとカスタマーマネージドキーが選択できるため、
今回は AWS マネージドキー aws/s3 を選択します。
DSSE-KMS では S3 バケットキーはサポートされていないため、[無効にする]を選択します。

この設定できた S3 バケットの暗号化設定を見ると下記のように、DSSE-KMS で暗号化設定できていることが分かります。

暗号化設定の検証

続いて実際に暗号化が本当にできているのか検証します。

検証方法は次のブログを参考にしました。

まず適当なファイルを先ほど作成した S3 バケットへアップロードします。

続いて CloudShell で GetObject API でオブジェクトを確認すると、

$ aws s3api get-object \
>   --bucket dsse-kms-test-20230623 \
>   --key aws-service.txt \
>   outfile
{
    "AcceptRanges": "bytes",
    "LastModified": "2023-06-23T01:55:39+00:00",
    "ContentLength": 9077,
    "ETag": "\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"",
    "ContentType": "text/plain",
    "ServerSideEncryption": "aws:kms:dsse",
    "Metadata": {},
    "SSEKMSKeyId": "arn:aws:kms:ap-northeast-1:xxxxxxxxxxxx:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

ServerSideEncryption がDSSEとなっているのが分かります。

続いて KMS の権限を全て拒否した環境から同じ API をたたくと、

$ aws s3api get-object \
>   --bucket dsse-kms-test-20230623 \
>   --key aws-service.txt \
>   outfile

An error occurred (AccessDenied) when calling the GetObject operation: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.

AccessDenied となることが分かりました。

対応リージョン

DSSE-KMS はすべての AWS リージョンで利用可能です。

料金

DSSE-KMS の料金は、1 ギガバイトあたり0.003 ドル(バージニア北部の場合)に加えて、
データの暗号化と復号化の 2 番目のレイヤーに対してギガバイトごとの追加の暗号化料金を支払います。

参照: Amazon S3 pricing

参考

終わりに

Amazon S3が追加した二重層サーバーサイド暗号化(DSSE-KMS)は、データ保護とコンプライアンスにおいてさらなる強化をもたらします。
DSSE-KMS を使用する必要があるケースはまだ限定的のように思われますが、今後のサイバーセキュリティ対策として必要性が高まるかもしれません。
この記事がどなたかの役に立てば嬉しいです!