ニュース

Googleが高精度かつ高速にファイル形式を判別するツール「Magika」公開

 Googleは16日、ディープラーニングにより高精度かつ高速にファイル形式を判別/検出できるツール「Magika」をGitHubで公開した。オープンソースで、ライセンスApache 2.0準拠となっている。

 Magikaはディープラーニングの力を活用し、平均精度99%以上を実現しつつ、1つのCPUで実行しても1秒間に120種類以上/数百万ファイルのファイル形式を判別できるツール。判別時間はわずか数ミリ秒で、モデル自体も比較的小さく、コアモデルは1MB未満だ。

 コンピュータは登場当初よりファイルの種類を正確に判別することが重要であり、たとえばWebブラウザやコードエディタでも、事前にファイルタイプを検出して、適切にレンダリングする方法を決定している。より具体的に言えば、コードエディタはまずファイルタイプを検出して、それを元に開発者が新たに入力した時に使用する構文の色分けスキームを選択して表示する……といった具合だ。

 このためLinuxには「libmagic」とファイルユーティリティが標準搭載され、50年以上にわたってファイルタイプの識別方法として事実上の標準として機能してきた。

 ただ、ファイルは形式ごとに構造が異なるか、構造がないものも存在するため、ファイル形式を正確に判別することは非常に難しい。そのためlibmagicを含むこれまでのほとんどのファイル形式判別ツールは、手動で作成されたヒューリスティックとカスタムルールのコレクションに依存して分類をしてきた。

 ただしこの手法はルールの作成が難しく、時間がかかる、エラーが発生しやすいという問題を抱えている。特にセキュリティアプリケーションの場合、攻撃者はペイロードと判別を混同させるような試みも行なわれているため、信頼性のある検出を作成することが難しいという。

 この問題に対処するためGoogleはディープラーニングを活用したファイル形式検出のMagikaを開発。内部的にはKerasを使用して設計およびトレーニングされ、高度の最適化されたカスタムのディープラーニングモデルを採用。推論はOnnxをエンジンを採用することで高速化を実現したという。なおその詳細について今年(2024年)後半に論文をリリースする予定。

ファイルを高精度で判別可能

 MagikaはWebでデモを試せるほか、Pythonのパッケージ管理システムで「pip install magika」を使用してPythonライブラリおよびスタンドアロンのコマンドラインツールとしてインストールできる。