やはり起きてしまったかといった感である。昨日例のWinnyのバグ発見報道である。
Winnyにバッファオーバーフローの脆弱性、回避策は「利用の中止」のみ
このバグ報道は起こるべきして起こったというしかない。それはP2P開発の難しさにある。それは何だろうか?
□ソフトウェア開発中止 ほぼイコール 利用すべきでないソフト
簡単に説明するために有償のソフトを購入した場合を考えてみる。基本的にはソフトにはサポート期間が決まっており、その範囲であればバグの修正、あるいは別途サポート費用を積むと障害時の切り分けをすることできる。
フリーソフトの場合、サポートの範囲はあいまいだ。
しかしながら、[一般的な暗黙の了解だと]ユーザサービスに影響に大きな影響が出た場合には開発者はバグ修正などに動くことだろう。もしそれができなければ、[その件についてはサポートできない]と宣言することになる。後者の場合、ユーザ側がリスクを取ることになる。当然ユーザはそのソフトを使うか他のソフトを使うか選択することになる。
私が言いたいのは、基本的にサポートされていないソフトで重大なリスクが発生した場合には、すぐにソフトの使用を中止すべきであることだ。例え重大なリスクが発生しない場合でも速やかに開発サポートがあるソフトに乗り換えるのが望ましい。
□Winnyならではの特殊事情
情報漏えい事件は金子氏の逮捕によりWinnyのサポートができなかったのが大きな要因であった。その時点で本来であればソフトの使用の中止または他のソフトの乗り換えをユーザ自身が判断すべきだった。
しかし、ユーザはそうしなかった。それはなぜか?大きく分けて2点考えられる。
[事情1]日本人がソフト、特にサポートに対する考えが甘い
[事情2]Winnyシステムとしてのの脆弱性(情報漏えい)を敢て楽しんでいた
事情1は日本人が今だソフトというのは、何にせよ誰かがサポートしてくれるという[淡い期待]をどこかで持っていることだ。例え深刻な事象が発生してもウィルス会社や有志、あるいは国がなんとかしてくれるのだろうと。
しかしながら、それは本質的な解ではない。サポートが切れた時点でそのソフトを本来使うべきでないという基本的な意識が、ユーザにはあまりないのではないだろうか?ITリテラシーに対する教育が広まっているが、ソフトのサポートについてもきっちりとした教育を受けさせるべきだと思う。
事情2はいうまでもないかもしれない。Antinnyによる情報漏えいを楽しむ初心者ユーザが被害者になる、いわゆるミイラ取りがミイラになる悪循環だ。
このようなソフトサポート切れによる重大なリスク発生は、今後も起こることだろう。
皆様はどのようなことをしたら、今回のような事件を防げると思うだろうか?私は本質的にはユーザのセキュリティ教育をきっちりと行うしかないと考えている。
□P2Pソフト開発はなぜ難しいのか?
これからが本題である。
P2Pソフトの開発は特にセキュリティ分野に比べて通常のソフトの開発とは比べ物にならないほど大変だ。
それはなぜか?
P2Pソフトを使ったことのある多くの人は次のようなことを意識したことがないかもしれない。
「P2Pソフトは時に応じてクライアントにもなるし、サーバにもなる!」
つまりP2Pソフトは基本的にサーバとほぼ同じようなセキュリティ対策をする必要があるのだ。
□P2Pソフトはサーバである!
P2Pソフトはサーバである、この意味について補足しよう。
通常のソフトは特定のサイトに対してアクセスを許可する。そのサイトというのは基本的にセキュリティ対策をしているので、通信をしてもそれほど被害が出るものでない。ソフト側でも対策ができる。
しかしP2Pソフトについては次のことを忘れてはならない。
「P2Pソフトは不特定多数から複数種類の通信を受け付けるサービスである。」
複数種類の通信とは例えばVoIPであったりIMであったり内容が違う通信を受けるということである。
つまり、複数の通信があれば、一つのP2Pソフトの中に複数のサーバが入っているのものとほぼ同様である。
P2Pソフトは一つの機能だけにセキュリティ対策をするのではなく、全機能にセキュリティ対策をすべきだ。
□Winnyのバグ発見が遅れた理由
さて今回のWinny事件に振り返ってみよう。どうしてバグ発見がこんなにも遅れたのか?
理由は主に2つあるだろう。
[理由1]仕様が完全にクローズドだった
[理由2]通信が暗号化されていた
暗号のメカニズムがわかった今、仕様についても解明が続くだろう。その際にはより大きなバグが報告されるに違いない。もしかするとそのバグをついた深刻な攻撃が行われる可能性がある。
このようなことを考えるといつも一つのことを頭に浮かぶ。仮にWinnyがオープンソースならどのような進化を遂げていたのだろか?
Winnyは技術的に興味深いシステムであった。もしWinnyがオープンソースであったら日本のP2P技術は格段に進歩していただろう。オープンソースであったらAntinny対策も誰かが行っていて、深刻な事態にはならなかったかもしれない。しかし逆により大きなバグがすぐに発見されていて、それを悪用された攻撃が行われたかもしれない。どちらに世界は動いていたのだろうか。