世間では、新しい技術の開発が注目されがちだが、古い既存システムの仕組みを解析する技術も存在する。例えば、古い自動車が壊れてしまい、交換する部品が無い場合どうするだろうか?このようなときには、壊れた部品の材料、形状、動く仕組みなどを解析して、設計図を再現し、それを元に部品を再構築する必要がある。このように、すでにある製品を解析し、そこから設計を読み取る技術をリバースエンジニアリングと呼ぶ。
「ソフトウェアにおいても、このリバースエンジニアリングは重要です。コンピュータのソフトウェアはWindowsやiOSなど、ハードウェアを制御するオペレーティングシステムと、そのオペレーティングシステムの上で動作するアプリケーションの2つに主に分類されます。このため、オペレーティングシステムが更新された後、今まで動いていたアプリケーションが動かなくなる場合があるんです。スマートフォンのiOSやAndroidが更新されたら、今まで動いていたゲームが動かなくなるといった経験がある人は多いでしょう。このとき、オペレーティングシステムの更新をしない方がよいと考える人もいるかもしれませんが、セキュリティを維持するためにもその更新は必要なのです」と話すのはAI・システムデザイン研究室の岸本頼紀准教授だ。さらに、オペレーティングシステムのアップデートは、もっと致命的な被害を生む可能性がある。
「たとえば、ロボットをパソコンで制御して金属部品を製造する小さな町工場をイメージしてみてください。ある日のオペレーティングシステム更新で、セキュリティは強化されたのですが、ロボットを制御するプログラムが動かなくなってしまうというケースがあります。アプリケーションを開発していた会社に修正を依頼することもできるかもしれませんが、その会社が倒産していたりすると、どうにもならなくなってしまいます。こういう時がリバースエンジニアリングの出番。今まで動いていたプログラムを解析し、プログラムから必要な機能やハードウェアとの関連を分析します。これにより、既存プログラムの設計図を抽出し、設計図に基づいて新しいプログラムを開発できれば、新環境で同様のロボット制御を実現できるのです」
また、リバースエンジニアリングは、最近のセキュリティ技術にも貢献している。
「コンピュータウイルスなどの悪意のあるプログラムのことをマルウェアと呼びますが、プログラムであればリバースエンジニアリングで解析ができます。あるコンピュータウイルスに感染した場合、どのようなファイルが流出したのか?どこに流出したのか?被害がでないような対策プログラムはどのようなものを作れば良いのか?といったことが分析できるのです」
最近では多くのマルウェアが確認されており、その数は急増している。悪意のあるプログラムに対して、リバースエンジニアリングによりその脅威を解析し対策をし続けることが情報システムの安心と安全を守ることにつながる。リバースエンジニアリングは、そんなセキュリティの現場でも活用されている技術なのだ。