ITパスポート試験 用語辞典

リバースエンジニアリング
【Reverse Engineering】
既存ソフトウェアの動作を解析するなどして、製品の構造を分析し、そこから製造方法や動作原理、設計図、ソースコードなどを調査する技法。
↓ 用語データを見る
分野:
分野:マネジメント系
中分類:ソフトウェア開発管理技術
小分類:開発プロセス・手法
出題歴:
H26年春期問47 
重要度:
(Wikipedia リバースエンジニアリングより)

リバースエンジニアリングReverse engineering)とは、機械を分解したり、製品の動作を観察したり、ソフトウェアの動作を解析するなどして、製品の構造を分析し、そこから製造方法や動作原理、設計図、ソースコードなどを調査する事である。

概要

一般的に工業製品の多くは、設計図や仕様書の概略程度しか公表されていない。ソフトウェア製品にしても、プログラムの原型であるソースコードは、外部に対し公開されていないことがほとんどであり、通常はコンパイル済みの実行ファイルや、それらをインストールするためのパッケージの形でしか提供されていない。そのため、様々な技術や創意工夫が用いられているこれら工業製品についての技術的情報に関しては、公開された文献から入手できない場合が大半なのが現状である。

また仮に自社開発した製品であっても、それが古い製品の場合、当時の技術者がすでに退職・死亡してしまっていたり、設計図や仕様書の所在が不明になったり、あるいはそもそも最初から作成されていなかったなどの事情により、十分な情報を得ることが不可能な場合がある。

こういった事情とも絡んで、非公開情報を入手するために、ひいては、より優れた製品の開発のためにも、従来の工業製品やソフトウェア製品をリバースエンジニアリングすることによって使用されている技術を分析、調査、確認することは、現場での製品開発において欠かせないプロセスの一つともなっている。

リバースエンジニアリングと知的財産権

工業製品のリバースエンジニアリングを行うこと自体は、原則的には合法行為であり、市販品などの秘密保持契約(NDA)なしで合法的に入手できる製品/文献/情報について、リバースエンジニアリングを行うことに問題は無い。ただし、解析行為によって得た中身そのものについての情報にもとづき、実装をそのまま真似したクローンを作って商業製品とすることには問題がある。従って、解析部門と開発部門を分ける「クリーンルーム手法」により、解析結果の「外側からの情報」だけを元に、再実装を行う。

特許や著作権や意匠権などについて、それらの知的財産権で保護されている、とひとくくりに扱う者がいるが、意匠権は見た目そのものを保護するものであり、リバースエンジニアリングなどするまでもなく真似が可能なものである。特許と著作権は、「そっくりなもの」に対する扱いが、それぞれで全く異なり、同一に考えてはいけないものである。特許は、権利者による発明とは全く無関係に発明されたものでも、権利者の権利が及ぶ。それに対し、著作権では剽窃などによるものであるか否かが問題であり無関係であるとされれば問題ない。

ソフトウェア(コンピュータプログラム)は著作権の保護を受けるものとされている(日本の著作権法では第10条1項九号)。そのうえで、米国判例上はリバースエンジニアリングはフェアユースの保護の範囲であるとされているが、たとえば日本などにはフェアユースがない。日本ではリバースエンジニアリングは違法だと主張する向きもあったが、一例としては、ACCSがマルウェア被害などに対してマルウェアの解析が必要という現実を認識した結果、例えばアンチウイルスソフト作成のためのコンピュータウイルスの解析を目的としたリバースエンジニアリングも違法となってしまう、といった見解を示すようになった。現在の日本法での扱いは、著作権の権利制限のひとつとしてリバースエンジニアリングの適法化が検討され答申が出ている、という段階である(文化審議会著作権分科会法制問題小委員会「権利制限の一般規定に関する中間まとめ」)。

特に、プロプライエタリソフトウェアに関しては、法ではなくライセンスとして、逆アセンブル等のリバースエンジニアリングを禁止とする旨が書かれていることがほとんどといって良いが、そのような条項は独占禁止法の見地からも問題があるとも言われている。

ものづくりにおけるリバースエンジニアリング

ものづくりにおけるリバースエンジニアリングとは、製品の先行イメージとして作られたクレイモデルや、既に現物がある製品などの形状データを測定し、それをもとにCADデータを作成する(“起こす”)ことである。

3DCAD、および接触式、非接触式の3次元形状データ測定器が発達するにつれ、こういった方法が急速に普及している。3D CADを活用した製品の事前検討を行う際、CADでは作成しにくいデザインの微妙な変化が織り込まれた製品データや、2D図面しかない製品データを3D化したりする際に活用されている。

上の図は、自動車の開発における、リバースエンジニアリングの一例である。右上の絵から順に、クレイモデル、非接触カメラ撮影式の3次元計測器での形状データ測定、測定結果である点群データの張り合わせ、断面線の作成、3D CAD化、そして実車である(CADと実車の間は、大きく段階が跳んでいる)。

リバースエンジニアリングにまつわる問題

コンピュータウイルスのオリジナルの作者以外がコンピュータウイルスを入手した際、リバースエンジニアリングによってソースコードを入手し、本来無かった新しい機能を組み込んだり、特定の企業や組織を攻撃するように改造し(改造されたウイルスは亜種と呼ばれる)再配布するといった事例が後を絶たない。date=2010年12月

マイクロソフトなどのサーバをDoS攻撃するMyDoomウイルスは、マイクロソフト側が懸賞金を掛け、2004年5月8日までに犯人逮捕に扱ぎ付けるまでに至ったものの、その後も同ウイルスの亜種発生は続き、同年7月26日にはMyDoom.Oに感染したパソコンから検索エンジンに向けて一斉に検索リクエストが殺到、一時的にGoogle等の主要検索サイトが応答しなくなる事件が発生した。このMyDoom.Oの作者は、偶然入手したコンピュータウイルスのMyDoomに対し、リバースエンジニアリングを行ってソースコードを入手・改造して、再配布を行なったと見られている。

この他にも、市販のソフトウェア製品(基本的にはプロプライエタリなソフトウェア)をリバースエンジニアリングによって解析し、本来ならばライセンスキーをインストール時に入力しないと・さらにはドングル(ハードウェアプロテクト)を常に接続しておかなければ動作しないソフトウェアを、このライセンスキーやドングルが無くても動作するようにするプログラムを製作・配布する人物が、違法な不正コピーソフトウェアの蔓延を助長している例が挙げられる。

出題例

リバースエンジニアリングの説明として,適切なものはどれか。

[出典]ITパスポート 平成26年春期 問47

  • 確認すべき複数の要因をうまく組み合わせることによって,なるべく少ない実験回数で効率的に実験を実施する手法
  • 既存の製品を分解し,解析することによって,その製品の構造を解明して技術を獲得する手法
  • 事業内容は変えないが,仕事の流れや方法を根本的に見直すことによって,最も望ましい業務の姿に変革する手法
  • 製品の開発から生産に至る作業工程において,同時にできる作業を並行して進めることによって,期間を短縮する手法
正解 

「開発プロセス・手法」の用語

「マネジメント系」の他のカテゴリ

このページのWikipediaよりの記事は、ウィキペディアの「リバースエンジニアリング」(改訂履歴)の記事を複製、再配布したものにあたり、このページ内の該当部分はクリエイティブ・コモンズ 表示 - 継承 3.0 非移植 ライセンスの下 に提供されています。


Pagetop