
Firefoxは最近ファイル共有サービスを開始した。送信エンドツーエンドの暗号化を約束します。共有するファイルは送信者のブラウザで暗号化され、共有 URL に埋め込まれたキーを使用して受信者のブラウザで復号化されます。
ファイルを共有するための URL の形式は次のとおりです。
https://send.firefox.com/download/03837dac3928b1d1/#lIFX1W1S2oXSwJF0QgMe_A
URL の一部は Mozilla のサーバー上のファイルの場所を表し、他の部分は暗号化キーを表していると思われます。ただし、有効な URL から、どの部分を変更しても「リンクの有効期限が切れています」というエラーが発生します。そのため、私の推測が正しいかどうかわかりませんでした。
とにかく、私の質問は、エンドツーエンドの暗号化にどれだけ自信が持てるかということです。このメカニズムは賢いのですが、どのデバイスでも Firefox アカウントから共有リンクを取得できることに気付きました。つまり、リンク全体が何らかの形で Mozilla のサーバー上の私のアカウントに保存されているということです。
もしそうなら、Mozilla が共有ファイルをすべて復号化することは技術的に可能です。何か見落としているのでしょうか? Firefox Send が実際にどのように機能するか、またそのエンドツーエンドの暗号化メカニズムに頼っても安全かどうかについて、よく理解している人はいますか?
どうもありがとう。
答え1
私も同じことを疑問に思い、この質問にたどり着きました。まあ、自分で調べてみることにします。
Mozillaは使用された暗号化を文書化したここもっと簡単に説明すると、
アップロード中
- アプリ/ブラウザが暗号化キーを生成する
- このキーは、3つの追加キーを生成するために使用されます。1つはファイル暗号化用、1つはメタデータ用、そして1つは署名キー用です。
- パスワードを設定すると、パスワードと暗号化キーが安全な方法で結合され、代わりに署名キーが作成されます。
- ファイルとメタデータは暗号化されます
- 暗号化されたデータと署名キーはMozillaに送信されます
- 署名鍵の生成方法により、いずれかの鍵を生成するために使用された元の暗号化鍵を逆算することはできないことに注意してください。
- Mozilla はファイルの URL (# の後の部分を除いたもの) とトークンを送信します。このトークンを使用してファイルを削除できます。
- アプリに#記号と暗号化キーを追加します
ダウンロード中
- ダウンロード ページに入ります。すべてのブラウザが # の後の部分をサーバーに送信するわけではありません。(通常、これらは同じページの別のセクションにリンクするアンカー リンクに使用されます)
- Mozillaはあなたのアプリに「nonce」(一度だけ使用される番号)または基本的にランダムなゴミデータを送信します
- # の後に暗号化キーがあるため、アプリはアップロード手順 2 と同様に 3 つのキーすべてを生成します。アップローダーとまったく同じキーが取得されます。
- アプリは署名鍵を使ってサーバーから提供されたナンスに署名する
- アプリは署名されたナンスをMozillaに送信する
- Mozillaも同じ署名鍵を持っているため、Mozilla側でもステップ4を実行し、送信した鍵と一致することを期待します。このステップにより、
- 正しい暗号化キーを知っている
- または、ファイルがパスワードで保護されている場合は、パスワードを知っている
- キーを知っていることが確認されると (キーをサーバーに公開することなく)、Mozilla は暗号化されたメタデータを送信します。
- アプリはコンピュータ上でこのメタデータを復号化し、詳細を表示します
- ダウンロードをクリックします
- アプリは暗号化されたファイルをダウンロードし、コンピューター上で復号化します
それで、あなたの質問に答えると:
URL の一部は Mozilla のサーバー上のファイルの場所を表し、他の部分は暗号化キーを表していると思われます。ただし、有効な URL から、どの部分を変更しても「リンクの有効期限が切れています」というエラーが発生します。そのため、私の推測が正しいかどうかわかりませんでした。
ダウンロード手順 6 から、正しい暗号化キーを知っていることを証明できない場合、Mozilla はファイルの送信を拒否します。
とにかく、私の質問は、エンドツーエンドの暗号化にどれだけ自信が持てるかということです。このメカニズムは賢いのですが、どのデバイスでも Firefox アカウントから共有リンクを取得できることに気付きました。つまり、リンク全体が何らかの形で Mozilla のサーバー上の私のアカウントに保存されているということです。
この部分は私がリンクした文書には書かれていない。起源アップロードされたファイルのリストがあなたのアカウントにアップロードされていることがわかりました。このデータは、ファイルの暗号化と同様のプロセスで暗号化されていると思います。
調べてみたところ、暗号化キーはローカルで生成されるようです。ただし、キーがどのように同期されるかはわかりません。
もしそうなら、Mozilla が共有ファイルをすべて復号化することは技術的に可能です。何か見落としているのでしょうか? Firefox Send が実際にどのように機能するか、またそのエンドツーエンドの暗号化メカニズムに頼っても安全かどうかについて、よく理解している人はいますか?
ここでの大きな免責事項は、私は暗号化の専門家ではないので、暗号.seこれについての意見。
私に言わせれば、ここでの暗号化プロセスはかなり堅牢で、使用されているアルゴリズムは業界標準です。Mozilla が、ファイルごとに 1 つずつ使用されているすべてのキーを総当たり攻撃で調べない限り、すべてのファイルを復号化する方法はありません。
ただし、Mozilla が適切に機能していることを信頼するために必要な追加機能について知っておく必要があります。
- パスワードはサーバーによってのみ検証されます。暗号化されたファイルと暗号化キーを入手した場合、パスワードを知らなくてもデータを復号化できます。通常、サーバーはパスワードを知っていることを証明しない限り暗号化されたファイルを送信しないため、これは問題になりません。ただし、Mozilla 自体が暗号化されたファイルにアクセスできるため、ここでは暗号化キーが唯一の保護手段となります。
- ユーザーが提供するパスワードのほとんどが弱いことを考慮すると、パスワードを使用してデータを直接暗号化するよりも、ランダムで強力な暗号化キーを生成する方が適切です。
- 数学関数で実際の現在時刻を取得できないため、有効期限を暗号的に安全な方法で実装することはできません。したがって、期限切れのファイルは Mozilla によって削除されることを信頼する必要があります。
Firefox Send オープンソース サーバーは、ストレージ バックエンドとして AWS をサポートしていることに注意してください。Firefox がパブリック サービスで何を使用しているかはわかりませんが、AWS を使用している場合は、上記の両方の問題でも AWS を信頼する必要があります。