web-dev-qa-db-ja.com

クライアント側の暗号化はサーバー側より本当に優れていますか?

Webアプリケーションは、クライアント側ですべてのユーザーデータを暗号化して、ユーザーが暗号化を解除できないことをユーザーに納得させることができます。

ユーザーがパスワードを入力すると、ブラウザでデータを暗号化するために使用され、暗号化された状態でサーバーに送信されます。サーバーはパスワード、暗号化キーを認識していないため、暗号化を解除できません。

しかし、ほとんどのユーザーは暗号化に使用されるコードを確認することができません。彼らができることはそれを信頼することだけです。クライアント側の暗号化は制御感を与えるかもしれませんが:

  • サーバーは、1つの暗号化コードを1人のユーザーに送信し、別の暗号化コードを別のユーザーに送信できます
  • 政府機関は、特定のユーザーの暗号化を無効にするようにサーバー側の会社に要請する場合があります

それでは、ユーザーの観点から見ると、クライアント側の暗号化にはメリットがありますか?

17
Andrei Botalov

あなたは正しいです。あなたの目標を考えると、クライアント側の暗号化はおそらくあまり意味がありません。それは価値がないということではなく、いくつかの重大な落とし穴があり、価値が限られているというだけなので、あなたの時間はおそらく他の測定に費やされるでしょう。このトピックに関する古典的なテクニカルリファレンスは Javascript暗号化は有害と見なされます です。

クライアント側の暗号化を使用すると知覚に役立つかもしれないと考えている場合、実際のセキュリティは実際には改善されませんが、それも非常に有望な角度ではないと思います。平均的なユーザーは、「クライアント側の暗号化」というフレーズが何を意味するのか見当がつかないので、暖かくあいまいな感情と関連付けることはないと思います。

ユーザーとの信頼関係を築き、ユーザーのデータを保護する方法を改善するために、標準的な手順を踏むほうがよいと思います。サイト全体のHTTPSに移行しましたか?顧客に優しい強力なプライバシーポリシーをお持ちですか?顧客へのサービスを充実させ、サイトに情熱を注ぐことに重点を置いていますか?

11
D.W.

他のユーザーが言及したように、これに関する多くの議論は、ITセキュリティの傘下に置かれるでしょう。しかし、私はこれについて(または少なくともディスカッションの初めに)UXの視点があると思います。これについては、以下で詳しく説明します。


あなたは質問自体で答えを述べました:

クライアント側の暗号化は制御感を与えるかもしれません

あなたが言及したように、クライアント側とサーバー側のどちらの暗号化もセキュリティの点で絶対確実ではないので、それらの間で選択するものは何もありませんね?

まあ、それはあります-それは知覚についてです。ユーザーが自分のデータが安全な方法で処理されていることに気付いた場合、ユーザーはより満足するでしょうこれが実際にそうであるかどうかに関係なく

確かに、リスクについてユーザーに嘘をつかないことが重要ですが、ほとんどのアプリケーションでは少数のユーザーしか気にしない可能性が高いので、セキュリティソリューションの重要な詳細について、それが入り込めない場所で議論できます。興味のないユーザーの方法。

これを踏まえて、私が提案するソリューションは、クライアント側の暗号化を実行してユーザーに制御感を与え、次に、セキュリティメカニズム、その詳細、およびセキュリティの正確さを段階的に開示することです。注意してください。

編集:ユーザーが見る必要があると感じるものによっては、この立場が倫理的な意味を持つ可能性があることを認識しています。しかし、冷静な観点から見ると、知覚は王様です。

3
dhmholley

GoogleのGoogle Mailオフラインクライアントのように、ブラウザ用のオフラインモードクライアントを作成することもできますChrome(これは、シンクライアント内で実行されるシッククライアントです!)。

そのようにJSコード:

  • 通常のサンドボックスを使用して、ブラウザーで実行されている(ユーザーファイルなどを台無しにできない)
  • ただし、ダウンロードは1回のみで、ユーザーごと、接続ごとに変更することはできません。

すべてのユーザーが同じパッケージを取得できるようにするには、そのフィンガープリントをパブリックリポジトリに公開し、できれば多くのサイトに複製し、ダウンロード後にインストール前に自動的に確認する必要があります。

警告:これは、アイデアのヒントの提案にすぎません。 「オフラインリーダー」のセキュリティモデルについては研究していません。

注:Firefoxの拡張機能はブラウザのすべての機能に完全にアクセスできます(サンドボックス化されていないため)。これは適切ではありません。これらの情報、私はあなたのプライバシーポリシーに従うことであなたを信頼します」)。

0
curiousguy

クライアント側でJavaScriptで暗号化を行うことには、オープンソースセキュリティの利点があります。ROT-13の「暗号化」スキームを隠していないので、ユーザーはあなたを信頼します。これは、誰かがサーバーに侵入して、上記のJavaScriptを悪意のあるコードに置き換えた場合にも当てはまります。

ほとんどのユーザーはJavaScriptを読み取ったり、キャッシュされたバージョンと比較したりしません。違反があった場合、一部のユーザーは秘密を盗まれるでしょう。しかし、過去5年間にすべてのユーザーの秘密を無意識のうちに漏らした会社である可能性ははるかに低くなります。

0
Fax