【AWS】S3の暗号化の形式


プログラミング勉強日記

2021年6月3日

S3の暗号化

 S3のデータの暗号化は保管時に暗号化形式として以下の4つの形式から選択する。

SSE-S3

 SSEはepicor server side encryptionの略。標準的に使うもので、S3の標準暗号化式で簡単に利用できる。サーバーサイド側(S3側)で暗号化をする。暗号化キーの作成・管理をS3側で自動的に実施してくれる。
 ブロック暗号の1つである256ビットのAdvanced Encryption Standard(AES-256)という強固な暗号化の仕組みを使ってデータを暗号化する。

SSE-KMS

 SSE-S3の次によく使われるもので、KMSはkey management serviceの略。AWS KMSに設定した暗号化キーを利用した暗号化を実施する。KMSは暗号キーを作って管理するS3ではない別のサービス。このサービスで鍵を作成し、その上でこの鍵を使ってS3で暗号化する。
 ユーザ側でAWS KMSを利用して暗号化キーを作成・管理することができる。クライアント独自の暗号キーを利用することもできる。そのため、独自に暗号化キーを作って管理をしたい場合に使う。

SSE-C

 ユーザが指定したキーによるサーバー側の暗号化(SSE-C)を利用することができる。ユーザ独自のキーをSDKなどを介して設定し、S3に使うということをアプリケーション上で組み込むといった複雑な設定ができる。利用設定が管理が複雑になる。
 KMSとS3はマネージメントコンソールのS3の標準機能で使うが、SSE-CはSDKツールを使いながらアプリケーション上で構築するなど複雑な設定になるので基本はあまり使わない。しかし、ユーザが指定した独自のキーを独自に使いたい場合などに使用する。

クライアントサイド暗号化(CSE)

 クライアントサイド側の暗号化では、S3に送信する前にデータを暗号化する方式。サーバーサイド側の暗号化では、データの送信後に暗号化する。
 KMSなどを利用して暗号化キーを作成・実施することができる。アプリケーション内に保存したマスターキーを利用して、事前に暗号化してそのあとにS3に送るということをアプリケーション上で組み込んで作れる。