2010-11-30 19 views
1

今まで私は安全なコミュニケーションを本当に研究しておらず、基本的な質問がいくつかあります。ブラウザ(クライアント)とサーバがあるとします。私が理解していることから、サーバーにはパブリックキーとプライベートキーの両方があります。公開鍵は全員が知っており、秘密鍵はサーバだけが知っている。したがって、クライアントがサーバーにメッセージを送信すると、サーバーの公開鍵で暗号化され、サーバーだけがそれを復号化できます(サーバーには秘密鍵があるため)。セキュリティで保護された通信の基礎

質問:サーバーがクライアントにメッセージを送信したいときはどうなりますか?サーバーは秘密鍵でメッセージを暗号化し、クライアントは公開鍵で復号化します(誰でも知っています)。ここまでは順調ですね。しかし、誰かがトラフィックを盗聴すると、誰もが公開鍵を知っているので、彼はメッセージを解読することもできます。どのように安全ですか?私は事前にここ:(

おかげで本当に基本的な何かを理解していないと確信して多くのことを簡素化

敬具、 ペタル

+0

これはどのような話題ですか? –

+0

これはプログラミングのQ&Aサイトであり、プロトコルのQ&Aサイトではありません。あなたの質問を話題から外すと思う人もあれば、そうでない人もいます。 –

+0

私は[RFC 2246(TLS 1.0)](http://www.rfc-editor.org/rfc/rfc2246.txt)の読書を勧めます。簡略化のために、RSAまたはDHE_RSA暗号スイートに当てはまらないものはすべて無視することができます。まずセクション7.3を読んで、残りの部分を読んで、図1のラベルの最初の図のコピーを持ってください。 –

答えて

3

安全な通信には暗号化(実際には簡単な部分)だけでなく、さらに重要なのは認証です。

事前にキーを交換することなく2人の間で暗号化された通信を確立することができます(たとえばDiffie–Hellman key exchangeを参照)。

難しい部分は、あなたが話している相手が誰でも信頼できることを確認しています。公開鍵と秘密鍵が入ってくる場所です

だからワークフローは次のようにやや行く:。

  1. 接続は、クライアントとサーバの間で行われます。
  2. クライアントはすでにサーバーの公開鍵(非対称暗号化)を知っているため、他のエンドポイントは自分が誰であるかを証明できます。公開鍵は、検証されたときに、サーバーの秘密鍵で暗号化されています。
  3. 認証が完了したので、両当事者は上記のDiffie-Hellmanのような方法を使用してshared secretを確立します。
  4. この共有秘密情報は、残りのクライアント/サーバーセッションのすべてのデータ交換の暗号化/復号化キー(対称暗号化)として使用されます。
  5. 接続が閉じられると、上記の暗号化キーは破棄されます。新しい接続が確立されると、上記のアルゴリズムは新しいセッションのための新しい暗号化キーを生成します。
+0

本当に便利です!ありがとう:) –

5

を!:クライアントは、対称暗号化の鍵を生成し、それを送信しますサーバーに公開鍵で暗号化する 安全な鍵交換が行われます そこからクライアントとサーバで交換された鍵で対称暗号が使用されます 標準的な方法はDiffie-Helman key exchangeです与えられた例より複雑です。

+0

公開鍵と秘密鍵は非対称暗号ではありませんか? –

+0

です。非対称暗号を使用して共有秘密を交換します。 シークレットを使用して対称暗号を実行する – garph0

+0

+1良い簡素化。 @Petar - 非対称(公開鍵/秘密鍵)暗号は、最初の鍵交換 –

関連する問題