カテゴリ: ソフトウェア保護
ソフトウェアの自動保護:進化と改善
CodeMeter Protection Suite製品群は拡大し、ますます強化されています。AxProtector .NET Standardは、.NET Standard 2.0アプリケーション用のツールとしてProtection Suite群に加わりました。その他のツールも進化し続け、より力強いものとなっています。GUIを一新し、AxProtector .NETはFIPS互換となり、ネイティブアプリケーション用のAxProtectorとIxProtectorは、CmDongle上でのコード実行をサポートします。
概要
CodeMeter Protection Suiteは、アプリケーションやライブラリを自動的に暗号化する強力なツールボックスです。実行ファイルをリバースエンジニアリングから保護し、有効なライセンスと暗号化して結びつけます。
個々のツールは、各プラットフォームや環境で動作するよう特殊な設計が施されており、ISVとして最小限の労力で最適な保護を実現します。どのツールにおいても、コンパイルされたライブラリやアプリケーションを暗号化するために、ファームコードとプロダクトコード(またはそれらの組み合わせ)を選択します。この暗号化は、ファームコードとプロダクトコードにバインドされたキーで行われます。適切なライセンスがなければ、復号は通常不可能です。
AxProtectorとIxProtector
AxProtectorは、Windows、Linux、macOSのネイティブアプリケーションやライブラリを保護します。また、コード全体を暗号化し、アプリケーションの起動やライブラリのロード時にシステムが必要なライセンスをチェックし、ライセンスがある場合には実行コード全体を復号します。その後、アプリケーションは、自動保護機能が全くない場合と同様の動作をします。
IxProtectorでは、ランタイム中に復号/実行される別の関数をマークし、暗号化することができます。設定に応じて、これらは自動的、またはISVが定義したAPI呼出しによって実行されます。これにより、特に機密性の高いコードを個別に暗号化された形でCmDongleに移動させ、実行することが可能となります。このコードが、ハッカーに見られることは決してありません。
AxProtector .NET
AxProtector .NETは、CodeMeter Protection Suiteの中の1種類で、.NETアセンブリの自動保護を行います。このツールは、.NETフレームワークアプリケーションのコードを個々のメソッドのレベルで暗号化します。各メソッドには独自のスタブコードが与えられており、メソッドが最初にアクセスされた際にライセンスをチェックし、そのライセンスが正しいものであった場合にのみ暗号化を行います。これは、メソッドのアクセス時に自動復号が選択された場合に、IxProtectorがネイティブコードを保護する方法とよく比較されます。
このアプローチにより、自動的にハイレベルのセキュリティが実現されることになります。セキュリティレベルはパフォーマンスに影響を与えるため、開発者は、パフォーマンスとセキュリティのバランスを自身で決め、選択したアプローチを微調整することが可能です。
AxProtectorの現在のバージョンは、FIPSモードに対応しています。このモードがあることで、PCユーザーの設定から、.NETフレームワークにおいて、FIPSテスト済みの暗号機能の実装のみが許可されるようにすることができます。この設定は、米国の公的機関では通常要求されます。ユーザーがこのターゲットグループに属している場合には、先に示した関連機能を忘れないようにしてください。
AxProtector .NET Standard
.NET Standardは、異なる.NET環境間の相互運用性と互換性を促進する.NET APIの仕様を提供しています。これにより、ISVは、プラットフォーム間でのアプリケーションの展開や、移行が容易となります。
今回のリリースでは、.NET Core 2.0やMono 5.4のような.NET Standard 2.0のアプリケーションを保護する機能を備えた、AxProtector .NET Standardという新たなバージョンが発表されました。
この保護機能は、AxProtector .NETで使用されているものと同じベースで動作します。アプリケーションは分析され、メソッドレベルでの暗号化によって保護されます。また、CodeMeterのコンテナ内で正しいライセンスが利用可能な場合にのみ、復号し実行することができます。
AxProtector Java
Javaソースコードをコンパイルする際には、まずJavaバイトコードと呼ばれる独自の中間言語にコードが翻訳されます。ターゲットとなるプラットフォームでは、Java仮想マシン(JVM)がこのコードを解読、実行します。これによって、Javaプラットフォームの独立性が保たれます。しかし、Javaバイトコードをセキュリティの観点からみると、ある種の弱点があることがわかります。
.NETと同様に、Javaバイトコードの逆コンパイルは簡単であるため、リバースエンジニアリングが、攻撃者によって容易に実行される可能性があります。AxProtector Javaでは、他のAxProtector製品の実装と同様、コードを暗号化し、特定のライセンスに結びつけることで、攻撃者の追跡を阻止します。コードはクラスやメソッドでのレベルで暗号化することができ、その場で復号されるため、平文の状態でハードドライブに保存されることはありません。
Java 9のモジュラー型JARの導入により、AxProtector Javaにいくつかの変化がもたらされました。新バージョンでは、Java 7/8で作成された従来のJavaアプリケーションと、Java 9で作成されたモジュラー型JARの両方をサポートします。
AxProtectorグラフィカルユーザーインターフェイス(GUI)
コマンドラインツールとして提供されたAxProtectorは、継続的な統合/配布の一環として、自動ビルドプロセスに完全に統合し、その真価を発揮します。同時に、GUIはユーザーに対して機能や特徴を示し、ISVのワークステーション上で、より快適なAxProtectorの使用を実現します。
GUIの新バージョンが登場し、特にライセンシングシステムの設定が改良されました。2016年のユニバーサルファームコード導入以前、ソフトウェア開発者は、ソフトウェアとドングルベースのライセンスを組み合わせる際に、CmDongle/CmActLicense用の2つのファームコードを用意しなければなりませんでした。ユニバーサルファームコードの導入によって、この区別が不要となりました。そして今回の新バージョンでは、標準設定として1つのファームコードのみが表示されます。これにより、互換性を維持するために複数のファームコードを使用している開発者に影響が及ぶことはありません。マウスを1回クリックするだけで、表示を変えることができます。
WibuKeyとの互換性
CodeMeter Protection Suiteは、現在現場で使われているすべてのCodeMeterライセンシングシステム(CmActLicenseおよびCmDongle)をサポートしています。また、CodeMeter Protection Suiteは、1989年に発表されたCodeMeterの前身であるWibuKeyも引き続きサポートしています。このように、Wibu-Systemsは、長期的な可用性と永続的な互換性を重視しています。
止まらない進化と改善
CodeMeter Protection Suiteのすべてのパーツとコンポーネントは、セキュリティとパフォーマンスに特に注意を払いながら、開発が続けられています。CmDongleに実行可能コードを持たせたり、トラップを自動で設定したりする新機能は、絶え間ない進化のほんの一部にしか過ぎません。また、キャッシングの仕組みが導入され、パフォーマンスを向上させるために改良されています。専門家で構成されている委員会は、現時点/計画中のセキュリティ機能を監視しつつ、それらが実際の付加価値を提供し、パフォーマンスに影響を与えていないことを確認する役割を担っています。CodeMeter Protection Suiteでは、最高かつ最速のメカニズムのみが採用されています。
KEYnote 36 – Edition Fall 2018