私のDelphi 2010アプリケーション (現在開発中) は、ユーザーのファイルを暗号化し、EC2 にアップロードしてから S3 にアップロードします。ユーザーは、安全な Web サイトを使用してファイルをダウンロードできます (ドロップボックスに似ていますが、コンテキスト、市場、用途などは異なります)。
RSA 暗号化を使用しています。ユーザーが自分の秘密鍵 (ローカルで生成) を使用するか、共有鍵 (クラウド上にある) を使用するかを選択できるようにします。
ファイルのダウンロードに取り組んでいるときに、適切に処理する必要がある 4 つの可能性がありました。
ユーザーが自分の秘密暗号化キーを使用する場合:
を。Delphi / クライアントからのダウンロード: ファイルはダウンロード後にユーザーのマシンで復号化されます
b. Web サイト / PHP からのダウンロード: (直接) 不可能です。ユーザーが自分の秘密鍵をローカルで提供し、ダウンロード後にファイルを復号化できる小さなユーティリティをダウンロードする可能性をユーザーに与えない限り。
長所/短所: 安全ですが、簡単ではありません/制限が多すぎて、モバイルでは実行できません(?)
ユーザーは共有秘密暗号化キー (クラウド上にある) を使用することを選択
を。Delphi / クライアントからのダウンロード: ファイルは最初に EC2 上の PHP を介して復号化されます (その後、ユーザーに提供されます)。この場合、多くのユーザーがファイルをダウンロードしている場合 (可能性は低い)、または復号化するファイルが大きすぎる場合、ダウンロード プロセスが非常に遅くなる可能性があります。 .
b. ウェブサイトからのダウンロード / PHP: (a)と同じ
長所/短所: 単純明快 に動作しますが、CPU 使用率が非常に高くなり、ダウンロード時に許容できないほどの遅延が発生する可能性があります (特に、問題のファイル サイズが大きい場合)。
私の2部構成の質問は次のとおりです。
1) そのようなシナリオを処理するためのより良い戦略はありますか? と
2) ユーザーが秘密鍵と共有暗号鍵のどちらかを選択できるようにしたい場合、(暗号化戦略/ダウンロードの処理に関して) どうしますか?
PS。私は Delphi 2010 (クライアント) を使用しており、EC2 インスタンスで実行されている PHP 5.3 は、最新の標準の Amazon Linux 2012 ビルドを実行しています。
EDITトラフィックは常に暗号化されるため、HTTPS のみです。
EDIT 2暗号化/復号化にGPGを使用しています