リバースエンジニアリング(Reverse Engineering)とは、完成した製品やソフトウェアを分解・解析して、その仕組みや作り方、設計の考え方を明らかにすることです。ウイルスの解析や、ほかの製品とつなぐための調査、セキュリティの弱点探しなど、さまざまな目的で行われています。
現実世界に例えると、リバースエンジニアリングはレストランで食べた料理の味から、使われている材料や調理の手順を推理して、レシピを書き起こすことのようなものです。完成品から逆にたどって、作り方を明らかにしていきます。
「逆から」作り方を探る
言葉の意味です。ふつうの開発は、設計から始めて製品を作り上げますが、リバースエンジニアリングは、完成品を出発点にして、設計の側へさかのぼっていきます。設計図や説明書が手に入らない場合でも、製品そのものを調べることで、中で何が行われているのかを知ることができます。
ソフトウェアの場合
ITの分野での方法です。ソフトウェアは、人が書いたプログラムを、コンピューターが実行できる形に変換して配布されます。リバースエンジニアリングでは、この実行用の形を、人が読める命令の並びに戻す「逆アセンブル」や、元のプログラムに近い形に戻す「逆コンパイル」を行い、さらに実際に動かして振る舞いを観察します。
主な使い道
目的の分類です。リバースエンジニアリングは、守る側の調査から、古いシステムの保守まで、幅広い場面で使われています。
| 目的 | していること | 例 |
|---|---|---|
| ウイルスの解析 | 不正なプログラムの動きを調べる | 対策ソフトの開発 |
| 弱点の発見 | 攻撃に使われうる不具合を探す | セキュリティの診断 |
| 互換性の確保 | ほかの製品とつなぐ方法を調べる | ファイル形式の解読 |
| 古いシステムの保守 | 設計書のないプログラムを理解する | 改修や移行の準備 |
ウイルスとの戦いに欠かせない
代表的な活躍の場です。新しいウイルスが見つかると、セキュリティの専門家は、そのプログラムをリバースエンジニアリングして、何を盗もうとしているのか、どこと通信しているのかを明らかにします。その結果をもとに、検出の方法や被害の防ぎ方が作られます。米国の政府機関が無料で公開した解析の道具もあり、広く使われています。
互換性を確保する
もうひとつの大切な目的です。ある会社の製品のファイル形式や通信の方式が公開されていない場合、ほかの製品から読み書きできるようにするために、リバースエンジニアリングで仕組みを調べることがあります。オフィスソフトの文書を別のソフトで開ける、といった便利さの裏には、こうした調査が支えになっている例もあります。
日本の法律での扱い
合法かどうかの話です。日本では、2018年の著作権法の改正で、プログラムの仕組みを調べるためのリバースエンジニアリングは、原則として著作権の侵害にあたらないことが明確になりました。ただし、解析して得た内容をもとに、元のプログラムとそっくりのものを作って配布すれば、著作権の侵害になるおそれがあります。
契約で禁止されている場合
注意したい点です。ソフトウェアの利用規約やライセンスの契約で、リバースエンジニアリングが禁止されていることがあります。法律上は認められる行為でも、契約に違反すれば責任を問われる可能性があります。また、解析で知った他社の企業秘密を不正に使うと、別の法律に触れることもあるため、目的と範囲には慎重さが求められます。
守る側の工夫
解析されにくくする方法です。スマートフォンのアプリなどでは、プログラムの中身を読み取りにくくする「難読化」という加工をして、リバースエンジニアリングから守ることがあります。それでも完全には防げないため、パスワードや秘密の鍵のような大切な情報を、アプリの中に直接書き込まないことが基本です。


コメント