私は現在、ファイルをアップロードして、プラットフォーム上にない他の人と共有する必要があるソフトウェアを開発しています。
これが暗号化に関する私のアプローチです。
ファイルが外部ユーザーと共有される場合、次の手順が実行されます。
このアプローチは安全ですか?また、より良いオプションはありますか?
アプローチは安全ですか?
いいえ-私はあなたの脅威モデルを理解していない場合。
脅威モデルによって異なります。サーバー(またはdbまたはdb-backup)オペレーターがファイルを復号化できるようにしたくない場合は、決してサーバーにファイル暗号化キーを与えないでください。
モデルで最も明確な脅威は、登録ユーザーのパスワードをブルートフォースで推測できることです。これを行うと、ファイルの暗号化キーとファイル自体を復号化できます。
更新
このアプローチに対するパスワードについて、少しずつ脅威を考えます。
一般に、ユーザー派生パスワードは安全ではありません。これについて考える1つの方法は、最終的にはパスワードが侵害されることです。フィッシング、キーロガー、キーボードで書かれたものを見つけたり、強引に強要されたりするかもしれません。つまり、データベースのコピーを取得したとしましょう。今度は、時間の経過とともに単純にpwを待つだけです(または積極的にそれを探します)。取得したら、コピーに含まれるユーザーがアップロードしたものをすべて復号化します。
これを別の方法で作成しました(その脅威を防ぐため)
私たちはビルドsend.firefox.comに基づいています。
ファイルがアップロードされると、クライアント側で暗号化され、サーバーに保存されます。暗号化キーは生成されたURLに保存され、サーバーには送信されません。
URLは受信者に送信され、URLは1回しか使用できず、24時間で有効期限が切れます。
これを追加しました-ファイルをアップロードした後、システムが生成したパスフレーズ(2つの一般的な5年生レベルの英語の単語)を返します。
ファイルをダウンロードするには、安全なリンクとパスフレーズを知っている必要があります。
美しさは、ユーザー登録が必要ないことです。