あなたが取得するとき
https://encrypted.google.com/search?q=%s
%s
クエリは暗号化されていますか?または単に応答?そうでない場合、なぜGoogleは公開コンテンツも暗号化して提供する必要があるのですか?
あなたが取得するとき
https://encrypted.google.com/search?q=%s
%s
クエリは暗号化されていますか?または単に応答?そうでない場合、なぜGoogleは公開コンテンツも暗号化して提供する必要があるのですか?
回答:
リクエスト全体が暗号化されます。URLやコマンド(GET
)も含まれます。プロキシサーバーなどの仲介者が収集できる唯一のことは、宛先アドレスとポートです。
ただし、TLSハンドシェイクのClient Helloパケットは、SNI拡張を介して完全修飾ドメイン名をプレーンテキストでアドバタイズできることに注意してください(@hafichukに感謝)。これは、最近のすべてのメインストリームブラウザーで使用されますが、一部は新しいOSでのみ使用されます。
編集:(これで「良い答え」のバッジがついただけなので、質問全体に答える必要があると思います…)
応答全体も暗号化されます。プロキシはその一部を傍受できません。
検索やその他のコンテンツは、すべてが公開されているわけではないため、Googleがhttps経由で提供しています。また、一部の公開コンテンツをMITMから非表示にすることもできます。いずれにしても、Google に自分で答えさせるのが最善です。
GET
コマンド)は暗号化されています。これはRFC 4366で
URL自体は暗号化されているので、クエリ文字列のパラメーターはネットワーク上を単純に移動しません。
ただし、GETデータを含むURLは多くの場合Webサーバーによってログに記録されますが、POSTデータはほとんどログに記録されないことに注意してください。したがって、のようなことを計画している場合/login/?username=john&password=doe
は、しないでください。代わりにPOSTを使用してください。
HTTPS HTTPデータが転送される前に、基礎となるSSL接続を確立します。これにより、すべてのURLデータ(接続の確立に使用されるホスト名を除く)がこの暗号化された接続内でのみ伝送され、HTTPSデータと同じように中間者攻撃から保護されます。
上記は、ここにあるGoogle Answersからの非常に包括的な回答の一部です。
http://answers.google.com/answers/threadview/id/758002.html#answer
ホスト名の後のURLの部分は安全に送信されます。
たとえば、 https://somewhere.com/index.php?NAME = FIELD
/index.php?NAME=FIELD
一部は暗号化されています。somewhere.com
ありません。
すべてが暗号化されていますが、クエリはサーバーのログに残り、さまざまなログアナライザーなどからアクセスできることを覚えておく必要があります(通常、POSTリクエストの場合はそうではありません)。
はい、安全です。SSLはすべてを暗号化します。
POSTリクエストからの抜粋:
POST /foo HTTP/1.1
... some other headers
GETリクエストからの抜粋:
GET /foo?a=b HTTP/1.1
... some other headers
どちらの場合も、ソケットで送信されるものはすべて暗号化されます。クライアントが GETリクエスト中にブラウザでパラメータを見るという事実は、真ん中の男が同じことを見るとは限らない。
SSLはヘッダー解析の前に行われます。つまり、
Client creates Request
Request gets encrypted
Encrypted request gets transmitted to the Server
Server decrypts the Request
Request gets parsed
リクエストは次のようになります(正確な構文を覚えることはできませんが、これで十分です):
GET /search?q=qwerty HTTP/1.1
Host: www.google.de
これは、同じIP上の複数のホストに異なるSSL証明書を使用することが問題になる理由でもあります。要求されたホスト名は解読されるまでわかりません。
HTTP/1.1
最初の行の末尾に来ます。
HTTPSを使用する場合、GETリクエストは暗号化されます。実際、これがセキュリティで保護されたWebサイトに一意のIPアドレスが必要な理由です。解読されるまで、リクエストから目的のホスト名(または仮想ディレクトリ)を取得する方法はありません。