• ベストアンサー

SSLの安全性

通信内容がSSLの場合、盗聴や改ざんなどを防げるといこうとですが、 どの程度安全なのですか? 中途半端な知識はあるのですけど。 例えばSnifferやカーニボーで通信内容を完全に傍受されたとき、 公開鍵暗号と共通鍵暗号もとられて解読されてしまう気がするのですが? 例えば私が通販サイトを利用した場合、通販サイト側(WAN)までにはいくつかの 経路がありますが、社内から(LAN)利用した場合などは少なくとも社内からは Snifferで私の通信データは傍受可能です (スイッチハブだからふつうでは無理とかいうのは別) もちろん100%安全とは思っていませんが、どの程度信頼できるのでしょうか? キーロガーやその他スパイウェアの危険性は別として。

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.8

3度目の#4です。 気分がいいので、もう少しわかりやすくしてみました。 ●SSL通信概略 1.ブラウザから要求。   サーバー  ←   [要求]    ←  ブラウザ            (非暗号化) 2.サーバーは自分の公開鍵を渡す。  (公開鍵は盗まれても問題ない)   サーバー  →   [公開鍵]   →  ブラウザ            (非暗号化) 3.もらった公開鍵で、共通鍵を暗号化、サーバーへ渡す。  (公開鍵で暗号化されているので、サーバー本人しか復号化できない。)   サーバー  ←   <共通鍵>   ←  ブラウザ           (公開鍵で暗号化) 4.以降の通信は、共通鍵で行う。   サーバー  ←  <<メッセージ>>  ←  ブラウザ           (共通鍵で暗号化)   サーバー  → <<応答メッセージ>> →  ブラウザ           (共通鍵で暗号化) *実際には、もう少しやっています。 (サーバーは公開鍵と一緒に証明書を渡したり、  使える暗号アルゴリズムの一覧を渡したり。。。) これでどうでしょうか?

その他の回答 (7)

  • txrx
  • ベストアンサー率45% (83/184)
回答No.7

通販サイトでSSLを使う理由は、もう一つあります。 SSLが利用できる→信頼できるサイトである。 と言うことです。 SSL認証は最初だけ秘密鍵・公開鍵を使用してその後共通鍵を使用するとか、技術的な話を行いがちですが、安全性は確率論に過ぎません。 それよりも、そのサイトがしっかりと認証された信頼のできるサイトか?が問題となり、そのために商用サイトはSSLしていると思います。 SSLできないサイトは、認証機関が認証してくれないひどいサイトとも考えられます。 また認証機関から発行される証明書は、人が取り扱うものですから、技術的に大丈夫であっても、どこかに裏口があるかもしれませね。通信を信用してはいけません。

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.6

#4です。 >実際の通信は最初に公開鍵、秘密鍵で共通鍵を暗号化し転送、以後の通信は 共通鍵の暗号化に使うのは、あくまでも公開鍵だけです。 秘密鍵は、決して他人に教えてはいけない性質のものです それと、補足ですが、 #4で書いた流れは、具体的には、 送り側 ・・・ ブラウザなど 受け側 ・・・ サーバー となります。 置き換えてもう一度#4の流れを読んでください。

  • root139
  • ベストアンサー率60% (488/809)
回答No.5

> 相手の秘密鍵で共通鍵を暗号化し、ユーザーに送られた公開鍵で複合して・・・ これは逆です。公開鍵で暗号化し、秘密鍵で複合します。 #4のngsvxさんは、その様に書かれていますね(下記の部分)。ちゃんと読みましょう。 > 2.そのまま送っては危険なため、受け側の公開鍵で、1で作った共通鍵を >  暗号化する。 > ・ > ・ > ・ > ポイントは、共通鍵を公開鍵で暗号化することです。 > ご存じかもしれませんが、公開鍵鍵は、それを使って暗号化したデータを > 復号化できません。復号化できるのは対となる秘密鍵だけです。 一般的に、公開鍵で暗号化し、秘密鍵で複合する場合は、秘密鍵を知っている人しか読めないデータとなります。 逆に秘密鍵で暗号化し、公開鍵で複合する場合は、秘密鍵を知っている人しか送れないデータとなります。(送信者の認証という意味になります) http://www.atmarkit.co.jp/fnetwork/rensai/pki03/pki01.html http://www.atmarkit.co.jp/fsecurity/special/02fivemin/fivemin00.html http://www.atmarkit.co.jp/fnetwork/rensai/pki01/pki01.html

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.4

>どの程度安全なのですか? 暗号化の強度の話ではなく、「SSLの仕組み自体の安全性の問題」 という質問ですよね? >例えばSnifferやカーニボーで通信内容を完全に傍受されたとき、 公開鍵暗号と共通鍵暗号もとられて解読されてしまう気がするのですが? 誤解があるような気がします。 ・公開鍵は、その名の通り、一般の人公開するべきものですから、  誰に知られても問題ありません。 ・共通鍵は暗号化されて相手に送られますから、問題にはなりません。 SSL通信の大雑把な流れは、 1.送り側は、本文を暗号化するための鍵(共通鍵)を作成する。 2.そのまま送っては危険なため、受け側の公開鍵で、1で作った共通鍵を  暗号化する。 3.送り側は受け側へ、暗号化された共通鍵を送信 4.送り側は、、本文を共通鍵で暗号化。 5.暗号化された本文を、送信。 となります。 ポイントは、共通鍵を公開鍵で暗号化することです。 ご存じかもしれませんが、公開鍵鍵は、それを使って暗号化したデータを 復号化できません。復号化できるのは対となる秘密鍵だけです。

5S6
質問者

補足

公開鍵、秘密鍵による非対称の完全通信ならわかるのですが、 実際の通信は最初に公開鍵、秘密鍵で共通鍵を暗号化し転送、以後の通信は この共通鍵で行うと書いてあったようなのをみたことがあります。 (すべてのデータを公開鍵、秘密鍵で暗号化すると計算に時間がかかり負担がかかるため) 相手の秘密鍵で共通鍵を暗号化し、ユーザーに送られた公開鍵で複合して 以後共通鍵による暗号だと、ユーザーに近い側を傍受された場合、公開鍵も とれそうなので、結果的に共通鍵がわかってしまい、結局解読できてしまう。 ような気がします。 どこが間か違っているんでしょうか?

回答No.3

例え全通信内容を傍受したとしても、公開鍵暗号の復号化は現実的な時間ではできません。 ご存知だとは思いますが、公開鍵暗号は暗号化の鍵と復号化の鍵は別々になっています。 SSLのサーバと通信を行う場合、通信はSSLのサーバの公開鍵を利用して行われますが、これを複合化するための鍵(秘密鍵)は、SSLのサーバしか持っていません。 このため、例えすべての通信を傍受されたとしても、復号化は不可能です。 #ちなみに改ざん防止(=電子署名)も同じ原理なので、同じことになります。 理論的にはすべての鍵の組み合わせを試行すればいつかは秘密鍵にたどり着きますが、現実的な時間でたどり着くことはできません。 量子コンピュータが開発されれば、公開鍵暗号は数秒で解読されるといわれていますが、少なくとも当面は安全です。 SSLのサーバから直接秘密鍵を盗み出すという方法が考えられなくもありませんが、そこは別とするということなので....

5S6
質問者

お礼

しくみについてはネットでいくつかありますが、 なんかちょっと不安です。 実際の通信は共通鍵で最初だけ非対称鍵でやっているようなので。

回答No.2

ちょっと補足です。 通信の最初から最後まで全てを抜き取られたとしても、 それを再現しても見れないです。 暗号化をするときには、単純に鍵だけで行っているのではなく、 乱数とかそういったものもかかわってきますから。

回答No.1

鍵の解読が難しいのですよ。 鍵をそのままネットワークに流すわけではないですからね。 鍵の解読に掛かる時間より前に、さらに強度な暗号化方式が出てくるので安心です。 っていうのが、公開鍵方式の考え方じゃないでしょうか?

関連するQ&A