Firebugを使用して、HTTPS Webサイト(gmail.com)のデータ転送を確認しました。しかし、送信されたデータ(ユーザー名とパスワード)に暗号化が表示されません。 SSL暗号化はどこで行われますか?
SSLプロトコルは、HTTPプロトコルの透明なラッパーとして実装されます。 OSIモデル に関しては、少し灰色の領域です。通常はアプリケーション層に実装されますが、厳密にはセッション層にあります。
次のように考えてください。
SSLがHTTPとTCPの間にあることに注意してください。
実際の動作を確認したい場合は、 Wireshark を取得して、HTTP経由でサイトを閲覧し、次にHTTPS経由でサイトを閲覧してください。 HTTPバージョンのリクエストとレスポンスはプレーンテキストとして読み取ることができますが、HTTPSのものは読み取れないことがわかります。また、データリンク層から上に向かって、パケットが分割される層を確認することもできます。
更新:OSIモデルは過度に一般化されており、ここではあまり適合しないことが指摘されています(コメントを参照)。これは本当です。ただし、このモデルの使用は、SSLがTCPとHTTPの間の「どこかに」あることを示しています。厳密に正確ではなく、漠然とした現実の抽象化です。
HTTPSでは、WebブラウザとWebサーバーの間で暗号化が行われます。 Firebug はブラウザ自体で実行されるため、クリアテキストデータが表示されます。暗号化は、ブラウザを終了するときに発生します。
ネットワークモニターツール( Microsoft Network Monitor または Wireshark など)を使用して、暗号化されたトラフィックを監視します。 Man-in-the-Middle攻撃Fiddler のような製品を使用して、攻撃者が何ができるかを味わってください(つまり、接続を傍受してデータを回復することは可能です)ユーザーは、信頼されていない証明書に関する「ブラウザの最初の警告を無視する」ように説得できます。警告を無視しないでください!)。
HTTPSは HTTP over TLS (または 以前のバージョンのTLS の名前であるSSLを介して)です。
SSL/TLSは、適切に構成されている場合、信頼性の高いトランスポート(通常はTCP)を介して、2つの通信アプリケーション( TLS仕様 を参照)間のプライバシーとデータの整合性を提供します。
TCPソケットはTLS仕様では言及されていませんが、SSLおよびTLSは、プレーンなTCPソケットのように使用できるモデルを提供することを目的として設計されましたいくつかのEdgeケース(たとえば、 closeing sockets の場合、またはアプリケーションで再ネゴシエーションをアプリケーションに認識させたい場合)に加えて、これは実際にほとんどの場合です。SSL/ TLS多くの場合、スタックは、SSL/TLSソケットを単純なTCPソケット(構成後)と同じ方法でプログラム可能にするラッパーを提供します。たとえば、JavaのSSLSocket
extends Socket
。
ほとんどのアプリケーションは、SSL/TLSを使用するために既存のライブラリに依存しています(たとえば、JavaのJSSE、SChannel、OpenSSL、MozillaのNSSライブラリ、OSXのCFNetworkなど)。プレーンなTCPコード(通常、証明書と信頼管理に関するすべて、および必要に応じて暗号化/暗号化スイートの設定)、SSL/TCPソケット(またはストリーム、 API)は、アプリケーションに関する限り、プレーンテキストを交換するために使用されます。これは、透過的に暗号化作業を行う傾向がある基本的なライブラリです。
ブラウザーの開発者のツール内のトラフィックを見ると、これらのライブラリーの上で交換されているものが表示されます。暗号化されたトラフィックを確認するには、実際のトラフィックを確認する必要があります(Wiresharkを使用するなど)。
すべてのネットワークモデルは不完全ですが、この質問はSSL(TLS)が何をするかを調べることによってのみ答えることができます。 (1)信頼性の高いネットワークストリーム(OSIレイヤー4のTCP)に加えて、暗号化された双方向ストリームを提供し、(ほとんどの場合)サーバーと(オプションで)クライアントのIDを保証します。認証クライアントは、必要な認証チャレンジに適切に回答できるプロセス、ユーザー、またはその他のエンティティである場合があります。
TLSはトランスポート層セキュリティを意味します。ただし、セッションID、整合性、起動、破棄、および管理を実装しているため、セッションレイヤーに非常に属しています。ウィキペディアのページには、これがOSIプレゼンテーション層に属していると記載されています。これはおそらく間違っています。プレゼンテーション層は、データをネットワークに依存しない形式にマーシャリングし、適切なアプリケーションを介してホスト側でそれを解釈することにより関心があります。
保管時の暗号化(データベースフィールドや電子メールメッセージなど)は、プレゼンテーションレイヤーの候補になる可能性がありますが、OSまたはアプリケーションセキュリティの形式に近いことをお勧めします。
そのため、実際には、TLSはトランスポート(TCP)にポイントツーポイントのセッションセキュリティを提供するため、ほとんどがセッションレイヤーです。他の方法では、明らかにアプリケーション層(OS、ユーティリティ、またはユーザーアプリ)である認証機能を提供します。
つまり、レイヤー5は多く、レイヤー7は少しです。
幸運を。
バニラTCP/IPソケットと同様に、SSL/TLSチャネルへのデータの読み取り/書き込みが可能であるにもかかわらず、JavaまたはCなど)で、SSLはSSLセッションの概念を提供します。複数のTCP/IP接続で維持されるため、IMHOを使用すると、SSLがセッションレイヤープロトコルになります(なぜ誰かがTLS名を考え出したのか...)。
SSLは、OSIモデル(Layer6)のプレゼンテーション層で動作します。リファレンスTCP/IPガイド、M。Kozierok、111ページを参照。プレゼンテーション層に関連付けられているのは、Secure Socket Layer(SSL)プロトコルです。」 HTTPSは、暗号化の目的でレイヤー6のsslを使用するアプリケーションレイヤープロトコルです。
これはトランスポート層の上の層で、通常はTCPです。
Wiresharkを使用して暗号化されたデータの送受信を確認できます。