1

私は現在、https 接続を許可しない無料のホストを使用しています。私のサイトは機密コンテンツやプライベート コンテンツをホストしていないため、有料ホスティングにアップグレードする必要はありません。しかし、私のサイトはパスワードを扱っており、多くのユーザーが異なるサイトで同じパスワードを使用しているため、これらのパスワードの処理に適切な量のセキュリティ/暗号化を適用したいと考えています.

Secure login: public key encryption in PHP and Javascriptから、パスワードがネットワーク経由で送信されるときにパスワードを保護するために公開/秘密暗号化を使用する際の最大の問題は、攻撃者がクライアントに送信された公開鍵を変更できることです。 、暗号化されたパスワードを傍受し、攻撃者の秘密鍵で復号化し、サイトの公開鍵で暗号化してからサイトに送信します。つまり、そもそも暗号化のポイント全体を無効にします.

もちろん、暗号化は暗号化しないよりはましですが、HTTPS 対応のホスティングを購入せずにできる限りのことをしたいと思います。それが私の質問です。

仲介者がサイトの公開鍵の代わりに自分の公開鍵を置き換えるのを防ぐ (または単に検出してユーザーに警告する) 信頼できる方法はありますか? または、サーバーから送信された公開鍵が実際にサーバーの公開鍵であることを確認する方法はありますか? これを確認する方法がない場合、SSL/TLS はどのように機能し、どのようにキーを確認しますか (SSL が公開/秘密キーを使用しない場合は申し訳ありませんが、私はそれについてかなり限定的な理解しか持っていません)。

フォームデータを暗号化するだけでは TLS/SSL を使用する場合に比べて非常に脆弱な方法であり、暗号化を破ろうと決心している人々がそれを行うことを止めることはできないことを私はすでに理解しています.コメントのみ (ただし、HTTPS を許可する無料のホスティング プロバイダーを知っている場合は、それらについて教えていただければ幸いです)

4

1 に答える 1

0

SSLが機能する理由は、ルート証明書がブラウザ内で配布されるためです。このスキームには多くの問題がありますが、一般的には信頼の鎖があります。この場合、ブラウザでの信頼で終わります(証明書の保存、配布、インストールなど)。認証局の秘密鍵が安全でない場合、これは失敗します。これは現在、非常に議論されている問題です

信頼の鎖:

ここに画像の説明を入力してください

ブラウザ証明書ストア:

ここに画像の説明を入力してください

JavaScriptの問題は、トラストストアがない(アクセスできない)ため、受け取ったキーを信頼できる方法がないことです。攻撃者はそれを自分のキーに置き換えるだけで済みます(そして自分のキーで自分のサイトにログインします。それは中間者攻撃の古典的な人間を構成するでしょう、そしてあなたがそれに対してできることは貴重にほとんどありません。

公開鍵で暗号化すると、盗聴攻撃からある程度保護されます。残念ながら、そもそも接続にアクセスできるほとんどの攻撃は、WiFiアクセスポイントを使用している場合など、MITMを作成できる可能性があります。

ブラウザのトラストストアを探してみてください。おそらく、その中に配布されている構成済みのルート証明書を表示できます。この証明書と秘密鍵のツリー構造は、公開鍵インフラストラクチャ(つまり、Google it)と呼ばれます。

于 2012-08-02T22:15:53.040 に答える