2011年06月04日

コンピューターウィルス作成罪?

MiAU から 「情報処理の高度化等に対処するための刑法等の一部を改正する法律案」について慎重審議を求める声明 が出ている。

ソフトウェアをリリースしている立場としてかなり気になる。

『コンピューターソフトウェアの重大なバグ(瑕疵)の放置が提供罪に該当する事態がある』とのことだが、いくつか疑問がある。

ソースコードしか提供していないものがあるのだが、これは そもそも、『コンピューターソフトウェア』に該当するのだろうか? ビルドしなければ、動作することはないし、ビルド環境の違いで動作しないような場合もある。ー要するに 動作するものと ソースコードは、1:1 に対応しない。ビルドすら不可能な場合だってある。

それに、ビルドするときに改変して 『トロイの木馬』を埋め込むようなことは可能で、それは提供されたソースコードをみても分からない。

ソースコードの提供には、責任がないとすると ビルドして提供する側に責任があることになる。まぁ 『トロイの木馬』のような話もあるし、たぶん一般的な認識ではないかと思う。

    そうはいっても、法律を制定する側の 一般的な認識とは限らない。いままでの例から考えても、信頼しきることはできない。

次の疑問はライセンス。ほとんどの オープンソースのソフトウェアは、『AS IS で提供するものだから、いかなる保証もないよ』と(ソースには)書いてある。そして、それを了承することが 使用できる条件になっている。ビルドして提供するとしても、『使用できる条件』なのだから、ライセンスとして添付しての提供になるのが普通である。

オープンソースのソフトウェアは、無償であることが多い。『なんらかの保証を求めた時点で使用権を剥奪する』というのは、さすがに法的にも有効だと思うのだが、実際のところどうなのだろう?

ちなみに、有償のソフトウェアも同じような条項が付くのが普通である。保証するためのコストが価格に込められてないならば、やはり法的に有効であろうと思える。

でもそうであれば、重大なバグ(瑕疵)の放置って何だということになる。

だいたい、PL法でも ソフトウェア単体は 法の対象になっていない。命がかかわるような重大な問題であっても 対象にはならないのである。それには、ちゃんとした理由があるはずだ。

    実はちゃんとは知らないのだが、次の理由だろうと思っている。

    ソフトウェア単体では、どのように動作するかそもそも定義できない。OS やら ハードウェアを含んだシステムとして 定義しないと 動作の定義は不可能で、そういうものは普通装置として認識される。

    (装置であれば、PL法の対象になる。)


まぁ、こういうわけでソフトウェアにたいして、責任を追求するのは無理がありそうな気がするわけだが、無理が通される可能性はある。

さて、次の疑問。放置って何?

私の認識では、バイナリが違えば別のソフトウェアである。

    というか、ライセンスが違えば バイナリが同じであっても別のソフトウェアと言えるかも知れない。が、ここでは そこまでは追求しない。

おなじソースコードから作成した A と B のバイナリがあったとする。そして A と B を作った人(団体)が違うとする。

A を作った人は A のみの責任を負う。B に対する責任を負ういわれはない。

    これは、常識として通用している。これを前提として オープンソースのビジネスが成り立っている。

おなじソースコードから作成しても別のソフトウェアであれば、改変したソースコードから作成したら当然別のソフトウェアであろう。

放置しないということは、別のソフトウェアを提供しなおすということで、コストがかかるということだ。装置することが許されていないとなると、別のソフトウェアの購入を強制することが出来るということであろうか?

たぶんそんなことは、ないのだろう。それはともかく、重大な問題があったソフトウェア と 置換されるべき 別のソフトウェア との関係はどのように定義されるのだろう?

    なんだが、グダグダな感じで終わらせてしまったので、補足。

    要するに、バイナリとなってリリースされるソフトウェアは、それで完結している。

    発禁にすることはできても、表現を変えて再提出せよと命令することは出来ないのではないか?

    そういう風にかんがえると、『重大なバグがあったらそのままの形で売り続けてはいけない。』ぐらいにしないといけないのではないか?

    『そのままの形』と書いたが、バグがあることを告知して、修正版があれば、それを入手する情報が添付されていれば良いのではないか? (リンク先が更新されるという前提で)リンク を貼っておくのでも良いかも知れない。

    有償のものは、そういう感じで良いと思うのだが、無償のものはそれでは困る。有償だと金銭の授受がある以上責任がある人(団体)がはっきりしている。無償だと、配布している人が存在しないかも知れない。あるいは、著作権が切れている状態かも知れない。あと、歴史的理由で実用としては配布していないかも知れない。

    無償だと免責だとか、ソースコードが添付されていれば、免責だとか。なにか配慮が欲しい。

    バグがあるという理由で、著作物を消滅させることにはなって欲しくないものだ。

こういうわけで、現時点では、具体的になにを意味するかわからないのだ。そうであれば、反対すろこともできない。私も慎重審議を求めることにしよう。

追記: 2011/06/17 本日 「ウイルス作成罪」(不正指令電磁的記録作成罪) が成立した。

毎日jpの記事 では、コンピューターウイルスを「意図に沿った動作をさせず、不正な指令を与える電磁的記録」などと定義。という説明になっている。誰もが『これはバグの定義では?』と思う内容だ。記者の無理解のためこういう説明になったのか? はたまた 本当なのか? 本当だとすれば、どうしてこうなったのだろう?

そもそも、コンピュータ・ウイルスとは、使用者の意思に関係なく 無限に感染していくようなもののことだ。コンピュータに依存している社会が危機にさらされるから、そういう性質のものを作ること自体が絶対悪である ... という風に私は理解している。

    無限に感染していく性質ならば、必ず自分自身をコピーする性質がある(実行形式の)プログラムのはずだ。それだけを問題にすれば良い。「記録を破壊した」とかは、別の犯罪だ。そういうプログラムをなんらかの方法で実行させれば良いわけで、コンピュータ・ウイルスでなくとも成り立つ。

    「記録を破壊するプログラム」をメールで大量に送ること ... これは犯罪だとは思うが、なんらかの形で騙して 損害を負わせるようなことだから 詐欺の類ではないのか?

    「記録を破壊するプログラム」が、自分自身を 勝手にメールで送る ような機能を合わせ持っていれば、これはコンピュータ・ウイルスだろう。

追記: 解説がいろいろ出てきた

    『無断で他人のコンピューターにおいて実行させる目的』で ウイルスを 「作成」「提供」「取得」「保管」すると 罪に問われる。そして、ここで言うウイルスは、バグがあるプログラムを含む定義。

    ということらしい。

    他人のコンピューターにおいて実行させるのに、普通は「無断」などあり得ない。騙されて実行してしまうのが普通。騙されて実行してしまうことも この法律に引っかかるのだろう。だが、「騙す目的での行為」 と 「作成、保管」とは 論理として つながらない。どのようにでも解釈されうるおそれがある。

      『無断で他人のコンピューターにおいて実行させる目的を持ったプログラム』の 「作成のみ」なら プログラムの動作で判断可能で、まだ理解できるのだが、そうは書いてない。まぁ「保管」が含まれると恐ろしいことになるから、そうは書けないのだろう。

      そういう理由もあって、このような表現をしているのだろうが、やってはいけないことの本質を捉えていないから、どのようにでも解釈される印象だ。

    本当に 「無断で実行させる」例として、OS の脆弱性をついてアタックをかけて 実行させる という手段がある。これを罪とするのは、正当だとは思うが、これだけが該当するような感じではない。そして、これは本当の意味のウイルスの特徴ではない。

    増殖するのがウイルスの特徴であって、「無断で実行させる」だけならば「増殖」しない。 「増殖するもの」に対して 軽い罪のように思われるし、「増殖しないもの」に対して 重い罪のような印象がある。なにより、解釈しだいというのが怖い。

「情報処理の高度化等に対処するための刑法等の一部を改正する法律」 を読んでみた。

    いまさらながら、条文を読んでみた。正直 リンクで紹介されないと読む気がしない。ようやくリンクを見かけたので、読むことにした。

      第百六十八条の二 正当な理由がないのに、人の電子計算機における実行の用に供する目的で、次に掲げる電磁的記録その他の記録を作成し、又は提供した者は、三年以下の懲役又は五十万円以下の罰金に処する。

      一 人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録

      二 前号に掲げるもののほか、同号の不正な指令を記述した電磁的記録その他の記録

    「作成」「提供」に関しては、どうもこれだけらしい。

    すなおに読むと...『正当な理由がない』 のにバグのあるプログラムを作成したり配布したらダメとしか読めない。

      『正当な理由がない』 -- 『興味本位』ってのは、『正当な理由』にはならないのだろう。趣味でプログラムを作るのに、『正当な理由』などあるのだろうか?

      『人の電子計算機における実行の用に供する目的』-- 実行させる目的 って何だ? そもそも プログラムを 配布するのは、実行させる目的のはず。ソースコードは、そのままでは実行できないが、実行させる目的 であるとは言える。ソースコードだけだからと言って 安心できない。

      ところで、AVR は、人の電子計算機に入るのだろうか? 入らないと判断できる記述ではないから入りそうな気がする。

      (一) は、やはりバグの定義にしか読めない。

    「取得」「保管」も同様で、『正当な理由がない』 のにバグのあるプログラムを「取得」「保管」してはならないという風に読める。

    「無断で実行させる」とかは解釈のひとつに過ぎないわけか。『正当な理由』だけが拠り所という感じ。悪意をもってと判断されば、なんでも罪に問える 内容に読める。

    悪評が高い 「不正アクセス禁止法」 でも、条文自体はちゃんと書いてあるように読める。それでも、『ACCS裁判』では、判事が内容を読み違えたと私は思っている。これはもっとひどい。条文を読んでも、どういう理由で、どういう行為が罪になるのかサッパリ分からない。いったい司法は、なにを基準に判断するのだろう?

      「不正アクセス禁止法」では、アクセス制御機能 = 鍵と理解すると 整合がとれた内容になっている。
      目的は、鍵による秩序の維持を図ること。
      (一) は、他人の鍵をつかうな。
      (二) は、鍵 を ピッキングで 開けようとするな。
      そして、(三)は 鍵 を 壊すな。

      バックドアは、 鍵がない入口があることを意味する。本来なら (三) かどうかは議論にすらならないはず。

      (補足) これは、私の個人的主張を平易に説明したもので、正確さにかける。だが、このように捉えないと 矛盾が生じる。そこまで分析はしたのだが、説明は困難なのでそこまでは踏み込まない。
      "鍵" という概念を導入して、それを保護することで秩序を守る という目的ならば、バックドアをも保護する のは "鍵" の存在意味がなくなるということで 論理が成り立たない。... 細かく分析すると、もっと出てくるのだが、これぐらいの説明で止めておく。


では、どういう内容なら良かったのか?

    たぶん 2 つの概念に分かれるのではないか

    ひとつは、『感染させるためのしくみ』を実際に行使する目的をもって作成するようなこと。

      『感染させるためのしくみ』とは、『計算機の使用者を騙してプログラムを実行させる』あるいは、OS の脆弱性を突くようなことをして、『計算機の使用者に無断でプログラムを実行させる』ようなもの。

      ここでは、プログラムがなにかということは問わない。そんなことをするのは、プログラムがなんであれ悪なのだ。

      だいたいプログラムを差し替えることは容易であり、犯行の直前まで安全なプログラムを実行するようにしているかも知れない。

      (追記)こうは書いてみたものの、『計算機の使用者を騙してプログラムを実行させる』ものには、メールの文面や Web サイトのリンクが含まれる。あまりに容易に作成できるから条件を変えるか、条件を増やさないとまずい。といっても、詐欺のようなものだし、実際に実行したら罪を問うことを否定はしない。

      ところで、 Web サイトに フラッシュ や java ,スクリプトが 含まれていたらどういう扱いになるのだろう? ほとんどの場合『計算機の使用者は意図』しておらず『無断で』動いている。java などは、『計算機で動作』はするが、計算機のファイルにアクセスできないようになっていて 『人の計算機で動作』とは定義されないようにしないとダメなのではないか?

    もうひとつは、本来の意味のウィルスの作成。

      本来の意味のウィルスは増殖することを特徴とするから、かならず自分自身をコピーする機能を持っている。そして、『計算機の使用者に無断で』自分自身のコピーを実行する

      『計算機の使用者に無断で自分自身をコピーする機能をもった』もの を 実際に行使する目的をもって作成するようなこと。

      このようなプログラムが 上記の機能と組み合わさると 他の計算機にも感染して爆発的に増殖することになる。だからといって組み合わせたものだけを罪とする必要はない。これだけでも危険なのだ。

      また、これと 上記のものとは、違う技術になる。どちらかの作成を専門とする場合もありそうだ。

    表現は吟味しないといけないのだろうが、どういう特徴をもったものがどういう理由でダメなのかをはっきり書けば良いのではないのだろうか?

    あと、例外として『正当な理由がある』場合はのぞくとなっていれば良いのだろう。どういうのものがダメか判断できれば『正当な理由がある』かどうかも判断できる。そして、『正当な理由』はまれだということになっていれば良い。できたら 『正当な理由の例』も条文にちゃんと書くべきだろう。
posted by すz at 10:10| Comment(1) | TrackBack(0) | 日記
この記事へのコメント
専門は法律でないのですが、
刑法38条にあるとおり、故意でない行為(過失)は犯罪にはなりません。
168条の2には、過失を罰する規定はないようですし。(あるのは傷害罪とかくらい)

ので、まじめに動かすつもりで作ったものに、うっかりバグが入って(過失)いても、罪ではないはずです。

とかいっても、デバックするまでバグはあるものというのが前提のはすですが、
その辺は、素人には言い張ったほう勝ちでないでしょうかね。
Posted by のら at 2011年11月06日 16:57
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/45708543
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック