リバースエンジニアリングとは、他者製品を解析して技術や仕組みを明らかにすること。ここでは、リバースエンジニアリングについて解説します。
目次
1.リバースエンジニアリングとは?
リバースエンジニアリングとは、企業などが出荷されている競合他社などの製品を入手し、動作のしくみや製造方法・仕様などを分解・解析して、製造方法や原理、設計図やソースコードなどを明らかにすること。
多くは、互換性・類似性をもった製品の開発を目的として行われます。なかには、自社が保有している特許が侵害されていないかどうかを確認するため、行われるケースもあります。
2.リバースエンジニアリングの語源
リバースエンジニアリングは、リバースとエンジニアリングを組み合わせた言葉です。それぞれの持つ言葉の意味を見ていきましょう。
リバース
リバースとは、下記のような意味を持つ言葉です。
- 逆にする
- 反転する
- 反対方向へ動かす
- テープレコーダーの往復録音
- 逆走行
リバースエンジニアリングにて製造され市場に出ている製品を、分解や分析・解析してメカニズムを解明していくため、リバースという言葉が用いられています。
エンジニアリング
エンジニアリングとは、下記のような技術のこと。ほかにもエンジニアリングには、作業効率を改善するための技術といった意味もあります
- 生活を快適にする
- 製品などを製造する
- 設計図を書く
リバースエンジニアリングでは、エンジニアリングという言葉を、製品の設計図や製造工程を明らかにする技術・製品のメカニズムを解明してさらに質の高い製品を作り出す技術といった意味で使っています。
3.リバースエンジニアリングの目的
目的は、従来の既存品からそのメカニズムを生かした使用可能なモデルを作成すること。
ゼロから製品を製造すると、白紙に設計図を書くところから始めなければなりません。しかしリバースエンジニアリングでは、既存の完成品から逆工程にて製品を分析しながら、パーツごとに分解していきます。
リバースエンジニアリングが成功すれば、設計や製造に関するさまざまな情報を容易に入手できるのです。
4.リバースエンジニアリングのプロセス
リバースエンジニアリングのプロセスは、一般的なエンジニアリングのプロセスと異なります。それぞれのプロセスについて、解説しましょう。
- 一般的なエンジニアリングのプロセス
- リバースエンジニアリングのプロセス
①一般的なエンジニアリングのプロセス
設計と製造現場ともに「設計・解析・試作・生産」となります。ときに設計や解析、試作を難度も繰り返し、よりよい製品作りを目指すのです。たとえば設計の工程では、下記のようなプロセスになります。
- ユーザーやクライアントのニーズを満たすためのアイデアを図面に起こす
- 3DCADを使用して3Dモデルを作成する
- 3Dプリンターで出力する
②リバースエンジニアリングのプロセス
一般的なエンジニアリングのプロセスと逆に進み「形状測定・解析・データ処理・設計書作成」といったプロセスになります。完成品を分解しながら図面を作成する工程で、仕様や部品、設計や技術などを解明していくのです。
解明された技術の一部を改良や変更すれば、製品性能も検証できます。リバースエンジニアリングのプロセスには、製品の可能性を広げる役割もあるのです。
5.リバースエンジニアリングのメリット
ここではリバースエンジニアリングのメリットについて解説します。
- 開発コスト削減と開発期間の短縮ができる
- セキュリティ対策となる
- 設計図や仕様書がなくとも復元できる
①開発コスト削減と開発期間の短縮ができる
一般的に新製品のリリースまでには多くの費用、期間が必要になるもの。しかしリバースエンジニアリングを取り入れれば、「既存の技術を応用できる」「複数の技術をコラボできる」ため、開発や試作といった工程を重ねる必要がありません。
その結果、開発コスト・開発期間を大幅に短縮できるのです。
②セキュリティ対策となる
リバースエンジニアリングによってかんたんに解析されてしまう製品は、セキュリティが甘いとも見られます。
技術上の重要情報を流出させる可能性がある製品であるとわかれば、自社製品の脆弱な部分にセキュリティ対策を講じられるでしょう。外部からの攻撃に強い製品が作れるのは、リバースエンジニアリングの大きなメリットです。
③設計図や仕様書がなくとも復元できる
過去に設計された製品には、設計図が保管されていないケースもあるでしょう。こうした設計図・仕様書などが残存していない場合でも、リバースエンジニアリングを用いてそれらを再生できます。
技術を伝承する人材が退職してしまっているケースでも、リバースエンジニアリングによってそこに用いられていた技術を明らかにできるのです。
6.リバースエンジニアリングのやり方
リバースエンジニアリングにはやり方があります。ハードウエアとソフトウエア、それぞれにおけるリバースエンジニアリングの手法について解説しましょう。
ハードウエアにおけるリバースエンジニアリングの手法
ハードウエアにおけるリバースエンジニアリングの手法は3つです。
- CTスキャン
- CMMマシン
- 3Dスキャナー
①CTスキャン
コンピューター断層撮影法のこと。高精度X線を使って対象物の内部状態を撮影し、撮影した画像はコンピューターによって再生できます。
従来の測定器では測定が困難であった内部状態を知っていけるため、医療機器や標本のデジタル化など、さまざまな場面で活用されているのです。製品を破壊せず内部把握できるため、リバースエンジニアリングでも多用されています。
②CMMマシン
いわゆる三次元測定機のこと。三次元測定機とは、高感度電子プローブを用いて製品などの対象物の表面上の離散点を検出し、XとY、Zといった3つの座標軸から部品の形状や寸法を測定するためのデバイスです。
測定した対象物を可視ジオメトリで3D表示できるため、サイズや材質を問わずオブジェクトをキャプチャできます。
③3Dスキャナー
立体的な対象物をスキャンし、3Dデータとして取り込む機械のこと。3Dデータがあれば、「製品の計測」「3Dプリンターと3Dスキャナーとの併用によるラピッドプロトタイピング」などが可能になります。
リバースエンジニアリングにも有効な機械です。設計図や仕様書のない製品などをスキャンして、何もないところからCADデータを起こせます。
ソフトウエアにおけるリバースエンジニアリングの手法
ソフトウエアにおけるリバースエンジニアリングの手法は2つです。
- 逆アセンブル
- 逆コンパイル
①逆アセンブル
コンピュータープログラムを、我々人間が理解しやすいアセンブリ言語によるソースコードに変換すること。
コンピュータープログラムをアセンブリ言語に変換する処理を行うソフトを逆アセンブラといいます。不要な言語をはじいて変換されるため、完全にすべてを変換できるだけではありません。しかしソースコードを知るひとつの手がかりになります。
②逆コンパイル
実行可能形式のコンピュータープログラムを解析して、開発当初に使われていたソースコードに変換する処理のこと。
一部の関数は逆コンパイルできません。しかしコンピューターが読み取るためのオブジェクトコードからソースコードを読み取れれば、実行形式コードしかないプログラムを読み解けます。
7.リバースエンジニアリングは違法なのか?
リバースエンジニアリングは違法なのでしょうか。この問いに関して、知的財産や特許権、意匠権や著作権法、不正競争防止法といった各種法令から、リバースエンジニアリングとの関係性とともに解説します。
リバースエンジニアリングと知的財産権との考え方の基本
リバースエンジニアリングそのものは違法ではありません。
しかしリバースエンジニアリングにより他社製品に内蔵されている技術を解析し、明らかにした設計図などのメカニズムや技術を利用、改良して製品を製造した場合、知的財産権の侵害に該当する場合もあります。
リバースエンジニアリングと特許権や意匠権
法的に抵触する可能性があります。たとえば特許法において「発明」に該当するソフトウエアをリバースエンジニアリングの手法を用いて解析した情報を利用すれば、特許権の侵害になる可能性があるのです。
ただし、特許法第69条「特許権の効力は、試験又は研究のためにする特許発明の実施には、及ばない。」との規程により、試験や研究を目的としたリバースエンジニアリングであれば、必ずしも法律に抵触する訳ではありません。
特許権
特許権とは、財産権のひとつ。発明に関する特許を受けた権利者が、その権利を一定期間独占できるのです。特許権を得るには、発明内容を特許庁に提出して審査員による審査を受け、特許査定を受ける必要があります。
特許権は、「発明対象が無体物である」「恒久的な権利にすると技術進歩の妨げになる」点を理由に、出願日から原則20年の制限があるのです。
意匠権
意匠権とは、物品や建築物、画像などのデザインを保護する権利です。意匠権は、工業上利用が可能なデザインに対してのみ付与され、芸術作品におけるデザインは意匠権の対象になりません。
創作者は、意匠権の登録がある工業上のデザインに関して独占排他権を持つのです。意匠権があれば第三者による模倣品の製造・販売が禁止されます。
リバースエンジニアリングと著作権法
たとえば、著作物として認められているソースコードを無断で複製、抽出した場合、その行為は著作権法に抵触する可能性があります。
一方、「当該著作物に表現された思想又は感情を自ら享受し又は他人に享受させることを目的としない場合(中略)利用することができる」といった条件を満たしたアイデアは著作物と認められません。
そのため、アイデアをリバースエンジニアリングによって取得することは合法となります。
著作権
著作権とは、著作物保護を目的とする権利です。保護の対象となっている著作物とは、下記のようなものです。
- 思想、感情を創作的に表現したもの
- 文芸、学術、美術、音楽の範囲に属するもの
一方、下記のようなものは著作権に該当しません。
- 単なるデータ
- ありふれたもの
- 模倣したもの
- 理論や法則
- 工業製品
リバースエンジニアリングと不正競争防止法との関係性
違法と適法、両方があります。たとえば他社製品を正規ルートで購入した場合、購入した製品の所有権は購入者に移るでしょう。そのため、製品の利用に制限はありません。
しかし、他社製造の試作品を不正に入手した場合、知的財産権における営業秘密の持ち出しに該当します。この試作品の情報をリバースエンジニアリングで得るのは不正競争防止法上、違法として取り扱われるのです。
8.リバースエンジニアリングに関するおすすめの本
リバースエンジニアリングに関するおすすめの書籍があります。それぞれについて解説しましょう。
リバースエンジニアリングバイブルコード再創造の美学
『リバースエンジニアリングバイブルコード再創造の美学』は、リバースエンジニアリングの基本から学べる書籍です。リバースエンジニアリングは、今やソフトウエア開発に欠かせない技術。
C/C++を逆解析するための方法やアンチリバーシングなど、さまざまなポイントからリバースエンジニアリングを解説しています。
リバースエンジニアリング―Pythonによるバイナリ解析技法
『リバースエンジニアリングバイブルコード再創造の美学』は、読者にセキュリティの専門家も多い一冊です。デバッガの基本原理も詳しく書かれています。
- ハッキングツール
- Pythonを使ったバイナリ解析技法
- バグ発見ツール
- オープンソースのライブラリでの処理自動化
- セキュリティツール