リバースエンジニアリングの概要

リバースエンジニアリングの概要

リバースエンジニアリングとは、ハードウェアやソフトウェアを解析し、内部構造・動作原理・仕様を明らかにする作業を指します。

リバースエンジニアリングの手法は、ソフトウェアやシミュレーションから三次元測定機や3Dスキャナなどの産業機器を活用する手法までさまざまです。

リバースエンジニアリングの対象は、ソフトウェア製品やマルウェアといった無形物だけではありません。機械や電気回路など、有形物に対しても適用されます。リバースエンジニアリングは、他国のテクノロジーを解析して自国に応用する模倣技術とともに発展しました。その後、産業の発展とともに、リバースエンジニアリングの対象物は拡大し、現在は多様な分野で利用されています。

リバースエンジニアリングとコピーの違い

リバースエンジニアリングは、他社製品を解析した情報を自社製品の開発に活用する手法のため、場合によっては「コピー」だと受け取られることがあります。しかし、リバースエンジニアリングとコピーの決定的な違いは、その目的にあります。

リバースエンジニアリングの目的は、対象の理解、再設計、相互運用性の確保です。ときにはマルウェアの解析にも活用されて、セキュリティ強化に貢献します。一方で、コピーの目的は無断で複製することであり、著作権の侵害につながります。さらに、リバースエンジニアリングしたものを無断で複製し、第三者が利用できる形で技術を販売・提供すると、「コピー」として著作権の侵害に該当します。

このように、元の対象物から新しい知見や資産を創造することがリバースエンジニアリングです。

レガシーシステムのリバースエンジニアリングに関するご相談ならFPTへ


リバースエンジニアリングの主な目的

リバースエンジニアリングの目的として、次の6つが挙げられます。

  • 自社製品の改良
  • 脆弱性の発見・セキュリティ評価
  • レガシーシステムの保守・移行
  • 競合調査・ベンチマーク
  • マニュアル作成
  • 開発コストの削減

1. 自社製品の改良

リバースエンジニアリングは、自社製品の改良につながります。

製品を開発する工程には、プロトタイプ(試作品)の制作やテストなどが含まれます。品質の確認や改善を繰り返し、最終的な製品の完成を目指すのが一般的です。リバースエンジニアリングは、製品を貫く設計を明らかにし、改良につなげるための有効な手法です。

2. 脆弱性の発見・セキュリティ評価

リバースエンジニアリングは、実装上の欠陥や脆弱性の特定にも有効です。

サイバー攻撃は年々進化を続けるとともに、複雑化しています。そのため、サイバー攻撃に対応するためには、セキュリティインシデントに至ったマルウェアの解析が不可欠です。リバースエンジニアリングによって得られた結果にもとづいて、防御ルールの作成に役立てることができます。

3. レガシーシステムの保守・移行

ソースコードや設計書が失われたシステムの仕様を再構成する際にも、リバースエンジニアリングが役立ちます。

コンピューター黎明期のソフトウェアは、クローズドソースであることが一般的であり、すでに権利関係が不明なものも存在します。レガシーシステムは現代に即したクラウドへの移行が望まれており、継続運用するのか再構築するのかを判断する際の材料になります。

4. 競合調査・ベンチマーク

他社製品の技術動向を把握するためにも、リバースエンジニアリングは活用できます。

市場において、他社製品との違いを把握することは、製品の売れ行きにも反映されます。他社製品を分析することで、自社製品の特長として打ち出せるポイントを明らかにできます。その結果として、自社製品の強みを高めることにつながります。

5. マニュアル作成

過去に開発した製品のマニュアル・仕様書・設計書などが紛失したり、更新されていなかったりするケースがあります。その場合、正確な仕様・設計を把握するのが困難になります。

リバースエンジニアリングによって、マニュアルなどの文書を再構築することが可能です。また、マニュアル化することで、属人化の抑制にもつながります。

6. 開発コストの削減

新規で製品を開発する場合、アイデア・設計方法・UIなどの要件を定めたのち、プロトタイプの作成や改善を繰り返しながら製品の完成に至ります。

こうした工程を白紙の状態から始めると、時間やコストが膨大になりがちです。リバースエンジニアリングによって既存の製品を分析して応用すれば、製品完成までの工程を減らすことができます。結果として、開発コストの削減につながります。


リバースエンジニアリングの流れ

リバースエンジニアリングの流れ

リバースエンジニアリングの流れは、製品の事前確認→データ収集→データ解析→解析結果の文書化という順序で進みます。つまり、製品を開発する工程と逆の流れをたどります。

はじめに、著作権や特許侵害などの法的なリスクがないか、技術的に実装可能かどうかの確認がおこなわれます。事前確認が済むと、製品分析に適した手法で解析が進められます。

最終的に解析によって得られたデータは仕様書として文書化されます。


リバースエンジニアリングの4つのメリット

リバースエンジニアリングのメリットとして、次の4点が挙げられます。

  • 改良や改善に効果的
  • 設計書などがなくても技術の復元が可能
  • コストや期間の短縮が可能
  • 自社製品を用いることでセキュリティ対策が可能

1. 改良・改善に効果的

リバースエンジニアリングによって、実装の背景を理解し、根本的な不具合の修正や性能改善ができます。

ソフトウェアの場合、アップデートを繰り返すうちにスパゲッティコード化し、バグを取り切れずに残ってしまうケースがあります。コードがクローズドソースである場合には、リバースエンジニアリングによってコードを推定でき、製品の改善に役立てられます。

結果として、製品ライフサイクルの延命にもつながります。

2. 設計書などがなくても技術の復元が可能

レガシーな製品では、ソフトウェア設計サイクルにおける文書化が不十分であるケースも考えられます。ドキュメントがない既存資産も、リバースエンジニアリングによって構造を再現できます。

これにより、製品が開発されるに至った技術を知ることができるだけでなく、当時の技術を後世へと継承することにもつながります。

3. コスト・期間の短縮が可能

ソフトウェアの開発には時間と労力がかかるため、過去の資産を応用して開発を進めることが一般的です。

そのため、どれだけ過去の資産を活用できるかが、コストや期間の短縮に直結します。リバースエンジニアリングによりゼロから設計せずに済み、開発スピードが向上します。また、プロトタイプ設計の手戻りを減らすことにもつながります。

4. 自社製品に用いることでセキュリティ対策が可能

自社の製品をリバースエンジニアリングすることで、脆弱性を先回りして発見できます。攻撃者目線のテストになるため、安全性をより高めることが可能です。

また、他社に漏れては困る情報に脆弱性が見つかった場合は、分解や解析を困難にする構造を実装することで、技術の流出を最小限に抑えられます。


リバースエンジニアリングの手法を紹介

リバースエンジニアリングの手法は、ハードウェアとソフトウェアで異なります。

リバースエンジニアリングの手法を紹介

ハードウェアに対するリバースエンジニアリングの4つの手法

ハードウェアに対するリバースエンジニアリングの手法として、以下の4つが挙げられます。

  • 三次元測定機
  • CTスキャン
  • CAE解析
  • 3Dスキャナを活用してCAD化

1. 三次元測定機

三次元測定機(CMM:Coordinate Measuring Machine)とは、部品や製品の寸法や形状を測定する機器です。

主に、プローブ(接触子)を接触させることで、製品を直接計測できます。また、光学式のセンサーを活用した非接触型の三次元測定機もあります。三次元測定機で得られた高精度なデータは、後続の設計にも役立ちます。

2. CTスキャン

部品や製品の内部を知りたいけれども分解できないケースには、CT(Computed Tomography)スキャンが用いられます。CTスキャンはX線を活用することで、非破壊的に内部構造を調べられる機器です。CTスキャンによって、3D断面データを取得でき、欠陥の検出にも役立ちます。

3. CAE解析

三次元測定機など可視化できるだけでは明らかにされないメカニズムの解析には、CAE(Computer Aided Engineering)解析を用います。シミュレーションによって構造解析や流体解析をおこない、非接触的に得られたデータなどを参考にモデルを構築します。固体力学に基づき解析します。

4. 高精度なCADデータの作成

モデルを設計するためには、CAD(Computer-Aided Design)データを作成する必要があります。3Dスキャナのなかには非接触的に部品や製品の形状を点群データとして取得し、測定データと作成データの偏差を確認・調整ができる機能を搭載しているものがあります。

こうした機能を活用することで、高精度なCADデータを作成できます。

ソフトウェアに対するリバースエンジニアリングの2つの手法

ソフトウェアに対するリバースエンジニアリングの手法として、次の2つが挙げられます。

  • 静的解析
  • 動的解析

1. 静的解析

ソフトウェアの仕組みをバイナリからツールを使って分析するのが「静的解析」です。

静的解析には、バイナリからアセンブリ言語のコードを推定する「逆アセンブラ」と、中間コード(オブジェクトファイル)からもとのコードを推定する「逆コンパイル」などがあります。実際にソフトウェアを実行しなくても解析できる反面、解析には時間と高いスキルが必要です。

2. 動的解析

ソフトウェアやマルウェアなどを実際に動かし、その挙動から解析するのが「動的解析」です。マルウェアの場合、実際の挙動を確認できるなど、静的解析では発見できない問題を検出できます。

また、デバッガーを活用して挙動を追跡するなど、高度な動的解析も可能です。


自社のリバースエンジニアリングツール強化など、FPTのレガシーマイグレーションに関する取り組みをご紹介しています


リバースエンジニアリングの違法性とリスク

リバースエンジニアリングのリスクとして、次の3点が挙げられます。

  • 特許権や意匠権侵害のリスク
  • 著作権侵害のリスク
  • 不正競争防止法のリスク
リバースエンジニアリングの違法性とリスク

1. 特許権・意匠権侵害のリスク

ソフトウェアやハードウェアの開発に至ったアイデアや創意工夫は、特許権で保護されています。また、部品や製品の美観やデザインは意匠権によって守られています。リバースエンジニアリングによって得た技術的思想や形状をそのまま実装すれば、特許権や意匠権を侵害するおそれがあります。

特許権や意匠権の侵害リスクへの対抗策としては、「クリーンルーム方式」と呼ばれる、解析チームと実装を検討するチームとを分離し、情報の不正利用を防ぐ方法が考えられます。

2. 著作権侵害のリスク

文化庁は、リバースエンジニアリングはテクノロジーの進化に貢献してきたことから、全面的に禁止される行為ではないと強調しています。それでも、作成した個人あるいは企業がソフトウェアやハードウェアの著作権を有しているため、プログラムを翻案する行為は著作権の侵害になる可能性があります。

リバースエンジニアリングをおこなう側は、相互運用性目的の例外規定やDRM(デジタル著作権管理)の回避禁止がある規定に注意を払う必要があります。とくに、ソフトウェアの開発元と購入者との間で交わされるEULA(エンドユーザーライセンス契約)、使用許諾契約と著作権法の関係を確認しておくと良いでしょう。

3. 不正競争防止法違反のリスク

リバースエンジニアリングによって製品を分解・解析すること自体は、知的財産権の侵害には当たりません。しかし、非公知・有用・管理性などの営業秘密を不正入手することに相当するため、不正競争防止法違反のリスクがあります。

とくに、逆コンパイルで得た情報を商用利用する行為は非常に危険です。秘密保護などによりリバースエンジニアリングで得た情報を使用できないよう制約を加えているケースもあるので、注意深く確認しましょう。

レガシーシステムのリバースエンジニアリングに関するご相談ならFPTへ


まとめ

リバースエンジニアリングは、製品やソフトウェアの開発には不可欠なテクノロジーです。とくに、マルウェア解析など、セキュリティ対策の分野では有効な手法だと考えられています。

そのため、リバースエンジニアリングに伴うリスクを把握した上で、法令を遵守し適切に活用していくことがテクノロジーの進化には不可欠です。


FPT

この記事の監修者・著者:FPTコンテンツ制作チーム

FPTコンテンツ制作チームは、ITソリューションやデジタル技術に関する情報を発信しています。業界動向や技術トピックについて、記事の制作を行っています。
監修者・著者の詳しい情報はこちら →


関連リンク


関連ブログ:コラム


関連ブログ:レガシーモダナイゼーション