Wibu-Systemsコラム

ソフトウェアの保護、リバースエンジニアリング対策を
Wibu-Systemsの技術で実現

組込み機器開発におけるセキュリティ脅威を、コード暗号化とデバッガー検知(アンチデバッグ機能)で対策
IoT化により、組込み機器のセキュリティ脅威として、情報資産の損失が挙げられ、不正アクセスなどの脅威と、セキュリティホールなどの脆弱性を対策および意識した開発が重要となる可能性があります。本コラムでは、Wibu-SystemsのCodeMeter製品のセキュリティ技術の概念や使用方法の概要を解説します。
概要

Wibu-Systems「CodeMeterセキュリティ技術」でできること

CodeMeterセキュリティ技術を駆使することで、組み込みシステムに使用するアプリケーションプログラムを暗号化し、更にデジタル署名を付与し強力に保護します。

  • リバースエンジニアリング対策
  • ソフトウェアの複製コピー防止
  • アプリケーション整合性の保護
    (改ざん・偽造の防止)
  • 機能ごとにライセンスのアクティベーションが可能
  • アクセス制御管理の柔軟性

Wibu-Systemsが提供するソフトウェア、APIを組み込むことにより短期間で強力なセキュリティ保護対策が可能になります。
また、ソフトウェア保護の対策の時間と労力を節約し、ソフトウェアを海賊行為やリバースエンジニアリングから保護します。

  • ※出典:Wibu-Systems株式会社

解説

AxProtector製品:ソフトウェア全体を暗号化するツール

  • AxProtectorは、保護したいソフトウェア一式を暗号化し、それをセキュリティシェルであるAxEngineで保護します。 その後、最善のアンチデバッグとアンチ逆アセンブルのメソッドがソフトウェアに挿入されます。
  • ソースコードの変更は不要です。AxProtectorをビルド後のプロセスとして統合します。
    暗号化操作は、ソフトウェアのコンパイル後、セットアップの作成前にAxProtectorによって実行されます。
    AxProtectorは、GUI(グラフィカルユーザーインターフェイス)とコマンドラインツールの両方から使用できます。
    • コマンドラインツールとして、AxProtectorは自動ビルドシステムに継続的に統合して実行できます。
    保護されたソフトウェアを起動すると、まずAxEngineのコードが実行されます。
    AxEngineは利用可能なライセンスをチェックします。
    ライセンスがあれば自動的に割り当てられ、保護されたソフトウェアの復号に使用されます。
    さらに、AxEngineは整合性チェックを実行し、改ざん攻撃の可能性を検証します。
  • AxEngineは、高度なアンチデバッグおよびアンチリバースエンジニアリング手法を使用して、ソフトウェアに対するセキュリティの脅威を常に監視しています。危険が検出されるとすぐにソフトウェアの実行を中断します。ソフトウェア開発会社(ISV)として、このような状況でライセンスをロックするかどうかを定義できます。
    AxEngine内のウォッチドッグは、バックグラウンドでライセンス、整合性、および起こり得る脅威を定期的にチェックします。
  • ※出典:Wibu-Systems株式会社

  • オリジナルのコード
  • 暗号化されたコード
  • ※出典:Wibu-Systems株式会社

  • バリアントの作成

    ソフトウェアの複雑さを増すために、ソフトウェアの関数は関数のバリアントとしてコピーします。ラッパー関数は、関数の特定の入力パラメーターに応じて、実行されるバリアントを選択します。

  • バリアントの修正

    個々のバリアントは、各バリアントに有効な値の範囲でのみ機能するように修正されます。これにより、攻撃者がラッパー関数にパッチを適用して、毎回同じバリアントのみを実行することを防ぎます。

  • バリアントの暗号化

    すべてのバリアントは暗号化されており、攻撃者が最初に復号せずにコードをリバースエンジニアリングすることを防ぎます。

  • トラップの挿入

    すでに作成されたバリアントに加えて、さらにトラップとしてバリアントが挿入され、暗号化されます。トラップにはロックコードが含まれており、トラップがドングルを介して復号されるとドングルはセルフロックし、復号に使用できなくなります。これにより、攻撃者がリバースエンジニアリングをせずにすべてのメソッドを解読することを防ぎます。

  • ドングルのバリアントの選択

    ラッパー関数は、ドングルを使用してバリアントを選択します。そのため、入力パラメーターがドングルに送信され、使用されるバリアントが返されます。これにより、解読されたラッパー関数をリバースエンジニアリングするだけでは、攻撃者は必要なバリアントを区別できなくなります。絶対的な確実性を持つには、可能なすべての入力パラメーターのコードを実行する必要があります。

  • ドングルのステートエンジン

    開発者は、関数を選択した順序でのみ実行できることを知っています。直近の復号メソッドは、ステートとしてドングルに保存されます。 次の復号では、このステートが満たされたかどうかを確認します。そうでない場合、トラップが発動し攻撃者がソフトウェアのすべてのバリアントを試行するのをいつでも防ぐことができます。攻撃者は常に開始点に戻る必要があり、攻撃の複雑さが増します。

  • 復号の遅延

    通常の操作では、30秒ごとに特定の数の復号しか実行できません。この数は、ドングルの復号しきい値として保存されます。ドングルはそれに応じて復号作業のペースを調整します。このメカニズムはプロセスをより複雑にするだけでなく、攻撃者の速度を低下させます。

引用
実行例

操作は簡単!:UIは直感的な操作で容易に暗号化

AxProtectorを起動し、ファイル名を指定してセキュリティ設定を行います。
すべて画面操作でプロテクト処理できるため、プログラムの知識を必要とせず、時間とコストを大幅に節約可能です!

動画:デバッガを検知した際のアプリケーションの反応を見てみましょう!

暗号化できるファイル

  • Windows 32bit ⁄ 64bitプログラム
  • .NETアセンブリ
  • Javaアプリ
  • macOSプログラム
  • Linuxプログラム
  • AIアルゴリズム(python)
  • Docker ContainerやVMなどの仮想環境
  • テキストファイル

Pythonコードも暗号化可能

プラットフォーム非依存のソフトウェアとして配布可能。
暗号化された Pythonコードは、すべての関数が個別に暗号化されています。
Python資産を、たった1回の暗号化作業で、さまざまなプラットフォームに安心して配布が可能になります。

  • ※出典:Wibu-Systems株式会社

アンチデバッグ機能

ハッカーからの解析をブロックするために、強力な対策機能が搭載されています。
デバッガからの解析を防ぐために、アンチデバッグ機能を設けています(デバッガーを検知すると、ハードウェア自身をロックするセキュリティロック機能も搭載)。

  • ベーシックデバッガ―チェック

    基本的なデバッガーチェックベースになるデバッグ防止機能をプログラム内に組込みます。
    デバッガ―を検知し、検知した場合は実行しません。

  • カーネルデバッガーチェック

    カーネルレベルでのデバッグ防止機能をプログラム内に組込みます。
    カーネルデバッガーを検知し、検知した場合は実行しません。

  • 高度なデバッガーチェック

    基本的なデバッガーチェックに加え、さらなる高度なデバッガー防止機能をプログラム内に組込みます。
    デバッガーを検知し、検知した場合は実行しません。

  • IDE デバッガーチェック

    Visual Studio等の開発統合環境でのデバッガーの存在をチェックします。デバッグ目的でプログラム開発ツールから接続することを禁止します。
    IDEデバッガ―を検知した場合は実行しません。

  • ライセンスアクセスロックを有効

    上記のアンチデバッグスキームオプションで有効化された対象を検知した場合、ライセンスへのアクセスをロックします。

    • 「設定」ボタンからロック適用のルール詳細を設定可能です。
参考

Nvidia Jetsonを使用した、暗号化&保護のデモシステムをご用意しています。
下記のような技術情報を含め、ワークショップで随時ご案内が可能です。

  • NVIDIA Jetson Nano開発者キットのセットアップ
  • 開発キットに人物ポーズ推定を行うプログラムをJetsonに構築
  • Pythonデータを暗号化、ライセンスを利用した復号の確認
  • Pythonデータを使用し、カメラによる人物のポーズ推定
  • 暗号化データ確認

ワークショップの詳細・お申込みはこちらのバナーから