15 September, 2004

POPFileの決め手になる「ベイズ理論」って何だ?

スパムを判断するためのメカニズムに迫る

POPFileはいったいどのようにしてこれほどの高い精度でメールを正しく分類できるのだろうか? その秘密はベイジアンフィルターにある。POPFileはこのベイジアンフィルターという数学理論を採用してメールを解析しているのだ。

ベイジアンフィルターの基礎となっているベイズ理論(Bayes Theory)は、古く18世紀の牧師であり数学者であったトーマス・ベイズ(Thomas Bayes)という英国人によって考え出された原理だ。
ベイズは、「物事を判断する確率は、その物事の観察者にとっての不確かさである」と説き、神の存在でさえ数学的に示すことができると述べたそうだ。この考え方で物事を推定することをベイズ推定(Bayes Estimation)という。
簡単に言うと、新たなできごとを予測する際には、すでに起きている事実と、観察者自身の経験を考慮に入れることにより、かなり正確に推測できる、という考え方である。実生活では当たり前っちゃー当たり前だが、数学的にやるとなると簡単そうには見えない。

たとえば、あなたに宅配便で小ぎれいな小包が届いたとしよう。それが何かうれしいプレゼントか、そうでないかを予測することだろう。単純に確率を述べるなら、いちかばちか、50パーセントという確率だというのもあながち悪いとはいえない。でも、どこか実際的ではない。
実際には、その小包の大きさ、重さ、差出人、内容に関する記載事項などという観察に基づく「事実」と、過去の「経験」に基づく確率、つまりプレゼントだと思ったらそうでなかったという確率、あるいは期待通りだった確率を考え合わせるからだ。これを考慮に入れてはじめて、実際の結果にかなり近い予測が可能となる。

この考え方で正しい分類を予測するために、POPFileは最初にいくらかユーザーのトレーニングを受けると、それらのメールから学習する。
つまり、添付ファイルやHTMLのタグやコメントを取り除き、残されたヘッダと本文をコーパス(corpus)と呼ばれる単語群に分解する。 そして、分類されるメールの共通点を知るために、出現頻度の高いものを重み付けし、こうしてメールにおける各単語の出現と各バケツに分類された確率を計算できるようにコーパスデータベースを構築する。

新たなメールを受け取ると、POPFileはそのコーパスデータベースに基づいて、「バケツ」への分類に影響を及ぼす単語を抽出し、その単語の有無や出現回数などから計算して、いずれのバケツに分類するかを決定する。
その作業の過程で、POPFileは未知の単語にも遭遇するわけで、それによってセルフトレーニングを行うため、ユーザが間違いを指摘しない限り、自然に精度の高いコーパスデータベースができあがっていく。 間違った分類をしたことを指摘される(つまり手動で再分類される)と、POPFileはそのデータベースを訂正する。これにより、POPFileは「観察者の判断」を学習し、分類精度を上げることができるのだ。

ためしにPOPFile UIの「履歴」メニューから、spamに認定されたメールの「件名」をクリックしてみて欲しい。すると、メールヘッダと本文のあちこちがバケツと同じ色にされて表示されている。
さらに、ページの下のほうから「単語の頻度を表示」「単語の確率を表示」というリンクをたどると、各メールの分類に大きな影響を及ぼした単語が順に表示されており、大変興味深い。

POPFileのデータベースにスパムで使われる単語が十分蓄積されていくにつれ、業者はスパムらしからぬ単語を使ってメールを送らない限り、その判定をすり抜けることは難しくなっていく一方だ。
しかし、そのようなメールでは、スパム業者の目的を達することはできないだろう。スパムのフィルタリングの技術が向上するにつれ、彼らのビジネス上の目的が立ち行かなくなり、ついにはスパムメールという手段をあきらめてくれるようになればよいのだが。

(この文章はiNTERNET Magazine 2004/3, p.105に掲載された文に若干加筆したものです)

07 September, 2004

オープンソースの責任の所在?

マイクロソフト社のバルマー氏は、自身の講演においてLinuxについてどう考えているかについて示した際「Linuxのアキレス腱は誰も責任を負わないこと」だと述べています。これについて、いくつかのblogで「じゃあMSはどうなんだよ」との指摘を拝見しました。いずれの主張も、なにがしかの事実や現状を観察して出てきたものでしょう。ただ、残念ながらこの講演を直接聞いていないのですが、わたしがバルマー氏に質問できるのなら、ビジネスとしてどの局面において「責任を負う」ことが欠落していることを指摘したいのか、そこを尋ねたいですね。

「ソフトウエアそのものの責任を負う」?

LinuxカーネルにせよUNIXライクに統合されたものにせよ、複数の人間によるプログラムの複合体であることは言うまでもありません。プログラムが企業によるものであれ、個人によるものであれそのコードに対する責任をプログラマが負っていることは事実です。つまりプログラマが企業ハードウエアに対応するデバイスドライバをIBMやNECのような企業が作ってオープンソースとしてコントリビュートしているケースでも、個人が何かのコードをコントリビュートした場合でも、です。

対価は金銭とは限らないのは言うまでもありませんが、とにかくそれに対しその「責任を果たす」ということを、コードを公開し、著作権者を銘記し、フィードバックを集約していくことなどの方法で果たしています。それを怠ると、そのコードは、他人に引き継がれるか、オルタナティブコードの出現などにより淘汰されていきます。つまり、時の経過と共に、より効果的に責任を負う著作者によるコードへと選択されていきます。

別にオープンソースだから責任を果たしやすく、プロプライエタリだと責任を果たしにくいというハナシではありません。無責任なコードが永久的に許容されつづけないことをどう保証するのかについて、プロプライエタリなソフトウエアとオープンソースソフトウエアではアプローチが異なるだけです。(この部分はもう少し話したいことがありますが、今回はここで止めます。)

「ソフトウエアの利用に責任を負う」?

オープンソースソフトウエアによるビジネス実現に対価を得ることは構わないことになっています。プロプライエタリなソフトウエアは有償でライセンスを取得することにより、活用することができます。この局面で、インテグレータはMSのようなプロプライエタリなソフトウエアも、オープンソースソフトウエアも、どちらでも選択することができます。この場合に、MSのような主体者がないオープンソースソフトウエアに関する責任は誰がとるのか、という問題があるでしょうか?ありません。オープンソースインテグレーションの責任においては、シンプルな話、対価に対しその責任があるというのが答えです。

築地で寿司を食べる場合、客はその寿司のクオリティの責任を誰に求めますか?魚自身にですか?漁師ですか?市場関係者ですか?運送業者ですか?違いますね。寿司屋に求めます。なぜか。単純に、客は「寿司屋のサービス」に対価を払っているからです。それがインド洋のまぐろなのか、近海モノなのかなんてのは関心はあるかもしれません。が、責任という観点では、それはどうだっていいんです。「近海モノがおいしいらしい」という理由、あるいは最近見た「あるある大辞典」で知った知識をもとに(ものの例えです)、「近海モノ」を注文することがありますが、それでも「寿司屋のサービス」に対価を支払っているのです。

寿司屋は、その魚のクオリティを確保するために、あらゆる手段を使います。実際に海に出ている漁船を調査したり、市場関係者の特定の目利き人やディーラーに選定をアウトソースしたりと、さまざまな方法をとるわけです。どうするかは寿司屋が決め、寿司屋は素材に対しその対価を支払います。この連鎖の最後は「海」ですが、ここはオープンソースソフトウエアよりもはるかに「責任」の所在が見えない世界です。もっともはるかに安定し、完成しているように思いますが。いずれにしても私たちはそれに依存して生きているのです。神は偉大です。

もちろん、Redhat、TurboLinux、MiracleLinuxのようなディストリビューションベンダーが負うべき範囲は当然存在します。彼らは編集価値により対価を得ていますから、どのソフトウエアを自分たちのディストリビューションに含めるのかに関し、責任があります。自分たちも開発に参加することにより、その責任を果たしやすくなっているのでしょうが、それでも全部を自分たちで作る必要はありません。また、Debianのように、ボランタリで編集価値を生み出しているものもあります。彼らは彼らなりに「対価」が何であるかを知っています。

そこで、インテグレータは、どの方法で「素材」を調達するかを考え、選択します。良くないものは使わなきゃいい。ただ、シェア、評判、情報、あるいは経験など、どの根拠によって選択するにせよ、それが顧客の要件を満たしているものであることを証明する責任があります。それに対して対価を得ているのですから。

問題は、「オープンソースソフトウエアによるシステムの品質に責任を持つのは誰ですか?」と顧客から尋ねられたときに、SIerが「最終的に導入するインテグレータ、つまり私たち」だと明確に答えようとしないことではないでしょうか。最近、あるインテグレータ会社の社長さんと話していて、「この厳然たる事実を誰も明確に述べようとしない」と言っておられました。指をさして、「あいつのせいだ」と言いたい傾向のためです。マイクロソフトの製品がハングアップしてブルースクリーンを出しても、「うちのせいじゃありません、MSのせいです」と。食中毒を起こした客に、「最近の築地は良くなくてねぇ」とか言うのと大差ありません。

市場がないと寿司屋が経営できないのと同様、外部から調達したものをもりあわせてサービスにするという図式は非難の対象ではありません。むしろ、現状のITサービス提供連鎖においてエンドユーザから最大の対価を得る位置にいるインテグレータの目利き力不足で、かつ自分でロクに扱えないものをテキトーに扱って対価を得ているのであれば、それこそ非難されるべきだということです。オープンソースを扱ってなにがしかのサービスあるいは製品を提供する企業が、誰でも扱えるなどのメリットだけを享受し、その品質や性能に関しあまりにも無責任、という状況に問題があるのでしょう。

バルマーさんがこう言ったのであれば良かったのに。「オープンソースで無責任なビジネスをやる会社が多い」と。
ほんとはマイクロソフトさんこそお困りのはずですしね。あ、いや、矛先がそれてラッキーだったのかな?;-p

28 August, 2004

日経産業新聞記事:「フィッシング詐欺に注意」

8月23日の日経産業新聞7面、「情報技術の死角 安全対策を問う(上)オンライン銀行 - フィッシング詐欺に注意」という記事。少々協力させていただきました。主旨は、ご覧いただけるとわかるとおり、対策方法すべてに言及することにあるのではなく、そのうちのいくつかのわかりやすい指標をもって、特定のサービス分野にフォーカスすることにより、より具体的な対応状況について示すことにあります。

今週も、高木さん門林さんWASF関係でテレコンしていたときにもふと出た話。「WEBサイトの特定の危険性に関する具体的な数字情報って出てこないよねぇ。」 自分たちが調べた中で何パーセントが脆弱だった、とかそういう数字は特に出しにくい。

実はWASFの第0回カンファレンスでは、三井物産の新井さんがずばっと数字を出したので、非常に注目されました。その後も、情報セキュリティEXPOなどでわたしがぽろっと数字を出すと、あとで何社の記者に、「あの数字は?」と。それほど出ていない。出しにくいんだけど、出していくことの意味は大きい。そういうことなのでしょう。危険というものは、犯罪被害と同じで、あるかないかなんですけど、なにか数字がないと真剣に考えない。そういうものなのでしょう。

扱いにくい情報をもう一つ。フィッシング対策のように、かなりの程度ソーシャルセキュリティに関係している場合、つまり「マナー違反」「詐称されやすい」などの軽めのルール違反による危険が存在しているものの、それも先刻承知で採用しているものは扱い方が難しい。脆弱性通報機関では、実際問題この種類の取扱は難しいでしょうね。もちろん、策がないわけではないですが。

その点、この記事は大変大胆で、それゆえに大変わかりやすい。提示したいくつかの指標をもとに、金融機関のサイトを調べてくれて、しかも一覧表にしてばっさり斬っています。自分のメイン銀行だけチェックして、「よし」と思うだけでも、これでお腹一杯になられてもナニなんですが、まずはご一読を。(^-^;)

28 July, 2004

WEBセキュリティの社会的要素と「しつけ」

先日の情報セキュリティEXPOの専門セミナーで、「WEBセキュリティ」のテーマを担当しました。その講演の報道として、日経BPにて「“フィッシング”に利用されないようなサイト作りを」 - テックスタイル岡田氏 という記事が掲載されました。

実は、フィッシングの話に終始したわけではなく、むしろこの話題はWEBのセキュリティの考え方をどのように反映させるか、それによってどんなリスクが軽減できるか、という話の一環で補足的、例証的に取り上げたにすぎません。この機会に、そのあたりを少し説明したいと思います。

前提として、セキュリティは、技術的な要素に加え、社会的な要素があります。ビジネスの観点からすれば、WEBサイトで行なうどんなことも、その企業の社会的な責任が強調されてしかるべきです。ですから、企画段階において、WEBセキュリティは技術の話より先に、社会的な責任のほうを検討しなければなりません。

技術的な要素が、機密性(Confidentiality)、保全性(Integrity)、可用性(Availability)の3つであるのに対し、社会的な要素とは、説明能力(Accountability)、信ぴょう性(Authenticity)、信頼性(Reliability)の3つが挙げられます。
技術的要素と社会的要素の関係
技術的なセキュリティ要素の優先順位は、社会的な要素によって判断され、強弱がつけられることになります。

たとえば、顧客の情報資産がクリティカルな脅威にさらされていることがわかった場合、可用性のためにサイトをそのままにしておくのはよくありません。むしろ可用性は犠牲にし、機密性を守るためにWEBサイトを止める、という判断があることでしょう。これは、信頼性という社会的なセキュリティを守るというミッションによって優先順位が判断されるわけです。

そうすると、セキュリティを守る「技術」の位置付けが明確になってきます。これは、社会的な責任を果たすという目的のもとに、生じ得る難しい問題を極力減らすための道具なのだ、ということです。それをどう操るか、ということは経営的な問題だからです。 社会的な責任からはじめ、そして技術的な手法にブレイクダウンしていくのです。

そこで、例えば、昨今流行の「フィッシング(phishing)」 - なりすましサイトにユーザが「釣られる」被害 - を軽減するためにできることを、どのように整理できるか考えるとしましょう。 下記の例は詳細な点を網羅していませんし、一概に○×はつけられないでしょうが、検討の進め方を示しています。

まずは、「説明責任」。すると、企業が説明を意図的に怠ることにつながる手法(たとえばアドレスバーを隠す、フレーム表示する、など)をどうするか考えられます。「信ぴょう性」を確保するために、紛らわしい、容易に誤用される手法(似たドメインの許容、フレーム表示)を考えます。最後に、「信頼性」を確保するためには、「こういう方法はとらない」ということの明示や、オンライン・オフラインを問わず顧客とのコミュニケーションの中で企業のサービスの姿勢(プライバシ保護、本人確認のポリシー、他の業者によるクッキーの有無など)を示していくことができます。

あらゆる種類の詐欺、詐称はなくならないでしょう。だからこそ、企業としては、ユーザがそれを信じてよいのかどうか判断できるほど、最善を尽くしているかどうかを考えなければなりません。その点で「社会的なセキュリティ」の3要素は、思考ツールとして非常に有用です。起こり得るあらゆる脅威に関して、それに対応する技術を評価するところから始めると泥沼に陥ることがよくあります。セキュリティ手法の検討に疲れ果てると、セキュリティぼろぼろのサイトになってしまいかねません。

そういうときにこそ思い出して欲しいことがあります。つまるところ、セキュリティ問題は特定の手法の善し悪しの問題というより、「しつけ」の問題だということです。「セキュリティは結局、人だ」と言われますが、人のしつけという意味は当然のことながら、ひいては、採用する方策にそれは反映されてきます。レベルが上がってくると、そのガイドラインは「ドレスコード」にも例えられるのでしょうね。

落ち着いて、その企業のあるべき姿勢を原点に、もう少し上の角度から見て整理すると良いのでしょう。企業のWEBサイトは、その企業の「しつけ」について良くも悪くも雄弁に語っているんですね。自戒の意味をこめて、精進したいと思います。




27 July, 2004

IPO目論見書読書会:「本格的な」オープンソースビジネス?

IPO時の注目:「目論見書」

テンアートニのマザーズへの上場承認が7月1日、発表されました。同社はJava、Linux、RedHatなどというキーワードに関連する会社です。Javaや商用製品ディストリビュータとしての業績と、数年前に合併した喜多さん率いるNothern Lights(ノーザンライツ)ブランドのハードウエアでも知られています。

IPO(株式公開)発表における関心が集まるのは、上場資料、目論見書の「事業リスク」に関する説明の項(英語ではRisk Factor/Prospectus/Form 424)です。この欄は数年前に上場したぷらっとホームの書類にはオープンソースソフトウエアとビジネスの関係について、日本の株式史上初めての解説がありましたし、米国Redhatの「リスクはインターネットがなくなること」など、企業の活動方針の主張として興味深いものがあります。


事業に関する記載

今回、テンアートニの目論見書は「新株式発行並びに株式売出届出目論見書 」の第二部【企業情報】にあります。まず、同書11ページ (PDF内の24ページ)に「3【事業の内容】」、リスクについては同書20ページ (PDF内の33ページ)からの「3【対処すべき課題】」、「4【事業等のリスク】」に記載されています。

同社はまず、「事業の内容」を示す部分で、オープンソースのLinux導入のメリットとして、開発コストを低く抑えることができる、コスト競争力がある、という点のみを挙げています。リスク説明においては、Javaのリスクとして他の技術の台頭の可能性を挙げているのに対し、Linuxに関しては、製品を販売するという観点に特化して記載されています。

そして、事業の課題として3つの要素、すなわちLinux関連の人材確保育成、Linux訴訟問題、Java製品の拡販すなわちパートナーシップの確保について言及しています。

リスクを説明する部分で、訴訟問題の可能性としてSCO問題について「(5)知的財産権について」という節で言及しています。この問題に関しては、レッドハット株式会社(日本法人)とのビジネスパートナー契約、そしてOSDLとの協力による情報収集に務めるとしています。


ひとつの視点「本格的なアプローチ」

パートナー戦略などにもいろいろ突っ込みどころはあるんですが、ここでぐっと視点を絞るとすると、「テンアートニは本格的なLinux企業としてオープンソースによるサービスにどう取り組むのか」という点をみることができます。

大前提として、現在、Linuxは、ボランティアプログラマの集団によってではなく、企業内にいる職業プログラマによって開発されています。それは企業として成果物をオープンソースとして世に出すことにコミットしていることを意味しています。ですから、「開発コストが安い」、というのは、現在のLinuxには当てはまりません。他の主要ソフトウエアに関しても、政府や団体によるスポンサーシップや、開発主体企業が存在し、成果をオープンソースとするスタイルが多くなっています。開発は決して、無料ではありません。総じて、オープンソースソフトウエアそのものを「開発コストが安い」と言うのはナンセンスです。

ユーザへの影響でわかりやすいのは、オープンソースは、その「利用」に関して自由であり、オープンだという点です。オープンソースソフトウエアの特徴が「コスト競争力」ではなく、その「開発プロセス」にあり、それゆえにプロプライエタリなソフトウエアと比べて、ユーザがとるべきリスクが上にも下にも異なるという点があります。

すると、その利用の自由に伴う責任 - リスクも含む - については誰にかかってくるのでしょうか。顧客から対価を得たインテグレータがユーザに対して責任を負うことになります。ユーザはLinuxを買うのではなく、道具としてその機能を買うからです。Linuxを使ってそれを実現することにより、対価が発生しますから、その対価を受け取ったインテグレータはその品質に責任を持たなければなりません。そう、オープンソースインテグレーションの品質に責任を持つべきなのは、そのインテグレータです。

インテグレータの立場でこれをどのように行なうかについては、あえて平たく言いますが、「深さ」があります。これが、トラブルシューティング能力や、新機能、想定以上の規模への体力を図るものとなります。

  1. ソースコードは使わない。ディストリビューションのバイナリを使う。

  2. makeするときに必要に応じ使う。それでも、大抵コードそのものは見ないし、直さない。

  3. 障害があればソースコードまで追いかけ、パッチを提供。新機能が欲しければ開発に参画。

深度1の会社は無数にあります。プリインストールサーバで済む話であれば、インテグレータの必要もないかもしれません。設定さえすれば完結しますので、オープンソースソフトウエアを使うかどうかさえほとんど関係ありません。深度2は、アプリケーションを手がける会社ではやっていることもあります。深度3まで行ってはじめて、「ソースコード」が関係してきます。インテグレータの立場では、この深度3からが「オープンソースソフトウエアを扱う」ことを意味します。深度3以上として、「なにかの開発母体、主体になる」というレベルがありますが、それはインテグレーターのサポートレベルの議論とは別の話にも思えるのでこの論点からははずします。

テンアートニ社の目論見書を見る限りは、生じ得る問題の対応をRedHatとOSDLの陰にひそめるアプローチをとっています。はっきり言えば、明確にされているのは深度2までです。RedHat社との関係次第。しかも日本法人。ティファニーの代理店って、ティファニー以上のものにはならないですよね。米国のRH株価はティファニーに例えるにはオソマツだとは思いますが・・・。いずれにしても芳しくないです。

ただ、実のところ、どうなんでしょう、プロフェッショナルコンサルティングや、ハードウエアの開発事業をするわけですから、深度3が十分あるはずです。それなのに、どのように取り組むのかについては、語るに落ちることを避けたかったのでしょうか、この目論見書では読み取れませんでした。 それでも書きようはあったと思うんですね、、、。ソフトウエア開発能力の維持について、あるいはOSDLでの担当について、など・・・。オープンソースによるサービスはそこがポイントなんだということを、喜多さんはご存知のはずだと思うだけに、やや残念でした。

上場で集めた資本をきっかけに、より「本格的な」オープンソースサービス企業としてのご発展を期待したいと思います。

■テンアートニのIRサイトと目論見書
http://www.10art-ni.co.jp/ir/index.html
http://www.10art-ni.co.jp/ir/pdf/040701mokuromi.pdf

■ぷらっとホーム上場年度のIRサイトと目論見書
http://www.plathome.co.jp/about/ir/release_2000.html
http://www.plathome.co.jp/about/ir/pdf/kari.pdf