リバースエンジニアリングとは、方法や注意点について徹底解説|サイバーセキュリティ.com

リバースエンジニアリングとは、方法や注意点について徹底解説



「リバースエンジニアリング」という言葉を聞いたことがありますか?

ソフトウェアやハードウェアといったさまざまな製品の構造や仕組みを紐解いて技術情報の調査をし、明らかにするのがリバースエンジニアリングです。一般的に、リバースエンジニアリングといえば、技術情報を解読して盗みだすといった悪い面が取り上げられることが多いのですが、実はセキュリティ対策など良い利用法もあります。

今回は、リバースエンジニアリングについて、良い面と悪い面の両面から解説します。

リバースエンジニアリングとは

ソフトウェアやハードウェア製品の構造や仕組みを分析し、明らかにすることで製造方法や動作などの技術情報を明らかにするのがリバースエンジニアリングです。とくにソフトウェアの分野では、ソースコードを解析してプログラムがどのようになっているのかといったことを解析することを指します。

対象によってリバースエンジニアリングの意味や目的は異なるため、以下の3つに分けて見ていきましょう。

ハードウェア製品のリバースエンジニアリング

ハードウェア製品のリバースエンジニアリングの目的は、機械を分解・観察し、製造方法や回路といったメカニズムの解析です。他社製品だけでなく、設計図や仕様書が継承されていない古い自社製品を対象とする場合も。

また、ハードウェア製品のリバースエンジニアリングは、製品開発といった合法的な目的以外に悪用されるケースもあります。たとえば、そのままコピーしたクローン品の製造や、悪意ある攻撃のための物理的な弱点の発見などです。

ソフトウェア製品のリバースエンジニアリング

ソフトウェア製品の場合、仕様書では公開されていない詳細技術を明らかにするためにおこなわれます。主な手法は、「逆アセンブル」と「逆コンパイル」の2つ。簡単に説明すると、0と1の機械語で記されたオブジェクトコードを、人間が理解しやすい言葉で記したソースコードに戻すことを意味します。

リバースエンジニアリングをソフトウェア開発に活用する場合、目的は単なる技術獲得だけではありません。例として、異なる製品同士の互換性の確保や、バグ・脆弱性のパッチ開発などが挙げられます。さらに、マルウェア解析といったサイバー攻撃への対抗手段に用いられることもあれば、攻撃者による脆弱性探しに悪用されることも。

ものづくり業界のリバースエンジニアリング

リバースエンジニアリングは、IT業界だけでなく、製造業・加工業などのものづくり業界でもおこなわれています。ただし、IT業界とは少し意味が異なり、部品・製品から設計図を作ることを意味します。まず、通常の製造プロセスを見てみましょう。

  1. 図面や設計図などのCADデータを作成
  2. CADデータを解析
  3. CADデータをもとに部品・製品を試作、生産

一方、リバースエンジニアリングでは、最初に完成形のクレイモデルや部品の形状測定をしてから、CADデータに起こします。通常工程とは逆の手順を踏むので、ものづくり業界でも「リバース(反対の)」エンジニアリングと呼ばれるわけです。

 リバースエンジニアリングがセキュリティ対策となる理由

リバースエンジニアリングによって、プログラムのコードが解析されるということは、技術情報の流出といった問題になる内容が広く取り上げられがちです。

しかし、リバースエンジニアリングには、良い面もあるのです。それは、自社のソフトウェアの脆弱性を発見し、対策を行うことができるというものです。

悪意のある攻撃者を想定して、ソースコードを分析し、解析を行うことで脆弱性を含む点がないかどうか、コードに問題のある部分はないか詳細に知ることができます。これによって適切な対策をおこなった製品は、より攻撃に強いものとなります。

リバースエンジニアリングの知的財産権などの注意点

リバースエンジニアリングには、脆弱性の発見など利点も多いですが、行う際には、「特許法」や「著作権」などいくつか注意すべきことがあります。以下では、それらについて説明します。

1. 特許法上の問題

まず気をつけるべきことは、特許法です。特許法の第1条には、特許法の目的として「発明の保護及び利用を図ることにより、発明を奨励し、もつて産業の発達に寄与すること」と書かれています。ソフトウェアも「発明」に該当するので、それをリバースエンジニアリングの手法で解析し、情報を活用することは法律に抵触する恐れがあります。

ただし、第69条には、「特許権の効力は、試験又は研究のためにする特許発明の実施には、及ばない。」との記述があります。したがって、リバースエンジニアリングを利用する場合は、こうした目的である必要があります。

2. 著作権上の問題

リバースエンジニアリングには、著作権上の注意点もあります。創作物としてのプログラムは、当然著作物として保護されるべきものとなります。したがって、複製や抽出などは著作権法に抵触する恐れがあります。

ただし、著作権法では実際の著作物に至らないアイデアといった段階のものは保護対象とされていないので、研究や開発のためのアイデアを得るという意味でのリバースエンジニアリング自体は合法とも言えます。このあたりはグレーゾーンとも考えられます。

3. 2019年1月の法改正で合法になる可能性も

2019年1月1日から施行された「改正著作権法」では、従来は合法と言えないケースもあった、セキュリティ目的におけるリバースエンジニアリングについて、合法とされることになりました。これによって、よりリバースエンジニアリングの活用が進むと考えられます。

リバースエンジニアリングの対策

研究や分析、合法化されることとなったセキュリティ面でのリバースエンジニアリングとは逆に、やはり課題は悪意を持った第三者による情報取得目的のリバースエンジニアリングです。対応策を考えてみましょう。

1. ソースコードを読みづらくする「難読化」を図る

プログラムコードをリバースエンジニアリングされないようにする対策として最も一般的なものがソースコードを読みづらくする「難読化」と呼ばれるものです。難読化には、「意味のないプログラムコードを挿入する」「曖昧で理解しにくいアルゴリズムにする」なとの方法があります。

具体的に、難読化を行うにはwhiteCryption Code Protection‎、Dotfuscatorなど、さまざまな専用のツールを利用して行います。

2. コードのファイル自体を「暗号化」する

コードを難読化して読みづらくすることは、一定の時間稼ぎにはなりますが、時間をかけて解読されてしまう恐れもあります。そこで使われる手法が暗号化です。これは、コードのファイル自体を暗号化し、解読用の鍵がないと読めないようにするものです。

ただし、鍵ファイルの置き場所やコード上での読み込みなどを考慮しておかないと解読される危険性が上がります。

おすすめのリバースエンジニアリングツール・サービス3選

ここでは、おすすめのリバースエンジニアリングツールやサービスを紹介します。以下3つのツール・サービスの特徴を解説するので、ぜひご覧ください。

  • Ghidra
  • リバースエンジニアリングサービス
  • Geomagic Design X

順番に紹介します。

Ghidra

Ghidraは、NSA(アメリカ国家安全保障局)が公開しているオープンソースのリバースエンジニアリングツールです。フリーソフトなので、誰でも無料で利用できます。インストール手順は簡単で、Zipファイルを解凍するだけ。ただし、Javaでソフトウェア開発をする際に必要な「JDK(Java Development Kit)」が無いと使用できないので、JDKもインストールしておきましょう。

リバースエンジニアリングサービス

サイバーコム株式会社のリバースエンジニアリングサービスは、ソフトウェアのリバースエンジニアリングの代行サービスです。静的バグ修正やコードスリム化の対応が標準サービスに含まれています。標準サービス以外にも、要望に合わせて柔軟な対応が可能です。ソースコードの診断までは無償なので、診断結果をもとに有償依頼する必要があるか判断できます。

Geomagic Design X

株式会社セイロジャパンのGeomagic Design Xは、3DスキャンデータからCADモデルの作成ができる、製造業向けのリバースエンジニアリングソフトウェアです。 ソリッドモデルの抽出やメッシュ編集など、多数の機能が搭載されています。あらゆる製品のスキャンに対応し、精密なモデリングが可能です。既存のCADソフトの拡張子に対応しているので、CADデータの出力もスムーズにおこなえます。

まとめ

プログラムのコードを解析し、何が書かれているのかを知るリバースエンジニアリングは、セキュリティ対策などの良い利用法もあれば、悪意を持った第三者による技術情報などの盗み出しといった犯罪行為という面もあります。

悪意を持ったリバースエンジニアリングを防ぐには、コードの難読化や暗号化といった適切な対策をしておく必要があります。リバースエンジニアリングは、2019年1月からの改正著作権法の施行により合法化され、より利用が広がることが想定されます。適切かつ安全に利用されるようしっかりと対策を行っておくことが大切です。

よくある質問

他社製品のリバースエンジニアリングをおこなうときに気をつけることは?

知的財産権の侵害に気をつけましょう。

リバースエンジニアリング自体は合法です。しかし、仮に解析したプログラムをそのまま複製し、自社製品に利用すると著作権法違反となります。さらに、不正競売防止法の「企業秘密」扱いされている技術を勝手に模倣することも、違法行為として禁止されています。

こういった権利侵害を回避するために用いられるのが、解析と開発でチームを分ける「クリーンルーム手法(クリーンルーム設計)」です。解析チームは、リバースエンジニアリングのみを担当。一方、開発チームは、解析で得られた外形的な情報をもとに、同様の働きをする製品を独自に再設計します。この方法なら、違反行為に抵触するリスクを最小限に抑えて、リバースエンジニアリングをおこなえます。

リバースエンジニアリングとリエンジニアリングの違いは?

リエンジニアリングは企業・組織の再設計を指し、リバースエンジニアリングはITや製造業における開発技術を意味します。

リエンジニアリングとは、企業改革のために従来の管理方法やシステムを見直し、再設計することです。リバースエンジニアリングとよく似た言葉なので混同されがちですが、意味は全く異なります。


SNSでもご購読できます。