Windows 2000 SP4 + Apache 2.0.54で趣味で自宅サーバを運営しています。
ローカルではなく不特定多数がアクセス可能な状態です。
今度新しく、訪問者がそれぞれ自分のページへログインして
自分のポイントなどを閲覧できるようにしようと考えているのですが、
そこで情報漏洩の防止策として現在検討しているのがSSLです。
ログインの部分をどう作るのかはまだ検討中ですが、
多分JavaScriptでやることになると思います。
SSLとは何なのか、どんなものなのかまでをやっと自力で勉強したところで、
実際に導入はしていないのでSSLに関しては完全に初心者です。
Apache 2でSSLを動かすにはこちらのサイトがとても役に立ちそうなので、
(設定方法のページなども少し読ませていただきました。)
ぜひ参考にさせていただこうと思っているのですが、
せっかく勉強して導入してから無駄になっても困るので、
導入前に教えていただきたいことがあります。
まず、趣味でやっているだけのページで、資金的余裕もないので、完全無料での導入が第一前提です。
そうなると当然CAも自前になる訳で、
訪問者へ証明書をインストールさせない限り
ページへアクセスするたびに警告が表示されてしまうのは覚悟していますが、
CAを自前にするとどの程度危険になってしまうものなのでしょうか。
SSLを使用してもしなくてもCAが自前だとあまり意味がなかったり、
少しは良いが上級者が少し頑張れば解読できてしまうというようなら、
訪問者へ迷惑がかからないようやめておこうと考えていますが、
ASP.netが良いというような情報もありましたがIISのみでApacheの対応はまだ微妙ですし、
今のところSSLくらいしかないように思えます。
特に重要な個人情報を扱う訳ではないのですが、
ログインパスワードがばれてしまうようでは困りますし・・・
「絶対に安全だ!」または「絶対に危険だ!」とは言い切れない内容だと思いますので、
「不特定多数がアクセス可能なページでそのような運営はやめておいたほうが良い」
「有料の正式なCAよりも劣るがほとんど安全だと思う」
など、意見だけでもよろしくお願いします。
また、自前のCAでSSLにするよりも
SSL以外の別の方法のほうが良いというものがあればぜひ教えてください。
要するに、
「自己証明だと SSL の機能はどの程度落ちるのか ?」
ですか。
証明は成り済ましを防ぐものと多分かいてあると思います
暗号そのものは劣化する事はありません。
例えば途中にプロクシがいると、
サーバー --- プロクシ --- クライアント
の接続になりますが
プロクシがクライアントに証明を出すことで
サーバー --- プロクシ と
プロクシ --- クライアント は別の暗号表を使う
つまりプロクシではクライアントから来た暗号を1度平文に直して、
さらにサーバー用暗号でサーバーとやり取りをする事が可能。
そうすると、プロクシでは内容を盗聴できます。
ベリサイン等を使うと、プロクシが発行する暗号はNGですから
サーバーの暗号表でやり取りします。プロクシで解読は不可能になります。
と私は解釈しています。
またついでに言いますと
SSL など使わなくても大丈夫です。
どうやって盗聴するのですか?
現在普通の国内ISPを使っている以上第三者には難しい事です
それを相当な費用をかけて行う見かえりがありません。
あるとすればLANの部分でしょう。無線LANとか。
> SSL など使わなくても大丈夫です。
> どうやって盗聴するのですか?
> 現在普通の国内ISPを使っている以上第三者には難しい事です
> それを相当な費用をかけて行う見かえりがありません。
たとえば、ホットメールでは、最初のログインのページにだけSSLを使用し、
ログイン後メールを閲覧するときにはSSLを使用していません。
また、ヤフーメールでは、標準ではSSLを使用していませんが、
SSLを使用したページからのログインも可能です。
これらは、ログインのときに入力するメールアドレスとパスワードが
盗聴によりばれる可能性があるためSSLにより通信を暗号化しているということではないでしょうか。
具体的にどのように盗聴されるのかは分かりませんが、
どれだけ難しくても相当な費用をかけてでも何らかの方法で盗聴が可能だとすると、
自分のページが個人の趣味のページで一見盗聴する意味がないように思えても、
これから作ろうとしているログインが必要なページに
訪問者がホットメールなどと同じパスワードを使用していた場合、
悪意あるユーザが通信を盗聴することで
訪問者のホットメールなどのアカウントを盗むことが可能とならないでしょうか。
(本当はパスワードはすべて違うものを使うのが理想ですが・・・)
引き続き盗聴の危険について調べてみたのですが、
http://dictionary.rbbtoday.com/Details/term2336.html
にあるような「パケット・スニッフィング」という方法を用いれば、
意図的な盗聴はむずかしくても偶然重要な情報が手に入るという
まったく費用がかからない盗聴が可能ではないでしょうか。
別のページでも、インターネット上では宛先以外にもデータが届いてしまう場合があり、
それを防ぐことは不可能であるため、届いてしまっても良いように
重要な情報はSSLなどで暗号化して送信する必要がある
と書かれていました。
祇園さんの話も合わせると、特に今回は出所の証明は必要ないので、
単に通信内容を暗号化し宛先以外で盗聴されても解読不可能なようにしたいだけの場合は、
CAは自前でも問題はないということでしょうか。
> 引き続き盗聴の危険について調べてみたのですが、
> http://dictionary.rbbtoday.com/Details/term2336.html
> にあるような「パケット・スニッフィング」という方法を用いれば、
> 意図的な盗聴はむずかしくても偶然重要な情報が手に入るという
> まったく費用がかからない盗聴が可能ではないでしょうか。
実際に盗聴するとして何処でしますか?
隣の家の人のパケットは自分の所には流れてきません。
LANで漏れなければ実際上はほとんど漏れる可能性はありません。
ご存知と思いますがほとんどのプロバイダーやレンタルサーバーでは
まったく暗号化されていないFTPやPOPを使っています
それでも盗聴によりパスワードを盗まれたような話は聞きません。
> 別のページでも、インターネット上では宛先以外にもデータが届いてしまう場合があり、
現在のまともなプロバイダーの通信ではほとんど起こりません。
> 祇園さんの話も合わせると、特に今回は出所の証明は必要ないので、
> 単に通信内容を暗号化し宛先以外で盗聴されても解読不可能なようにしたいだけの場合は、
> CAは自前でも問題はないということでしょうか。
ですから前述のようにプロキシ等で出来るのですから絶対に問題ないとは言えません。
悪意のない偶然の盗聴や興味本位程度の盗聴なら防ぐ事は出来るはず。
商業取引等金銭がからまないなら十分です。
> ログインの部分をどう作るのかはまだ検討中ですが、
> 多分JavaScriptでやることになると思います。
とありますが、SSL以前の問題として本当にJavaScriptでログイン部分を作るのでしょうか?
JavaScriptはクライアントサイドで動作するスクリプトのため簡単にソースを見ることができ、IDやパスワード等をスクリプトに記載すると簡単に見れてしまいます。
外部ファイルにしたところで、多少面倒になるだけです。
ということで、ログイン部分はPerlやPHPのようなサーバサイドのスクリプトで作成するか、Basic認証を使用するのが良いかと思います。
もちろん、IDやパスワードを外部から見えない場所に置いておくなどの配慮も必要です。
また、自前CAで発行した証明書についてですが、基本的に暗号強度に違いはありません。
暗号の強度に違いはありませんが、「サーバ証明書」が信頼できるかどうかという違いです。
盗聴に関しては心配しなくても大丈夫だと思いますが、暗号化できるならしておくに越したことはないというレベルだと思っています。
実際のところ、祇園さんもおっしゃるように暗号化してないからと言って簡単に盗聴することは事実上不可能です。(LAN内なら別です。)
盗聴よりもむしろサーバへの不正侵入の方が簡単で、気をつけなければいけないと思います。
(盗聴はプロバイダ内等でなければ事実上不可能だが、不正侵入はセキュリティホールがあれば世界中からできる。)
> ということで、ログイン部分はPerlやPHPのようなサーバサイドのスクリプトで作成するか、Basic認証を使用するのが良いかと思います。
とりあえずはログインページの作成は後でやることにし、
まずはサーバへのSSLの導入と、
書き込むときにパスワードを入力する掲示板CGIをhttpsにしてみることにします。
> また、自前CAで発行した証明書についてですが、基本的に暗号強度に違いはありません。
> 暗号の強度に違いはありませんが、「サーバ証明書」が信頼できるかどうかという違いです。
今回は証明書の信頼性は気にしていないので、
祇園さんの言うプロキシのこと以外安全性は変わらないということで、
安心しました。
> 盗聴に関しては心配しなくても大丈夫だと思いますが、暗号化できるならしておくに越したことはないというレベルだと思っています。
> 実際のところ、祇園さんもおっしゃるように暗号化してないからと言って簡単に盗聴することは事実上不可能です。(LAN内なら別です。)
たしかにメールやFTPでSSLを導入しているところは少ないのですが、
ホームページ上でログインを必要としているサイトはほとんどSSLを使用しているので、
ホームページの場合だけ特に盗聴の危険性が高そうな気がしていました。
特に、TCPなどは、送ったはずのデータが届いていない場合再送信するというプロトコルなので、
「では最初に送ったパケットはどこへ?」などという心配もありました。
> 盗聴よりもむしろサーバへの不正侵入の方が簡単で、気をつけなければいけないと思います。
> (盗聴はプロバイダ内等でなければ事実上不可能だが、不正侵入はセキュリティホールがあれば世界中からできる。)
サーバにはファイヤウォールを導入していることはもちろん、
アプリ、ポート、プロトコル、方向が設定と全一致しない限り通さないよう設定しているので、
それほど心配ないと思います。
もちろんOSや各ソフトのアップデートは常に確認していますし、
ウィルス対策も自動更新+全ファイル完全監視にしています。
まったく暗号化していないため危険だと言われるBasic認証も、
SSLを通せばかなり使えるものになるのかもしれませんし、
その辺もよく考え、SSL導入を検討してみます。
SSLを導入しても本当に安全になったのかを
目に見える形で確認できないのが少し不安というか残念ですが・・・
祇園さん、ぱすかるさん、ありがとうございました。