2016-12-18 9 views
0

私はユーザーにプロファイルを持ち、プロファイル写真を持たせる必要があるマルチプレイヤーゲームアプリを開発しています。AWS S3に安全にユーザープロフィール写真を保存

ゲームサーバーはAWS EC2上でホストされ、データベースとして追加のRedis Cacheと共にDynamoDBを使用する予定です。プロフィール画像を保存するには、私はS3を使いたいです。

私のゲームサーバー上のすべてのトラフィックをルーティングしたくないので、アプリケーションからS3サーバーに直接アクセスできます。今、ユーザーにプロフィール画像をアップロードしてダウンロードさせる安全な方法を作成する必要があります。すべてのユーザーはプロフィール画像をアップロードできますが、他のすべてのユーザーがそれをダウンロードすることはできません。

ゲームサーバーを使用してアップロード用のリンクに署名することができますので、アップロードしても問題はありません。

私の懸念事項はダウンロードです。ゲームには「友人のシステム」があります。 あなたのプロフィールの画像はあなたの友人のみが見ることができます。今私はいくつかの方法の私のユーザーのプライバシーを確​​保するために、この写真を安全に保存する方法。

  1. URLで何かの操作を行います。 だからこれの基本的な考え方は、私は私たちに、攻撃者のために推測するのは難しいされているURLをするということです。 http://s3-aws-region.amazonaws.com/profilpictures/[userid+random 128bit] しかし、それだけで十分か分かりません。多分ランダムなビットがあれば?

  2. 画像の暗号化: 画像を暗号化するだけです。私はAESを使用して、各ピクチャごとに異なる128ビットのキーを使用し、ユーザのデバイス上に遺伝子導入します。サーバーはキーを保存し、適切な人にのみキーを与えます。 私はhttp://s3-aws-region.amazonaws.com/profilpictures/useridを使ってURLを計算可能にすることができます。欠点:攻撃者がURLを計算し、暗号化された画像を取得することができます。問題ありますか?

  3. 両方を実行してください: 私のユーザーにとって最もプライバシーを保証するアプローチは、上記の両方の組み合わせです。しかしこれで十分ですか?あるいは多すぎるかもしれませんか?

これらのアプローチについてどう思いますか?私が考えなかったものはありますか?

答えて

関連する問題