正体不明のソフトウェア

午後、新宿の本社からの帰り道。新宿南口あたりで声がする。

「英語教材のCD-ROMを配っていま〜す」

見るとハッピを着た若い男が、通りすがる人たちに声をかけ、CD-ROMらしきものを手渡している。それを見て、疑問が沸いた。

このCD-ROM、もらった人はそのままPCに挿入するんだろうか?

PCに挿入されることにより、ルートキットが(AutoRunなどで)インストールされるようなCD-ROMだったらどうするのだろう? どこかのサイトで読んだ記憶がある。ある団体が米国か英国かで似たような実験をした。CD-ROMを配布し、そのうち何名が疑うこともせずにPCに挿入するか。驚くほど多くの人がCD-ROMをPCで再生したと報告されていた。

これが、CD-ROMではなく、サプリメントの試供品だったらどうだろう。これも実際に良くあるケースだ。私はこちらも怖くて受け取れない。何が含まれているかわからない。なんたって、コーラに毒薬が含まれているような国だ(古い*1)。

では、何があれば、配布されたものを信用できるのだろう。名の通った会社のものだったら大丈夫だろうか。だが、会社名を偽っているかもしれない。

CD-ROMやDVDなどで流通されているソフトウェアパッケージの場合、名乗ったとおりの会社の製品であることが何らかの形でわかるようになっている。たとえば、Windowsの場合、かなり凝ったホログラムがCD-ROMの表面に印刷されている。他の会社でもパッケージの外装などにより真正の証明はできていると考えてよいだろう*2

だが、オンラインで入手できるソフトウェアの場合はどうだろう? 通行人に配布されるCD-ROM。ネット上で入手できるソフトウェア。同じような問題を抱えていないだろうか。

1つの解決策にコード署名という方法がある。マイクロソフトのAuthenticodeなどだ。ただ、手間がかかったり、コストがかかったりするなどの理由により、通常はソフトウェアベンダーにより利用される。となると、最近流行りのCGM(Consumer Generated Media)やオープンソース/コミュニティでの開発では、そのソフトウェアの真正を証明するにはどうすれば良いだろう。

ソースコードをつけるというのも1つの方法だ。だが、そこに置かれている実行ファイルは一緒に公開されているソースコードから本当にビルドされたものだろうか。また、ソフトウェアが複雑になれば、ソースコードが提供されているからと言って、中に含まれる悪意のあるコードや脆弱性を抱えたコードをすべての人が見つけられるわけではない*3

大きなコミュニティによる開発体制が整えられているソフトウェアの場合は、このような問題を排除する仕組みもとられているが、個々人が開発したものを独自の形で公開している場合は、必ずしもその限りではない。利用する側はきちんとその利用に伴うリスクを理解すべきだろう。

おもちゃのようなものだが、私もいくつか小さいツールをインターネットで公開している。さて、利用したいと思う人が安心して使えるようにするためには、どうしたら良いのだろうか。

[追記 on 5/10] 高木先生の日記「Greasemonkey利用者の感覚と不正指令電磁的記録作成罪立法者の感覚」にほぼ同じ内容のことが書かれていた。

*1:今の人は知らないだろう

*2:Piracyが問題になっている一部の諸外国だとこの仮定は成り立たない

*3:つい最近?もFirefoxGreasemonkeyでアマゾンのアソシエイトIDを埋め込んだものがあったのでしたっけ?