[論文共有] DnD: クロスアーキテクチャのディープ ニューラル ネットワーク デコンパイラー

DnD: クロスアーキテクチャのディープ ニューラル ネットワーク デコンパイラー [USENIX 2022]

ルオユ・ウーパデュー大学
キム・テギュペンシルベニア州立大学
デイブ (ジン) ティアンパデュー大学
アントニオ・ビアンキパデュー大学
ドンヤン・シューパデュー大学

ディープ ニューラル ネットワーク (DNN) のアプリケーションは、近年、特にエッジ デバイス上で着実に成長しており、特殊な DNN コンパイラを使用して DNN をバイナリ ファイルにコンパイルすることができます。DNN モデルにアクセスできる場合、多くのセキュリティ アプリケーション シナリオ (DNN モデルの抽出など) 、ホワイトボックス敵対的サンプル生成、DNN モデルのパッチ適用と強化など) はすべて可能です。ただし、これらの技術はコンパイルされた DNN には適用できません。残念ながら、高レベルの表現を復元できる専用のデコンパイラはありません。この問題を解決するに
は, 我々は、最初の ISA に依存しない DNN デコンパイラーである DnD を提案します。DnD は、専用のループ分析と組み合わせたシンボリック実行を使用して、分析されたバイナリ コードを新しい中間表現にプロモートし、DNN の高レベルの数学的演算を表現することができます。コンパイラや ISA に依存しない方法で、DnD は抽出された DNN 数学演算をテンプレート DNN 数学演算と照合し、特定されたすべての DNN 演算子のハイパーパラメータとパラメータ、および DNN トポロジ全体を復元します。私たちの評価では、DnD が完全に復元できることが示されています。 3 つの異なる ISA (Thumb、AArch64、および x86-64) 用の 2 つの異なるコンパイラー (Glow および TVM) によってコンパイルされたバイナリから抽出された、異なる DNN モデル。さらに、DnD は、現実世界のマイクロコントローラーで使用される DNN モデルを抽出し、それらを攻撃することができます。ホワイトボックス敵対的機械学習技術を使用します。

一言で言えば - DnD: シンボリック実行と特殊なループ分析技術を使用した DNN モデル バイナリの逆コンパイル

言い換えれば「リバースAIの前例を開く」

序章

DNN コンパイラーは、マイクロコントローラーや携帯電話などのエッジ デバイスで使用されることが増えています。たとえば、マイクロコントローラーはコンパイルされた DNN バイナリを使用して、安全な顔認識、音声認識、音声制御などのさまざまなタスクを実行します。最近の予測では、2025 年までにエッジ デバイスの 98% が、多くの場合 DNN を活用したインテリジェント機能を搭載すると予測されています。
コンパイルされたバイナリ コードから DNN モデルを抽出すると、DNN モデルの抽出と分析 (手動および自動)、ホワイトボックス敵対的サンプル生成、ホワイトボックス DNN バックドア検出、DNN モデルのパッチ適用と強化など、さまざまなセキュリティ アプリケーションが可能になります。残念ながら、これらすべての使用シナリオにおいて、従来の逆コンパイラーを適用して得られる逆コンパイルされたコードのソースレベルの表現は、アナリストにとってあまり役に立ちません。そのような逆コンパイラーはコンパイルされた DNN モデルの数学的意味論を捕捉できないためです。
このペーパーでは、コンパイルされたバイナリから DNN モデルを抽出できる、コンパイラおよび命令セットに依存しない初のディープ ニューラル ネットワーク 逆コンパイラーであるDnDについて説明します。具体的には、コンパイルされた DNN モデルを処理するときに、DnD はそのパラメーター、ハイパーパラメーター、およびトポロジーを正確に復元し、逆コンパイルされたモデルを ONNX モデリング言語 [9] でエンコードされた高レベル表現として表すことができます (例: 図 1)。

ここに画像の説明を挿入

DNDは以下の3つの新技術をベースとしています。まず、シンボリック実行と専用のループ分析を組み合わせて、さまざまな DNN オペレーターが受信データを処理する方法を表す正確な数学的定式化を取得します。第 2 に、DND は新しい中間表現 (IR) を使用して、コンパイラや ISA に依存しない方法で高レベルの数学的 DNN 操作を表現します。最後に、抽出された数学演算をテンプレート数学 DNN 演算と照合し、ハイパーパラメータと特定されたすべての DNN 演算のパラメータを復元することによって、ターゲット バイナリ内の DNN 演算の種類と場所、およびネットワーク全体のトポロジが特定されます。

実験結果は、DnD が多用途で正確であることを示しています。3 つの異なる ISA 用に 2 つの異なるコンパイラーによってコンパイルされた異なる DNN モデルを、人間の努力なしで逆コンパイルすることをサポートします。さらに、逆コンパイルされた DNN モデルは元の DNN モデルと構造的に同等であり、再コンパイル後に生成されたバイナリはサンプルを元のバイナリと正確に分類します。さらに、DnD が実際のマイクロコントローラーで使用される DNN バイナリを正常に逆コンパイルできることを実証し、復元された DNN モデルを使用して元の DNN に対する敵対的攻撃を強化し、効率の低いブラック ボックス攻撃の代わりにホワイト ボックス攻撃を可能にすることができます。

貢献
(1) DND は、DNN モデル用のコンパイラおよび isa に依存しない初の逆コンパイラです。DND は、DNN バイナリを逆コンパイル (ストリップ) して、コンパイルされた DNN モデルの完全な詳細を復元し、ONNX 高水準モデリング言語を使用してそれらを表現できます。
(2) 各 DNN 演算子を表す専用の IR を設計し、シンボリック実行を使用して DNN バイナリを IR 表現に引き上げる新しい手法を開発します。抽出された IR 式はテンプレート式と照合され、コンパイルされた DNN で使用されるさまざまな演算子が識別され、そのハイパーパラメータ、パラメータ、および全体的なネットワーク トポロジが復元されます。
(3) 3 つの ISA (Thumb、AArch64、x86-64)、2 つの DNN コンパイラー (Glow および TVM)、および広く使用されている 3 つの DNN モデル (MNIST[59]、ResNet v1[20]、および MobileNets v2[40]) で評価されました。拒否。実験結果は、DND がさまざまな ISA、コンパイラ、モデルのコンパイルされたバイナリから DNN モデルを完全かつ正確に復元できることを示しています。

プラン

仮定

DnD は次の前提に基づいています:
(1) DNN バイナリにアクセスできる
(2) コントロール フロー グラフ (CFG) の回復が信頼できる
(3) DNN コンパイラーは難読化技術を使用しない、実際には DNN モデルの難読化に関する研究はありません。

課題

DNN バイナリ逆コンパイルには、C/C++ バイナリ逆コンパイルと比較して、いくつかの特有の課題があります。

課題 1: さまざまなコンパイラとアーキテクチャ
DNN モデルは、さまざまな DNN コンパイラを使用して、Arm Thumb、Arm AArch64、x86-64 などのさまざまな命令セット アーキテクチャ (ISA) 上にコンパイルされます。それぞれの組み合わせによって生成される制御フローやデータフローは全く異なるため、バイナリコードを使用する場合でも、汎用逆コンパイラで生成された逆コンパイルコードを使用する場合でも、単純なパターンマッチングはコンパイラやコードの種類に依存しない汎用には適していません。 DNN モデルのハイパーパラメータを復元します。
解決策: 各 DNN 演算子を代数演算の AST などの演算子ダイジェストとして表現できる専用の IR を使用します。DNN 演算子は、異なる DNN コンパイラや ISA であっても同じ数学的セマンティクスを持ち、IR および演算子のダイジェストは数学的セマンティクスをキャプチャできるため、DnD はコンパイラおよび ISA に依存しない方法で数学的セマンティクスを認識できます。

課題 2: ベクトル化された数学的計算と複雑なループ構造
テンソル演算として、DNN 演算子は常に、ループ本体にベクトル化された数学的計算を含むネストされたループとして実装およびコンパイルされます。さらに、ネストされたループの複雑な制御フローと巨大なループ インデックス範囲は、パス爆発の問題を引き起こす可能性があり、各 DNN オペレーターのオペレーター概要を生成するためのシンボリック実行の使用を妨げ、このシンボリック制約をオペレーターに解除します
。ダイジェストは IR で表現され、専用のシンボリック実行を使用してベクトル化された数学的計算のセマンティクスをキャプチャします。

課題 3: DNN オペレーターのスケーラブルなサポート
実際のモデルには、さまざまな DNN オペレーターが含まれます。したがって、各 DNN オペレーターのヒューリスティック アルゴリズムを手動で設計して、その DNN オペレーター タイプを識別し、そのパラメーターを抽出することはスケーラブルではありません。
解決策: 未知の DNN オペレーターの場合、生成されたオペレーター ダイジェストに含まれる AST をオペレーター テンプレート AST と照合して、そのオペレーター タイプを識別します。DND は、まずテンプレート AST ライブラリを構築し、各 DNN オペレーターを対応する AST にマップします。次に、最新の DNN コンパイラーを使用して各 DNN オペレーターをコンパイルし、コンパイルされた各 DNN オペレーターのテンプレート AST を生成し、設計された IR で表現します。次に、未知の DNN オペレーターに対して以前に生成された操作ダイジェストが与えられると、DND はその AST をテンプレート AST データベース内の AST と照合し、未知の DNN オペレーターのタイプを決定します。

デザイン

DND のワークフローは、図 2 に示すように 3 つのコンポーネントで構成されます。具体的には、(1) DNN オペレータ位置認識、(2) オペレータ概要生成、(3) DNN モデル改善の 3 つの部分です。
ここに画像の説明を挿入

第 1 段階では、DnD は入力 (切り詰められた) DNN バイナリから制御フロー グラフ (CFG) を復元し、推論関数と DNN 演算子の位置を決定します。第 2 段階では、DnD は各 DNN 演算子の演算子ダイジェストを生成します
この目的のために、DND はまずサイクル分析を実行して、サイクルの情報を特定します。次に、DnD はループの情報を選択的シンボリック実行に利用し、DNN 演算子の出力をその入力とパラメーターのシンボリック式として抽出します。抽出されたシンボリック式は、IR 形式の演算子要約にプロモートされ、第
3 段階では、各演算子要約を DNN 演算子にプロモートし、高レベルの DNN 表現に変換します。具体的には、DnD はまず、各オペレーター ダイジェスト内の AST をテンプレート AST と照合して、その DNN オペレーターのタイプを決定します。次に、DND は、DNN オペレーター間のデータの依存関係を特定して DNN トポロジを回復します。最後に、DND は各 DNN の属性とパラメーターを復元します。識別された DNN オペレーターのタイプとトポロジーに従ってオペレーターを決定し、完全に復元された DNN モデルを ONNX モデルに変換します。

DNN オペレーターの位置特定

DNN 演算子は本質的にテンソル計算であるため、いくつかの数値計算を含む複数の入れ子になったループとして実装およびコンパイルされます。さらに、DNN 演算子は推論関数または呼び出される関数のいずれかに配置されます。DND は、これら 2 つのプロパティを利用して、DNN 演算子と推論関数の場所を特定します。

演算子の概要の生成

DNN 演算子の場所を特定した後、DND は各 DNN 演算子からシンボリック式を抽出し、演算子ダイジェストに昇格します。

  • ループ分析: ループ分析の主な目的は、DNN 演算子の基本的な誘導変数 (誘導変数、IV)、つまり各ループの非公式のループ インデックス変数に関する情報を特定することです。図 3b に示すように、i、j、u、v は IV です。分析の出力には、IV、その初期値、ステップ サイズ (つまり、増分定数)、およびループ数 (つまり、ループを繰り返す回数) が含まれます。
    ここに画像の説明を挿入
    ここに画像の説明を挿入

  • シンボリック式の抽出: DNN オペレーターは通常、テンソル計算を実行し、入力とパラメーターを取得し、計算された出力を生成して、後続の DNN オペレーターに入力として渡します。したがって、DNN 演算子の出力を、演算子の入力合計と演算子パラメーターのシンボリック式として表すことができます。このようなシンボリック式を抽出するために、DnD は、IV をシンボリック変数として使用してカスタムの選択的シンボリック実行を実行します。
    ここに画像の説明を挿入

  • IR 設計: DNN 演算子の抽出されたシンボリック式は、テンソル計算に抽象化できます。抽出されたシンボリック式とは異なり、この IR は、DNN 最適化バイナリの演算子の型表現と演算子の引数の回復に適しています。
    ここに画像の説明を挿入

  • 演算子サマリーリフティング: DnD は、各 DNN 演算子の抽出されたシンボリック式を、設計された IR の演算子サマリーにリフトします。各演算子の概要には、addr、expr、および IVs の 3 つの部分が含まれます。これらは、DNN 演算子によって出力されるシンボリック アドレス、DNN 演算子によって出力される抽象構文ツリー (AST)、および IV 情報 (つまり、初期化値、ステップ サイズ、およびサイクル数) 。
    ここに画像の説明を挿入

テンプレート AST の生成

DNN オペレーターのテンプレート AST を生成するには、まず各 ONNX オペレーターの使用例を使用して、ONNX 形式でオペレーター インスタンスを手動で構築します [11]。次に、DND は、DNN コンパイラを使用して、この ONNX オペレータ インスタンスをバイナリにコンパイルします。最後に、DND は同じオペレーター ダイジェスト生成プロセスを使用して、expr をテンプレート AST としてコンパイルされたバイナリからオペレーター ダイジェストを生成します。

DNN モデルのリフティング

DnD は、まず AST マッチングを使用して DNN 演算子の型を回復します。次に、DnD は相互オペレータ データの依存関係を利用して DNN トポロジを回復します。最後に、DnD は DNN オペレーター タイプと DNN トポロジを組み合わせて DNN オペレーターの属性とパラメーターを復元し、完全に復元されたモデルを ONNX 形式に変換します。

(1) AST マッチングは
幅優先検索 (BFS) を実行し、DNN オペレーターの AST とテンプレート AST が同じツリー構造を持ち、2 つの AST が各ノードで同じ数学関数を持つかどうかをチェックします。 2 つの式の等価性を判断する式リデューサーの間

(2) DNN トポロジ復元
DND は、推論機能における DNN オペレータの実行順序と各 DNN オペレータ間のデータ依存関係を利用して DNN トポロジを復元します。

(3) 属性とパラメータの回復
DND は、生成されたオペレータ ダイジェストと回復された DNN トポロジを使用して、各 DNN オペレータの属性とパラメータを回復し、ONNX 形式で高レベルの DNN 表現を生成します。
形状関連の属性 (AveragePool のフィルター長など) のみを持つ DNN 演算子の場合、DnD はループの入れ子構造とループ数をチェックします (フィルターの長さは、入力を反復するループのループ数です)。それらのプロパティを復元します。
パラメータの場合、DnD は復元された IV 範囲を使用してパラメータ項目を特定のアドレスに実体化し、これらの特定のアドレスからパラメータを抽出します。

実験

主な実験は 2 つあります
。 1. 一般的に使用される DNN 演算子とモデルがいくつサポートされているかを示し、DND の多用途性を示します。
2. さまざまな DNN コンパイラ、ISA、DNN モデルにおける DND の正しさを実証します。元の DNN モデルと対応する逆コンパイルされた DNN モデルを比較して、モデル アーキテクチャの同等性、つまり、比較されたモデルが同じ DNN 演算子とトポロジを持ち、それらの推論結果の同等性 (つまり、同じ入力が与えられた場合) を検証します。どちらのモデルも同じラベルを出力します)。

一般性の評価

DnD の汎用性は、DnD がサポートできる広く使用されている DNN モデルの数を評価することで評価されます。DNN で使用されるすべての演算子が DnD でサポートされている場合、DNN はサポートされているとみなされます。この目的を達成するために、DnD がテンプレート AST を作成できる DNN オペレーターの数を評価します。

ここに画像の説明を挿入

逆コンパイルの正確性評価

以前のモデル抽出攻撃 [58、61] に従って、MNIST [59] と ResNet v1 [20] を 2 つのテスト DNN モデルとして使用します。また、モバイルおよび組み込みシステム向けに設計された DNN モデルである MobileNets v2 [40] も含まれています。その統計を表 1 に示します。
ここに画像の説明を挿入

逆コンパイルされたモデルと元のモデルの間で、モデルのアーキテクチャの同等性がテストされました。生成された 15 個の逆コンパイルされた DNN モデルは、対応する元の DNN モデルのニューラル ネットワーク構造 (つまり、ネットワーク トポロジ、オペレーターの数、および各オペレーターのタイプ) と比較されました。逆コンパイルされた 15 個の DNN モデルはすべて、対応する元のモデルと同一です。図 6 は、元の ResNet v1 モデルと、DNN バイナリから逆コンパイルされた ResNet v1 モデル (Glow および Arm Thumb ISA でコンパイルされた) の例を示しています。
ここに画像の説明を挿入

表 2 は、10,000 個のテスト入力を使用した、逆コンパイルされたモデルと元のモデルの間の推論の等価性に関する結果をまとめたものです。示されているように、すべてのサンプルについて、逆コンパイルされた DNN モデルと元の DNN モデルの推論結果はまったく同じです。
ここに画像の説明を挿入

要約する

関連事業

[9] Linux財団。オンNX。https://onnx.ai/。
[11] Linux財団。ONNX オペレーター。https://github.com/onnx/onnx/blob/master/docs/Operators.md。
[20] 何開明、張祥宇、任少清、孫建。画像認識のための深層残差学習。
コンピューター ビジョンとパターン認識に関する IEEE 会議議事録、2016 年。[
40] Mark Sandler、Andrew Howard、Menglong Zhu、Andrey Zhmoginov、Liang-Chieh Chen。Mobilenetv2: 逆転した残差と線形ボトルネック。
コンピューター ビジョンとパターン認識に関する IEEE 会議議事録、2018 年
。[59] Corinna Cortes Yann LeCun および Chris Burges。Mnist 手書き数字データベース。http://yann.lecun.com/exdb/mnist/。

おすすめ

転載: blog.csdn.net/qq_33976344/article/details/128036287
おすすめ