· 14分で読了

Coinhive マイニング事件

この記事は中国語から自動翻訳されたものです。翻訳によりニュアンスが失われている場合があります。

今日、日本のソフトウェア開発界隈で最もホットなニュースといえば、おそらく「Coinhive事件」だろう。この裁判は、ウェブサイト運営者がサイト内にマイニングスクリプトを設置し、閲覧者がページを訪れた際にマイニングを開始させたことに端を発する。この行為が「不正指令電磁的記録(いわゆるコンピュータウイルス・不正プログラム)」に関する罪で起訴され、一連の法廷闘争が始まった。

この訴訟が開発者にとって極めて重要である理由は、Web開発者である僕たちが最もユーザーと接点を持つ存在だからだ。ドメインとサーバーさえあれば、世界中の人々が自分が書いたウェブページを自由に閲覧できる。しかし、それにはリスクも伴う。開発者として、自分が書いたコードが理不尽にも有罪判決を下されるというのは、非常に恐ろしいことだと思う。

開発者は一般的に比較的高学歴で、所得も比較的高めであり、普段は極めて遵法精神が高く前科もないことが多い。彼らの人生において「裁判所に通う」という選択肢は存在せず、ある日突然警察に逮捕・家宅捜索され、飯の種である仕事道具を押収されるなど夢にも思わない。また、警察の取り調べや調書作成において、経験のない人間は緊張のあまり自分に不利な発言をしてしまったり、誠実に説明すれば必ず分かってもらえると思い込んだ結果、かえって泥沼にハマって身の潔白を証明できなくなったりしがちだ。台湾では取り調べの際に弁護士の同席や面会が認められているが、日本では一人きりで警察と対峙しなければならず、プレッシャーはさらに大きい。1

たとえ最終的に無罪を勝ち取れたとしても、裁判に通い、弁護士に相談し、弁護費用を支払うといった金銭的コストや心身の消耗だけでも、人生に計り知れない打撃を与える。


事件の概要

当事者は月間約3万PVのウェブサイトを運営しており、サイトの運営費用を維持するための収益手段としてマイニングスクリプトの導入を考えた。彼が利用したサービスは「Coinhive」と呼ばれ、マイニングスクリプトを提供するサービスだった。サイト運営者はスクリプトをページに埋め込むだけで、ユーザーが閲覧した際に自動的に実行される仕組みだ。

ここでマイニングの原理を簡単に説明すると、取引(トランザクション)を送信する際、各マイナーはその取引を承認するかどうかを検証するために計算を開始する。その計算方式は数学的な演算であり、通常は膨大な計算リソースを必要とする。 そのため、演算を成功させたマイナーは報酬として少額の暗号資産(仮想通貨)を受け取ることができる。CPUさえあれば誰でもこの計算に参加できるため、ブラウザ上でJavaScriptスクリプトを実行することで、ユーザーのCPUリソースを利用してマイニングを行うことが可能になる。もちろん、専用のマイニングマシンやGPUに比べれば得られるリターンはごくわずかであり、判決文によれば当事者が得た利益もわずか800円程度だった。

その後、当事者は検察官に起訴された。一審(横浜地裁)では無罪判決が出たものの、二審の東京高裁では逆転有罪判決が下された。そして今日、ついに最高裁判所で無罪が確定した2。判決文はネット上で閲覧可能だ。

閲覧者があらかじめこうしたプログラムの存在を知らされていなかった点は、閲覧者の意図に反するとしたが、事前同意がないまま利用者のパソコンを一定程度使うという手法そのものはネット広告と同様と判断。「社会的に許容しうる範囲内だ」と結論づけた。5人の裁判官の全員一致だった。 もっとも最高裁は、一般論として同種行為を許容したのではなく、今回の事件に限って無罪と判断したにとどまる。利用目的などが悪質なら刑事責任を問われる可能性はありそうだ。

日本経済新聞より抜粋3

争点

この裁判における攻防の最大の焦点は、この行為の正当性、すなわち要件にある「不正性」と「反意図性(ユーザーの意図に反するか)」に該当するかどうかだった。(刑法第168条の2(不正指令電磁的記録作成等))4

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

条文には「不正な指令」と記載されているが、何をもって「不正」とするかは単にプログラムのコード内容だけで判断するのではなく、行為時の状況やユーザーへの影響などを総合的に考慮して判断されるべきものだ。

不正性に関して言えば、一般市民から見ればマイニングスクリプトには不快感を抱くだろう。自分のCPUリソースを勝手に使われれば、快く思わないのは当然だ。しかし判決文(前述の抜粋参照)を見ると、本件の被告人はCPU使用率を抑える設定を行っており、ユーザーに事前告知しない点についてもネット広告と同様であると言及されている。したがって、好まれない行為ではあるものの、ユーザーに実害をもたらしたり個人情報を不正に取得したりしたわけではなく、タブを閉じればプログラムは即座に停止する。

また「意図に反する(反意図性)」という観点について、弁護側の主張はこうだ。事前にユーザーへマイニングスクリプトの存在を告知していなかったとはいえ、Google Analyticsや各種広告なども通常はユーザーの同意を得ずに実行されている。ウェブブラウジングにおいてこれは社会的に広く認知・許容された行為であり、マイニングスクリプトもその許容範囲に含まれるべきだというものだ。もし「ユーザーに告知していない」ことだけで有罪判決が下されるなら、世の中のほぼすべての開発者が有罪になってしまう。

補足

1. Coinhive マイニングスクリプトについて

被告人は当初、サイトの広告を削除し、代わりにCoinhiveのマイニングスクリプトを収入源としてサイト運営費に充てる目的で導入した。 ここで一つエピソードがある。Coinhiveはかつてスクリプトおよび利用規約を改定し、「ユーザーの同意が必須」となるよう仕様変更を行った。しかし被告人はその告知に気づかず、以前のスクリプトを使い続けていた。被告人はTwitterのDMで「ユーザーの同意条項を入れないとグレーゾーンになる可能性がある」という指摘を受け、同意機能を実装するのが面倒だと感じたため、スクリプト自体を完全に削除した(設置期間は約1ヶ月半だった)。

2. 警察の捜査と調書

翌年2月に警察から連絡があり、ある日突然自宅へ家宅捜索に入られ、何の説明もないまま捜索が始まってスマートフォンやPCを押収された。取り調べの際も、高圧的で威圧的な態度で反省を迫られたという。5 当初、検察官は10万円の罰金を科す略式起訴(略式命令)を求めていたが、被告人がこれを不服としたため正式裁判へ移行した。しかし、交通費や弁護士費用を考慮すると、必要となる費用は到底10万円では済まない。

略式手続と正式裁判の違いは、略式手続では裁判所が検察官の提出した書面のみで審理を行い、法廷が開かれたり当事者が主張を述べたりする機会はなく、光熱費の未払い督促のような明白なケースであれば数十分で終わる点にある。一方、正式裁判では実際に法廷に立ち、ドラマのように弁護人と検察官が攻防を繰り広げるため、長い時間がかかることになる。

3. 上告趣意書と意見書

被告人は二審で逆転有罪となった。最高裁判所へ上告するためには「上告」が必要だが、大きな難関がある。基本的に最高裁は法律適用の誤り(法令違反)を審査する場であり、事実関係そのものを審理することはなく、新たな証拠調べを請求することもできない。

上告を受理してもらうため、被告人と弁護人は日本ハッカー協会6を通じて全国各地のエンジニアから意見書を募り、最高裁に審理を受け入れさせようと尽力した。

結論

Web開発者として、僕たちは新技術を試し、技術への理解や専門知識を高めようとする。しかし、大半の警察官、検察官、裁判官にとってコンピュータは専門外であり、あらゆる知識を正確に把握できているとは限らない。それどころか、知識不足から安易に「有罪」のレッテルを貼ってしまうことすらある。一般社会の人々も、背後にある仕組みを理解できないがゆえに、犯罪視する態度をとってしまいがちだ。昨今多発する暗号資産詐欺を見ても分かるように、今後こうしたコンピュータ犯罪をめぐる事件は増える一方であり、その矢面に立たされるのは開発者である僕たち自身だ。

警察、弁護士、裁判官の大半はこの分野に詳しいわけではなく、業界自体の専門性の高さゆえに裁判闘争において大きな障害が生じる。取り調べの段階でも、警察が被告人の技術的説明を誤解することは日常茶飯事だ(headタグとheaderの違いすら理解できないなど7)。 開発者自身のメンタルが強くなければ、容易に精神崩壊へと追い込まれる。その上、開発者の誠実さや専門性を重んじる態度が、取り調べでは警察に誘導される要因となり、不利な調書を作成されて後から覆すのが極めて困難になる。このニュースを見て、開発者として、万が一自分がこのような事態に巻き込まれたらどう対処すべきかを考える非常に良い契機になったと思う。

あとがき

その後、この記事をフロントエンドのコミュニティにシェアしたところ8、一部のコメントや反応にはかなり落胆させられた。しかし同時に、現時点ではこの領域がまさにグレーゾーンであり、意見の対立や議論を招きやすいこと、そして法律の観点から出発した議論を技術コミュニティに持ち込むと論点がズレやすいことも痛感した。一つの学びだったと思う。 当初の僕の動機は、開発者の大半がまさか自分が警察に目をつけられ、法廷で裁判を戦うことになるとは夢にも思っていないだろうという点にあった。もし似たような状況に直面したらどうすればいいのか、日本で大きな話題となったニュースだからこそシェアする価値があると考えたのだ。

「こんな言い分、気持ち悪すぎる」といった類のコメントを見ると、「おいおい、君は普段同僚ともそんな風にコミュニケーションを取っているのか?」と思わざるを得なかった。コミュニティ内の空気からしてこれ以上建設的な議論を続けるのは不可能で、単なる水掛け論に発展するだけだと判断したため、それ以上の返信は控えた。 もっとも、いくつか素晴らしいコメントもあった。ユーザー体験(UX)の観点から「こうした行為はユーザーに明示すべきだ」という指摘や、ウェブカルチャーに与える悪影響やダメージを懸念する意見などだ。

また、原文や判決文でも繰り返し言及されている通り、被告人はユーザーが著しく重さを感じない程度にCPU使用率を意図的に抑制していた(判決文上の記述では50%となっており、実際これでもかなりリソースは消費するが)。実際の動作に関する客観的データによる裏付けはないものの、影響の大小をどう捉えるかは非常に主観的な問題だと思う。判決文における判断は「影響は大きくない」というものだった。一般的なケース(CPUファンが唸りを上げるような状態)を、今回の個別事例(被告人がCPU使用率を下げていた)に無理やり当てはめて批判されてしまっては、僕としてもどうしようもない。

法律面

まず法律の観点から補足しておきたい。「他人のリソースを盗んでマイニングで大儲けしているのになんで無罪なんだ?」というコメントがあったが、これにはいくつかの論点の混同がある。

第一に、元記事でも判決でも言及されているように、あらゆるマイニングが無罪とされたわけではなく、「本件において」社会的に許容しうる範囲内だったと判断されたのだ。記事中でも触れた通り、被告人はCPUに過度な負荷をかけないようパラメータを調整していた。確かにマイニングスクリプトに対する世間の心証は良くない。だが、その程度が果たして刑事責任を問うべきレベルなのかどうかは、個別の案件ごとに精査されるべき問題だ。

被告人の当初の目的は、広告を排除し、代わりにマイニングスクリプトによる収益でサイトの運営費用を賄うことだった。「広告排除+マイニングスクリプト=運営者の収益=サイト改善の資金=ユーザー体験の向上」という構図であり、間接的にはユーザーに還元される意図を持った、善意の動機だった。CPU使用率は増えるものの、僕にとってこれはバランス(比例原則)の問題だ。したがって、犯罪が成立するかどうかは意図、程度、当時の状況、実際に生じた影響を見て判断されるべきであり、文脈を無視して「マイニング=即悪」と決めつけるべきではない。そもそも被告人はマイニングで大儲けなどしていない。

もう一つの問題は法条文の定義だ。日本の「不正指令電磁的記録作成等」の罪は、実は定義が非常に曖昧だ。「不正な指令」や「意図に反する動作」など、いずれも明確さに欠ける概念であり、だからこそ多くの論争を生んでいる。この曖昧な条文が濫用につながりやすいと懸念する声もある。これによって何が起きるかは明らかだ。この裁判は3〜4年もの年月をかけてようやく決着がついたが、一般人にとって、3年も4年もの間「犯罪者かもしれない」という嫌疑をかけられ、同僚や近隣住民から疑いの目で見られ、周囲の視線に怯える生活はまさに拷問に等しい。

コメントを見ていると、一部の開発者は法的なリテラシーがまだ不足していると感じる。罪を犯したというなら、どの罪に該当し、その構成要件は何なのかを明確に定義して初めて議論ができるのであって、自分の「感情」で有罪無罪を決めるべきではない。ましてや開発者なら、その背後にある仕組みについてより深い理解を持っているはずではないか。機能を開発する時だって、まずは仕様(spec)を明確にするはずだろう?

ユーザー面

「ユーザーが予期しない挙動である以上、すべて告知すべきだ」という意見があった。配慮としては素晴らしいが、世のウェブサイトがCookie利用の同意バナーだらけになっている現状を見ると、これが本当にユーザーの望んだことなのか疑問に思えてくる。サイトを開くたびにまずCookieの同意を求められ、次に広告の可否、マイニングの可否を聞かれ、拒否すればサイトが使えないのか? もう一つ思うのは、「じゃあ告知して同意を取りさえすれば、すべて許されるのか?」ということだ。

僕自身のブログには広告もマイニングスクリプトも一切設置していない。損なわれるユーザー体験があまりにも大きすぎると思うからだ。しかし、僕は広告の存在自体は支持している。無償でウェブサイトを運営する多くの開発者は広告収入によってサイトを維持している。だから僕自身AdBlockは使っていないし、YouTubeもPremiumに加入して広告なしで視聴しつつクリエイターを支援している。

個人的にはマイニングスクリプトは大嫌いだ。マシンスペックが過剰な時代になったとはいえ、他人に勝手にCPUリソースを使われるのは強い嫌悪感を覚える。しかし、僕が極めて重要だと考えるのは、「心証の悪さや道徳観」と「犯罪の成否」は完全に切り離して考えるべきだということだ。人々は往々にしてこれらを混同しやすい。何でも「一律死刑」と叫ぶ方が、頭を使って考える必要がなくて楽だからだ。

僕はマイニングスクリプトが主流になることを望んでいるわけではない。しかし、ネット広告への依存から脱却し、サイト運営が持続可能となり、同時に優れた体験を提供できるような新しい収益モデルを模索すること(SocialFi、LikeCoin、Buy me a coffeeなど)自体は素晴らしい試みだと思う。開発者ならむしろ歓迎すべき流れのはずだ。インターネットの最前線に立つ僕たちだからこそ、その専門性をもって物事の本質を見極めるべきであり、単なる感情論だけで物事を判断すべきではない。

Coinhiveがサービスを終了したこと自体、このビジネスモデルがあまり機能しなかったことを物語っている。マイニングが消費するCPUリソースが多すぎて一般的なユーザーの受容性が低かったことに加え、マイニングの効率自体が絶望的に悪すぎた。ブラウザ越し、かつJavaScriptの実行環境(CoinhiveはWebAssemblyを使っていたらしいが)を介しているため、自宅にマイニングリグを置くことや、おとなしく広告を貼ることに比べれば、効率も収益性も遠く及ばなかったのだ。

Footnotes

  1. より正確に言えば、当事者と弁護士の面会交通権を直接保障する法条文が機能していない点を指す。台湾の刑事訴訟法第34条の2では「弁護人は、捜査中勾引または逮捕された被告人または犯罪容疑者と接見し、または書面を授受することを制限されない」と規定されている。 ↩

  2. https://www.courts.go.jp/app/hanrei_jp/detail2?id=90869 ↩

  3. https://www.nikkei.com/article/DGXZQOUE178IR0X10C22A1000000/ ↩

  4. https://www.soumu.go.jp/main_sosiki/joho_tsusin/security_previous/kiso/k05_02.htm ↩

  5. https://twitter.com/itm_nlab/status/1096620265633660928 ↩

  6. https://www.hacker.or.jp/coinhiveopinion/ ↩

  7. https://twitter.com/moritomoya/status/1090590741783445505 ↩

  8. https://www.facebook.com/groups/f2e.tw/posts/4673733325997329/ ↩

関連記事

他のトピックを探索