
「リバースエンジニアリング」という言葉を聞いたことがありますか?
ソフトウェアやハードウェアといったさまざまな製品の構造や仕組みを紐解いて技術情報や調査し、明らかにするのがリバースエンジニアリングです。一般的に、リバースエンジニアリングといえば、技術情報を解読して盗みだすといった悪い面が取り上げられることが多いのですが、実はセキュリティ対策など良い利用法もあります。
今回は、リバースエンジニアリングについて、良い面と悪い面の両面から解説します。
リバースエンジニアリングとは
ソフトウェアやハードウェア製品の構造や仕組みを分析し、明らかにすることで製造方法や動作などの技術情報を明らかにするのがリバースエンジニアリングです。とくにソフトウェアの分野では、ソースコードを解析してプログラムがどのようになっているのかといったことを解析することを指します。
リバースエンジニアリングがセキュリティ対策となる理由
リバースエンジニアリングによって、プログラムのコードが解析されるということは、技術情報の流出といった問題になる内容が広く取り上げられがちです。
しかし、リバースエンジニアリングには、良い面もあるのです。それは、自社のソフトウェアの脆弱性を発見し、対策を行うことができるというものです。
悪意のある攻撃者を想定して、ソースコードを分析し、解析を行うことで脆弱性を含む点がないかどうか、コードに問題のある部分はないか詳細に知ることができます。これによって適切な対策をおこなった製品は、より攻撃に強いものとなります。
リバースエンジニアリングの注意点
リバースエンジニアリングには、脆弱性の発見など利点も多いですが、行う際には、「特許法」や「著作権」などいくつか注意すべきことがあります。以下では、それらについて説明します。
1. 特許法上の問題
まず気をつけるべきことは、特許法です。特許法の第1条には、特許法の目的として「発明の保護及び利用を図ることにより、発明を奨励し、もつて産業の発達に寄与すること」と書かれています。ソフトウェアも「発明」に該当するので、それをリバースエンジニアリングの手法で解析し、情報を活用することは法律に抵触する恐れがあります。
ただし、第69条には、「特許権の効力は、試験又は研究のためにする特許発明の実施には、及ばない。」との記述があります。したがって、リバースエンジニアリングを利用する場合は、こうした目的である必要があります。
2. 著作権上の問題
リバースエンジニアリングには、著作権上の注意点もあります。創作物としてのプログラムは、当然著作物として保護されるべきものとなります。したがって、複製や抽出などは著作権法に抵触する恐れがあります。
ただし、著作権法では実際の著作物に至らないアイデアといった段階のものは保護対象とされていないので、研究や開発のためのアイデアを得るという意味でのリバースエンジニアリング自体は合法とも言えます。このあたりはグレーゾーンとも考えられます。
3. 2019年1月の法改正で合法になる可能性も
2019年1月1日から施行された「改正著作権法」では、従来は合法と言えないケースもあった、セキュリティ目的におけるリバースエンジニアリングについて、合法とされることになりました。これによって、よりリバースエンジニアリングの活用が進むと考えられます。
リバースエンジニアリングの対策
研究や分析、合法化されることとなったセキュリティ面でのリバースエンジニアリングとは逆に、やはり課題は悪意を持った第三者による情報取得目的のリバースエンジニアリングです。対応策を考えてみましょう。
1. 難読化を図る
プログラムコードをリバースエンジニアリングされないようにする対策として最も一般的なものがソースコードを読みづらくする「難読化」と呼ばれるものです。難読化には、「意味のないプログラムコードを挿入する」「曖昧で理解しにくいアルゴリズムにする」なとの方法があります。
具体的に、難読化を行うにはwhiteCryption Code Protection、Dotfuscatorなど、さまざまな専用のツールを利用して行います。
2. 暗号化を行う
コードを難読化して読みづらくすることは、一定の時間稼ぎにはなりますが、時間をかけて解読されてしまう恐れもあります。そこで使われる手法が暗号化です。これは、コードのファイル自体を暗号化し、解読用の鍵がないと読めないようにするものです。
ただし、鍵ファイルの置き場所やコード上での読み込みなどを考慮しておかないと解読される危険性が上がります。
まとめ
プログラムのコードを解析し、何が書かれているのかを知るリバースエンジニアリングは、セキュリティ対策などの良い利用法もあれば、悪意を持った第三者による技術情報などの盗み出しといった犯罪行為という面もあります。
悪意を持ったリバースエンジニアリングを防ぐには、コードの難読化や暗号化といった適切な対策をしておく必要があります。リバースエンジニアリングは、2019年1月からの改正著作権法の施行により合法化され、より利用が広がることが想定されます。適切かつ安全に利用されるようしっかりと対策を行っておくことが大切です。