web-dev-qa-db-ja.com

政府の令状とデータ要求の場合、クライアント側の暗号化が進むべき道ですか?

クライアント側の暗号化は一般的に理想的とは見なされていないことを私は知っています。ただし、サーバー側の暗号化によってユーザーに完全な安心感を与える方法は想像できません。

データがクライアントで暗号化されており、サーバーが暗号化されたデータのみを受信する場合、政府からの圧力があっても、サーバーの所有者がデータを改ざんしたり、データにバックドアを提供したりすることは不可能です。

ただし、サーバー側では、サーバーの所有者は、政府のバックドアに暗号化を入力する前に、特定のデータを漏斗するよう政府から圧力を受ける可能性があります。

したがって、政府が特定のユーザーのデータを放棄するように強制したとしても、クライアント側の暗号化は、サーバーの所有者であるあなたにそのような最後通告からのより良い保護を提供しない会社を構築しようとした場合?

1
Snowman

クライアント側の暗号化は一般的に理想的とは見なされていないことを私は知っています。

私はそれが真実だとは思いません。あなたはいくつかの異なることを混同しているかもしれません。

安全なソフトウェア設計の標準的なルールの1つは、ユーザーを決して信頼しないことです。これは、たとえば、フォームフィールドが正しい形式であることを検証するときはいつでも、サーバー上でmustを実行する必要があります。そうしないと、攻撃者がアプリケーション攻撃ペイロード。これは、アプリケーションが結果のデータと相互作用するものである限り、特定の形式の暗号化にも当てはまります。

ここで話しているのは、エンドツーエンド暗号化です。このような状況では、暗号化されたデータはサーバー側のアプリケーションでバイナリブロブとしてのみ処理されます。これは、クラウドストレージやメッセージングアプリなどのいくつかの状況でのみ役立ち、高度な検索など、多くのユーザーが必要とする機能を提供する機能を放棄します。

だからあなたの質問に答えるために、

したがって、政府が特定のユーザーのデータを放棄するように強制したとしても、クライアント側の暗号化は、サーバーの所有者であるあなたにそのような最後通告からのより良い保護を提供しない会社を構築しようとした場合?

はい、エンドツーエンドの暗号化は可能です。

ただし、さらに考慮すべきことがあります。クライアントアプリケーションはクローズドソースですか?次に、ユーザーは、暗号化されていない状態でデータを自分の(または政府の)サーバーに送信していないことをどのように確認できますか?クライアントアプリケーションはアプリストアからインストールされていますか?監査したものから大幅な変更を加える新しいバージョンのアプリをプッシュしていないことをユーザーはどのように確認できますか?クライアントアプリケーションはバイナリとしてインストールされていますか?あなたが提供しているバイナリが、彼らが読んだ変更されていないソースからのものであることをユーザーはどのように確認できますか?最近の Apple FBI論争 これらの問題のいくつかを扱った。

また、 forward secrecy の件名も関連しています。この件では、政府に渡されたキーでは、past会話を復号化できません。 。