リバースエンジニアリング
リバースエンジニアリング(Reverse engineering)とは、機械を分解したり、製品の動作を観察したり、ソフトウェアの動作を解析するなどして、製品の構造を分析し、そこから製造方法や動作原理、設計図、ソースコードなどを調査する事である。
概要
一般的に工業製品の多くは、設計図や仕様書の概略程度しか公表されていない。ソフトウェア製品にしても、プログラムの原型であるソースコードは、外部に対し公開されていないことがほとんどであり、通常はコンパイル済みの実行ファイルや、それらをインストールするためのパッケージの形でしか提供されていない。そのため、様々な技術や創意工夫が用いられているこれら工業製品についての技術的情報に関しては、公開された文献から入手できない場合が大半なのが現状である。
また仮に自社開発した製品であっても、それが古い製品の場合、当時の技術者がすでに退職・死亡してしまっていたり、設計図や仕様書の所在が不明になったり、あるいはそもそも最初から作成されていなかったなどの事情により、十分な情報を得ることが不可能な場合がある。
こういった事情とも絡んで、非公開情報を入手するために、ひいては、より優れた製品の開発のためにも、従来の工業製品やソフトウェア製品をリバースエンジニアリングすることによって使用されている技術を分析、調査、確認することは、現場での製品開発において欠かせないプロセスの一つともなっている。
リバースエンジニアリングと知的財産権
工業製品のリバースエンジニアリングを行うこと自体は、原則的には合法行為であり、市販品などの秘密保持契約(NDA)なしで合法的に入手できる製品/文献/情報について、リバースエンジニアリングを行うことに問題は無い。ただし、解析行為によって得た中身そのものについての情報にもとづき、実装をそのまま真似したクローンを作って商業製品とすることには問題がある。従って、解析部門と開発部門を分ける「クリーンルーム手法」により、解析結果の「外側からの情報」だけを元に、再実装を行う。
特許や著作権や意匠権などについて、それらの知的財産権で保護されている、とひとくくりに扱う者がいるが、意匠権は見た目そのものを保護するものであり、リバースエンジニアリングなどするまでもなく真似が可能なものである。特許と著作権は、「そっくりなもの」に対する扱いが、それぞれで全く異なり、同一に考えてはいけないものである。特許は、権利者による発明とは全く無関係に発明されたものでも、権利者の権利が及ぶ。それに対し、著作権では剽窃などによるものであるか否かが問題であり無関係であるとされれば問題ない。
ソフトウェア(コンピュータプログラム)は著作権の保護を受けるものとされている(日本の著作権法では第10条1項九号)。そのうえで、米国判例上はリバースエンジニアリングはフェアユースの保護の範囲であるとされ[1]ているが、たとえば日本などにはフェアユースがない。日本ではリバースエンジニアリングは違法だと主張する向きもあったが、一例としては、ACCSがマルウェア被害などに対してマルウェアの解析が必要という現実を認識した結果、例えばアンチウイルスソフト作成のためのコンピュータウイルスの解析を目的としたリバースエンジニアリングも違法となってしまう、といった見解を示すようになった。現在の日本法での扱いは、著作権の権利制限のひとつとしてリバースエンジニアリングの適法化が検討され答申が出ている、という段階である(文化審議会著作権分科会法制問題小委員会「権利制限の一般規定に関する中間まとめ」)。
特に、プロプライエタリソフトウェアに関しては、法ではなくライセンスとして、逆アセンブル等のリバースエンジニアリングを禁止とする旨が書かれていることがほとんどといって良いが、そのような条項は独占禁止法の見地からも問題があるとも言われている[2]。
ものづくりにおけるリバースエンジニアリング
ものづくりにおけるリバースエンジニアリングとは、製品の先行イメージとして作られたクレイモデルや、既に現物がある製品などの形状データを測定し、それをもとにCADデータを作成する(“起こす”)ことである。
3DCAD、および接触式、非接触式の3次元形状データ測定器が発達するにつれ、こういった方法が急速に普及している。3D CADを活用した製品の事前検討を行う際、CADでは作成しにくいデザインの微妙な変化が織り込まれた製品データや、2D図面しかない製品データを3D化したりする際に活用されている。
上の図は、自動車の開発における、リバースエンジニアリングの一例である。右上の絵から順に、クレイモデル、非接触カメラ撮影式の3次元計測器での形状データ測定、測定結果である点群データの張り合わせ、断面線の作成、3D CAD化、そして実車である(CADと実車の間は、大きく段階が跳んでいる)。
リバースエンジニアリングにまつわる問題
コンピュータウイルスのオリジナルの作者以外がコンピュータウイルスを入手した際、リバースエンジニアリングによってソースコードを入手し、本来無かった新しい機能を組み込んだり、特定の企業や組織を攻撃するように改造し(改造されたウイルスは亜種と呼ばれる)再配布するといった事例が後を絶たない。テンプレート:要出典
マイクロソフトなどのサーバをDoS攻撃するMyDoomウイルスは、マイクロソフト側が懸賞金を掛け、2004年5月8日までに犯人逮捕に扱ぎ付けるまでに至ったものの、その後も同ウイルスの亜種発生は続き、同年7月26日にはMyDoom.Oに感染したパソコンから検索エンジンに向けて一斉に検索リクエストが殺到、一時的にGoogle等の主要検索サイトが応答しなくなる事件が発生した。このMyDoom.Oの作者は、偶然入手したコンピュータウイルスのMyDoomに対し、リバースエンジニアリングを行ってソースコードを入手・改造して、再配布を行なったと見られている。
この他にも、市販のソフトウェア製品(基本的にはプロプライエタリなソフトウェア)をリバースエンジニアリングによって解析し、本来ならばライセンスキーをインストール時に入力しないと・さらにはドングル(ハードウェアプロテクト)を常に接続しておかなければ動作しないソフトウェアを、このライセンスキーやドングルが無くても動作するようにするプログラムを製作・配布する人物が、違法な不正コピーソフトウェアの蔓延を助長している例が挙げられる。
脚注
- ↑ SONY COMPUTER ENTERTAINMENT v. CONNECTIX CORP., 203 F.3d 596 (9th Cir. 2000)
- ↑ ソフトウェアライセンス契約等に関する独占禁止法上の考え方 ―ソフトウェアと独占禁止法に関する研究会中間報告書― 平成14年3月20日 公正取引委員会