AxProtectorに難読化機能が追加

AxProtectorに難読化機能が追加

Wibu-Systemsは、Windows、Linux、macOS のネイティブアプリケーションユーザー向けに、AxProtectorの新バージョンを開発しました。

AxProtector Compile Time Protection (CTP)

AxProtector CTPは、Windows、Linux、macOSに対応した製品であり、これらオペレーティングシステム(OS)に対応した新しい操作性と保護技術が盛り込まれています。

AxProtector CTPは、AxProtector 11.20のリリースと同時に、2023年2月よりダウンロードが可能になりました。AxProtectorのWindows、Linux、macOSの既存ライセンスで使用でき、自動保護、モジュラーライセンス、ライセンス不要のIP保護モード、ファイル暗号化、そして新たに加わったコンパイルタイム難読化、これらの機能は、3つのオペレーティングシステム(OS)のネイティブアプリケーションで使用可能です。

AxProtector CTPの保護メカニズムは、ビルドシステムのコンパイル処理に組み込まれています。

AxProtector CTPの開発背景

Appleは、ARMプラットフォーム上のオペレーティングシステム(OS)macOSに変更を加え、macOSバージョン12.3から厳格なコード署名ガイドラインが施行されました。これにより、実行時に暗号化を解除する必要がある保護されたソフトウェア、特にプラグインの実行が困難になりました。

但し、IntelまたはIntel-emulated (Rosetta)システム上で保護されたソフトウェアを実行する場合には、現時点では影響はありません。

AxProtector CTPを開発したもう一つの理由は、リバースエンジニアリングに対してのみ保護されるソフトウェアに対して、ライセンスを求めずに(ライセンス不要のIP保護モード)、IP保護レベルを強化したいことにあります。Wibu-Systemsが採用する従来のIP保護ソリューションは、ユーザー側のデバイスのメモリにある実行コードを暗号化し、一時的に復号する、というものでした。つまり、実行可能コードは、ほんの一瞬ではありますが、平文に切り替えなければなりません。

難読化の手順

当社の最新技術では、ネイティブアプリケーションのコードを難読化します。このネイティブコードの難読化は、従来の難読化手法に似ています。特に調整されたLLVMコンパイラーでコンパイルする際、関数は3つのステップを経て保護されます。まず、関数名とテキスト文字列が暗号化によって判読不能になります(図1:左)。次に、コードのブロックが難読化されます。追加のコードブロックや配列の分岐によって、コードの解読は非常に困難になります(図2:右)。これにより、実行可能コードのサイズが増大します。

最後に、コードブロック間の論理的な接続を間接的な呼び出しに置き換えます(図3:下)。

バイナリ内の実行可能コードの論理的なつながりは、切断されたブランチにより認識できなくなります。これにより、リバースエンジニアリングからセキュアに保護することが可能です。

このアプローチでは、実行可能コードが必ず断片化・難読化された形でワーキングメモリに格納されるため、リバースエンジニアリングに対する優れた保護効果を発揮します。コード解析はほぼ不可能です。

ライセンシング

この新しいテクノロジーには、IP保護だけでなく、ソフトウェアやそのコンポーネントに対するライセンシングも含まれています。AxProtector .NET NCで利用可能なすべてのライセンス設定オプションは、こちらから確認することができます。

AxProtectorによって挿入されたライセンスチェックコードは、元のアプリケーションコードとの識別が困難です。正規のライセンスキーがある場合にのみ実行可能です。

要件

AxProtector CTPは、ClangコンパイラーとWibu-Systems社製の追加のプラグインに対応した、特殊なビルド環境を必要とします。コンパイラーの最小限の調整のみ必要となります。ソフトウェア開発者は、Wibu-Systemsが提供するセットアップガイドを使用して作業を行うことが可能です。これらは、単にプラグインの使用を有効にすることを目的としています。

AxProtector CTPは現在、コンパイラーClang 14.05と共に配布されています。

Clangコンパイラーは、一般的な開発環境の多く(例:Visual Studio、Xcode)でサポートされているため、標準のAxProtectorで提供されているクロスプラットフォーム保護を含めた、AxProtector CTPの機能をすぐ利用することができます。AxProtectorは、各システム(Windows、Linux、macOS)と各プラットフォーム(Intel、ARMHF、AARCH64)に対応しています。

推奨ユースケース

Wibu-Systemsでは、AxProtector Windows、AxProtector Linux、AxProtector macOS のサポート・開発を継続して行っています。ソフトウェア開発者は、引き続き各バージョンを使用することができます。

macOS

CodeMeterでmacOS用のプラグインを作成・保護する場合、ソフトウェア開発者は、新しい保護メカニズムを使用する必要があります。特に、保護されたプラグインをロードするホストアプリケーションがAxProtectorで保護されていない際には必須となります。また、macOSアプリケーション開発者は、macOSの標準保護システムになるAxProtector CTPを検討すべきです。

WindowsおよびLinux

難読化によりコードの安全性が向上すると共に、AxProtector CTPにおける、効率的なIP保護が期待できます。システム要件が既に満たす、もしくは将来的に満たす見込みがある場合、移行が可能です。

パフォーマンス

AxProtectorまたはAxProtector CTPで保護されたアプリケーションは、同程度のパフォーマンスで動作します。難読化を重要なランタイム機能で使用する場合、システムによっては、一定の効果が得られる場合があります。AxProtector CTPの統合プロファイラーによるテスト実行を推奨します。

利用方法

Wibu-Systemsは、初期評価用として、事前設定されたClangコンパイラーおよび保護プロセス向けのコンパイラープラグインを提供しています。コンパイラーは、ビルドシステムへ簡単に統合することができます。また、コンパイラーを自ら調整したい開発者向けに、プラグインの説明書も用意しています。

AxProtector CTPの設定は、AxProtector .NET NCやAxProtector Python NCとほとんど変わりません。

AxProtectorには、強力な機能群(例:自動保護、モジューラーライセンシング(ライセンスリスト)、ライセンス不要のIP保護モード、ファイル暗号化)が含まれています。AxProtector CTPには、設定で簡単にアクティベート可能なCompile Time Obfuscationオプションが追加されています。この機能を利用するには、追加ライセンスが必要です。

AxProtector CTPは、LLVMコンパイラーの中間ファイル形式を使用しています。従って、LLVMコンパイラーのインフラでサポートされている多くのプログラミング言語(例:C、C++、Rust、Swift)およびプラットフォームに対応しています。

今後の展望

Wibu-Systemsは引き続き、Windows、Linux、macOS向けのAxProtectorとAxProtector CTPの改良を重ねていきます。ソフトウェア開発者やベンダーは、アプリケーションのニーズに合わせて最適な保護メカニズムを選択することができます。今後、AxProtector CTPでは、Code-Movingを別途ライセンシングされた機能として追加する予定です。

 

貴社の課題をCodeMeterで解決しませんか?
お気軽にお問合せください。製品説明および最適な使い方をご提案します。

お問合せ

KEYnote 45 – Edition Spring/Summer 2023

To top