[Paper Sharing] DnD: Ein architekturübergreifender Deep Neural Network Decompiler

DnD: Ein architekturübergreifender Deep Neural Network Decompiler [USENIX 2022]

Ruoyu Wu Purdue University
Taegyu Kim Die Pennsylvania State University
Dave (Jing) Tian Purdue University
Antonio Bianchi Purdue University
Dongyan Xu Purdue University

Die Anwendung von Deep Neural Network (DNN) hat in den letzten Jahren stetig zugenommen, insbesondere auf Edge-Geräten, wo spezielle DNN-Compiler zum Kompilieren von DNN in Binärdateien verwendet werden. Wenn auf DNN-Modelle zugegriffen werden kann, sind viele Sicherheitsanwendungsszenarien (z. B. die Extraktion von DNN-Modellen) möglich , White-Box-Adversarial-Sample-Generierung und DNN-Modell-Patching und -Härtung) sind alle möglich. Diese Techniken können jedoch nicht auf kompilierte DNNs angewendet werden. Leider gibt es keinen dedizierten Dekompiler, der die High-Level-Darstellung wiederherstellen kann. Um dieses Problem zu
lösen Wir schlagen DnD vor, den ersten und ISA-unabhängigen DNN-Dekompiler. DnD verwendet symbolische Ausführung in Kombination mit dedizierter Schleifenanalyse, um den analysierten Binärcode in eine neue Zwischendarstellung zu überführen, die in der Lage ist, die mathematischen Operationen von DNNs auf hoher Ebene in a darzustellen Compiler- und ISA-unabhängig. DnD gleicht dann die extrahierten mathematischen DNN-Operationen mit den mathematischen DNN-Vorlagenoperationen ab und stellt die Hyperparameter und Parameter aller identifizierten DNN-Operatoren sowie die gesamte DNN-Topologie wieder her. Unsere Auswertung zeigt, dass DnD eine perfekte Wiederherstellung durchführen kann verschiedene DNN-Modelle, extrahiert aus Binärdateien, die von zwei verschiedenen Compilern (Glow und TVM) für drei verschiedene ISAs (Thumb, AArch64 und x86-64) kompiliert wurden. Darüber hinaus ist DnD in der Lage, DNN-Modelle zu extrahieren, die von realen Mikrocontrollern verwendet werden, und sie anzugreifen Verwendung von White-Box-Techniken des kontradiktorischen maschinellen Lernens.

Mit einem Wort: DnD: Dekompilieren von DNN-Modellbinärdateien mithilfe symbolischer Ausführung und spezieller Schleifenanalysetechniken

Mit anderen Worten: „Schaffen Sie den Präzedenzfall für umgekehrte KI“

Einführung

DNN-Compiler werden zunehmend in Edge-Geräten wie Mikrocontrollern und Mobiltelefonen eingesetzt. Beispielsweise verwenden Mikrocontroller kompilierte DNN-Binärdateien, um verschiedene Aufgaben wie sichere Gesichtserkennung, Spracherkennung und Sprachsteuerung auszuführen. Eine aktuelle Prognose geht davon aus, dass bis 2025 98 % der Edge-Geräte über intelligente Funktionen verfügen werden, die häufig von DNNs unterstützt werden.
Das Extrahieren von DNN-Modellen aus kompiliertem Binärcode ermöglicht verschiedene Sicherheitsanwendungen, einschließlich der Extraktion und Analyse von DNN-Modellen (manuell und automatisch), der Generierung gegnerischer White-Box-Beispiele, der Erkennung von White-Box-DNN-Hintertüren sowie des Patchens und Härtens von DNN-Modellen. Leider hilft in all diesen Nutzungsszenarien die Darstellung des dekompilierten Codes auf Quellenebene, die durch die Anwendung eines herkömmlichen Dekompilers erhalten wird, den Analysten nicht viel, da ein solcher Dekompiler die mathematische Semantik des kompilierten DNN-Modells nicht erfassen kann.
In diesem Artikel wird DnD vorgestellt , der erste Compiler- und Befehlssatz-unabhängige Dekompilierer für tiefe neuronale Netze, der DNN-Modelle aus kompilierten Binärdateien extrahieren kann. Insbesondere kann DnD bei der Verarbeitung eines kompilierten DNN-Modells dessen Parameter, Hyperparameter und Topologie präzise wiederherstellen und das dekompilierte Modell als eine in der ONNX-Modellierungssprache [9] codierte Darstellung auf hoher Ebene darstellen (z. B. Abbildung 1).

Fügen Sie hier eine Bildbeschreibung ein

DND basiert auf den folgenden drei neuen Technologien. Erstens kombiniert es symbolische Ausführung mit dedizierter Schleifenanalyse, um präzise mathematische Formulierungen zu erfassen, die darstellen, wie verschiedene DNN-Operatoren eingehende Daten verarbeiten. Zweitens verwendet DND eine neuartige Zwischendarstellung (IR), um mathematische DNN-Operationen auf hoher Ebene auf Compiler- und ISA-unabhängige Weise darzustellen. Schließlich werden der Typ und die Position der DNN-Operationen in der Zielbinärdatei sowie die Topologie des gesamten Netzwerks identifiziert, indem die extrahierten mathematischen Operationen mit den mathematischen DNN-Vorlagenoperationen abgeglichen werden und Hyperparameter und Parameter aller identifizierten DNN-Operationen wiederhergestellt werden.

Experimentelle Ergebnisse zeigen, dass DnD vielseitig und genau ist. Es unterstützt die Dekompilierung verschiedener DNN-Modelle, die von zwei verschiedenen Compilern für drei verschiedene ISAs kompiliert wurden, ohne menschlichen Aufwand. Darüber hinaus entspricht das dekompilierte DNN-Modell strukturell dem ursprünglichen DNN-Modell, und die nach der Neukompilierung generierten Binärdateien klassifizieren Proben genau wie die ursprünglichen Binärdateien. Das wiederhergestellte DNN-Modell zeigt weiter, dass DnD DNN-Binärdateien, die von realen Mikrocontrollern verwendet werden, erfolgreich dekompilieren kann, und kann zur Verbesserung gegnerischer Angriffe auf das ursprüngliche DNN verwendet werden, wodurch White-Box-Angriffe statt weniger effizienter Black-Box-Angriffe ermöglicht werden.

Beiträge
(1) entwarfen und implementierten DND, den ersten Compiler- und isa-unabhängigen Dekompiler für DNN-Modelle. DND kann DNN-Binärdateien dekompilieren (stripping), um die vollständigen Details kompilierter DNN-Modelle wiederherzustellen und sie mithilfe der höheren Modellierungssprache ONNX darzustellen.
(2) Entwerfen Sie eine dedizierte IR, um jeden DNN-Operator darzustellen, und entwickeln Sie eine neue Technik, um den binären DNN-Ausdruck mithilfe symbolischer Ausführung in den IR-Ausdruck umzuwandeln. Die extrahierten IR-Ausdrücke werden dann mit Vorlagenausdrücken abgeglichen, um die verschiedenen vom kompilierten DNN verwendeten Operatoren zu identifizieren und seine Hyperparameter, Parameter und die gesamte Netzwerktopologie wiederherzustellen.
(3) Auf drei ISAs (Thumb, AArch64 und x86-64), zwei DNN-Compilern (Glow und TVM) und drei weit verbreiteten DNN-Modellen (MNIST[59], ResNet v1[20] und MobileNets v2[40]) ausgewertet DND. Experimentelle Ergebnisse zeigen, dass DND in der Lage ist, DNN-Modelle aus kompilierten Binärdateien verschiedener ISAs, Compiler und Modelle vollständig und genau wiederherzustellen.

planen

Annahmen

DnD basiert auf den folgenden Annahmen:
(1) Wir haben Zugriff auf DNN-Binärdateien.
(2) Die Wiederherstellung des Kontrollflussdiagramms (CFG) ist zuverlässig.
(3) DNN-Compiler verwenden keine Verschleierungstechniken. Tatsächlich gibt es keine Forschung zur Verschleierung von DNN-Modellen

Herausforderungen

Die binäre DNN-Dekompilierung stellt im Vergleich zur binären C/C++-Dekompilierung mehrere einzigartige Herausforderungen dar.

Herausforderung 1: Verschiedene Compiler und Architekturen
DNN-Modelle werden mit verschiedenen DNN-Compilern auf verschiedene Befehlssatzarchitekturen (ISAs) wie Arm Thumb, Arm AArch64 und x86-64 kompiliert. Der von jeder Kombination erzeugte Kontrollfluss und Datenfluss ist völlig unterschiedlich, sodass ein einfacher Mustervergleich, unabhängig davon, ob Binärcode oder von einem Allzweck-Decompiler generierter dekompilierter Code verwendet wird, nicht für allgemeine Zwecke geeignet ist und unabhängig vom Compiler und Codetyp ist. Stellen Sie die Hyperparameter des DNN-Modells wieder her.
Lösung: Verwenden Sie eine dedizierte IR, die jeden DNN-Operator als Operator-Digest darstellen kann, einschließlich eines AST algebraischer Operationen. Da DNN-Operatoren auch in verschiedenen DNN-Compilern und ISAs die gleiche mathematische Semantik haben und IR- und Operator-Digests die mathematische Semantik erfassen können, kann DnD sie auf Compiler- und ISA-unabhängige Weise erkennen.

Herausforderung 2: Vektorisierte mathematische Berechnungen und komplexe Schleifenstruktur
Als Tensoroperationen werden DNN-Operatoren immer als verschachtelte Schleifen mit vektorisierten mathematischen Berechnungen im Schleifenkörper implementiert und kompiliert. Darüber hinaus können der komplexe Kontrollfluss verschachtelter Schleifen und der große Schleifenindexbereich zum Problem der Pfadexplosion führen, das die Verwendung symbolischer Ausführung zum Generieren der Operatorzusammenfassung jedes DNN-Operators verhindert und diese symbolische Einschränkung auf einen Operator
aufhebt in IR ausgedrückter Digest, der eine dedizierte symbolische Ausführung verwendet, um die Semantik vektorisierter mathematischer Berechnungen zu erfassen.

Herausforderung 3: Skalierbare Unterstützung für DNN-Operatoren
Das tatsächliche Modell wird viele verschiedene DNN-Operatoren haben. Daher ist das manuelle Entwerfen eines heuristischen Algorithmus für jeden DNN-Operator zur Identifizierung seines DNN-Operatortyps und zum Extrahieren seiner Parameter nicht skalierbar.
Lösung: Für einen unbekannten DNN-Operator gleichen wir den in seinem generierten Operator-Digest enthaltenen AST mit der Operator-Vorlage AST ab, um seinen Operatortyp zu identifizieren. DND erstellt zunächst eine Vorlagen-AST-Bibliothek, ordnet jeden DNN-Operator dem entsprechenden AST zu, verwendet dann den neuesten DNN-Compiler, um jeden DNN-Operator zu kompilieren, generiert den Vorlagen-AST jedes kompilierten DNN-Operators und drückt ihn durch die entworfene IR aus. Anschließend gleicht DND anhand eines zuvor generierten Operations-Digests für einen unbekannten DNN-Operator seinen AST mit einem in der AST-Vorlagendatenbank ab und bestimmt den Typ des unbekannten DNN-Operators.

Designs

Der Workflow von DND besteht aus drei Komponenten, wie in Abbildung 2 dargestellt. Im Einzelnen handelt es sich bei diesen drei Teilen um (1) Erkennung der DNN-Bedienerposition, (2) Erstellung einer Bedienerzusammenfassung und (3) Verbesserung des DNN-Modells
Fügen Sie hier eine Bildbeschreibung ein

In der ersten Stufe stellt DnD den Kontrollflussgraphen (CFG) aus der eingegebenen (abgeschnittenen) DNN-Binärdatei wieder her und bestimmt die Positionen von Inferenzfunktionen und DNN-Operatoren. In der zweiten Stufe generiert DnD einen Operator-Digest für jeden DNN-Operator
. Zu diesem Zweck führt DND zunächst eine Zyklusanalyse durch, um die Informationen des Zyklus zu ermitteln. Anschließend nutzt DnD die Informationen der Schleife zur selektiven symbolischen Ausführung und extrahiert die Ausgaben der DNN-Operatoren als symbolische Ausdrücke für seine Eingaben und Parameter. Die extrahierten symbolischen Ausdrücke werden dann zu Operatorzusammenfassungen in unserem IR-Format hochgestuft. Die
dritte Stufe besteht darin, jede Operatorzusammenfassung zu DNN-Operatoren hochzustufen und sie in DNN-Darstellungen auf hoher Ebene umzuwandeln. Insbesondere gleicht DnD zunächst den AST in jedem Operator-Digest mit dem Vorlagen-AST ab, um den Typ seines DNN-Operators zu bestimmen. Anschließend stellt DND die DNN-Topologie wieder her, indem er die Datenabhängigkeiten zwischen DNN-Operatoren identifiziert. Schließlich stellt DND die Attribute und Parameter jedes DNN wieder her Operator entsprechend dem identifizierten DNN-Operatortyp und der Topologie und wandelt das vollständig wiederhergestellte DNN-Modell in ein ONNX-Modell um.

Standortidentifizierung des DNN-Betreibers

Da es sich bei DNN-Operatoren im Wesentlichen um Tensorberechnungen handelt, werden sie als mehrere verschachtelte Schleifen implementiert und kompiliert, die einige numerische Berechnungen enthalten. Darüber hinaus befinden sich DNN-Operatoren entweder in der Inferenzfunktion oder in der aufgerufenen Funktion. DND nutzt diese beiden Eigenschaften, um den Standort von DNN-Operatoren und Inferenzfunktionen zu identifizieren

Erstellung einer Operator-Zusammenfassung

Nachdem die Standorte der DNN-Operatoren identifiziert wurden, extrahiert DND symbolische Ausdrücke aus jedem DNN-Operator und befördert sie zu Operator-Digests.

  • Schleifenanalyse: Das Hauptziel der Schleifenanalyse besteht darin, Informationen über grundlegende Induktionsvariablen (Induktionsvariablen, IVs) in DNN-Operatoren zu identifizieren, d. h. informelle Schleifenindexvariablen für jede Schleife. Wie in Abbildung 3b gezeigt, sind i, j, u, v IV. Die Ausgabe der Analyse umfasst die IVs, ihre Anfangswerte, die Schrittgröße (d. h. die Inkrementkonstante) und die Schleifenanzahl (d. h. wie viele Iterationen die Schleife wiederholen sollte).
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein

  • Extraktion symbolischer Ausdrücke: DNN-Operatoren führen normalerweise Tensorberechnungen durch, nehmen ihre Eingaben und Parameter, generieren berechnete Ausgaben und übergeben sie als Eingaben an nachfolgende DNN-Operatoren. Daher können wir die Ausgabe eines DNN-Operators als symbolischen Ausdruck der Eingabesumme und der Operatorparameter des Operators darstellen. Um einen solchen symbolischen Ausdruck zu extrahieren, führt DnD eine benutzerdefinierte selektive symbolische Ausführung unter Verwendung von IVs als symbolischen Variablen durch
    Fügen Sie hier eine Bildbeschreibung ein

  • IR-Design: Die extrahierten symbolischen Ausdrücke von DNN-Operatoren können in Tensorberechnungen abstrahiert werden. Im Gegensatz zu extrahierten symbolischen Ausdrücken eignet sich diese IR für die Darstellung von Operatortypen und die Wiederherstellung von Operatorargumenten für DNN-optimierte Binärdateien
    Fügen Sie hier eine Bildbeschreibung ein

  • Lifting der Operatorzusammenfassung: DnD hebt den extrahierten symbolischen Ausdruck jedes DNN-Operators in eine Operatorzusammenfassung in unserem entworfenen IR. Jede Operatorzusammenfassung enthält drei Teile: addr, expr und IVs, die die vom DNN-Operator ausgegebene symbolische Adresse, den vom DNN-Operator ausgegebenen abstrakten Syntaxbaum (AST) und IVs-Informationen (d. h. Initialisierungswert, Schrittgröße, und Anzahl der Zyklen).
    Fügen Sie hier eine Bildbeschreibung ein

Generierung von Vorlagen-ASTs

Um Vorlagen-ASTs für DNN-Operatoren zu generieren, erstellen wir zunächst manuell eine Operatorinstanz im ONNX-Format unter Verwendung von Anwendungsbeispielen für jeden ONNX-Operator [11]. DND kompiliert dann diese ONNX-Operatorinstanz mithilfe des DNN-Compilers in eine Binärdatei. Schließlich verwendet DND denselben Operator-Digest-Generierungsprozess, um Operator-Digests aus kompilierten Binärdateien mit expr als Vorlage AST zu generieren.

DNN-Modelllifting

DnD stellt zunächst mithilfe des AST-Matchings die Typen der DNN-Operatoren wieder her. Anschließend nutzt DnD die Datenabhängigkeiten zwischen den Operatoren, um die DNN-Topologie wiederherzustellen. Schließlich kombiniert DnD den DNN-Operatortyp und die DNN-Topologie, um die Attribute und Parameter des DNN-Operators wiederherzustellen, und konvertiert das vollständig wiederhergestellte Modell in das ONNX-Format

(1) Der AST-Abgleich
führt eine Breitensuche (BFS) durch und prüft, ob der AST des DNN-Operators und der Vorlagen-AST dieselbe Baumstruktur haben und ob die beiden ASTs in jedem Knoten dieselbe mathematische Funktion haben. Angr wird verwendet Während des Ausdrucksreduzierers wird die Äquivalenz zweier Ausdrücke beurteilt

(2) Wiederherstellung der DNN-Topologie
DND stellt die DNN-Topologie wieder her, indem die Ausführungsreihenfolge der DNN-Operatoren in der Inferenzfunktion und die Datenabhängigkeiten zwischen den einzelnen DNN-Operatoren verwendet werden

(3) Wiederherstellung von Attributen und Parametern
DND verwendet den generierten Operator-Digest und die wiederhergestellte DNN-Topologie, um die Attribute und Parameter jedes DNN-Operators wiederherzustellen, und generiert dann eine DNN-Darstellung auf hoher Ebene im ONNX-Format.
Bei DNN-Operatoren mit nur formbezogenen Attributen (z. B. Filterlänge von AveragePool) überprüft DnD die Verschachtelungsstruktur ihrer Schleifen und die Anzahl der Schleifen (z. B. ist die Filterlänge die Schleifenanzahl einer Schleife, die über die Eingabe iteriert). ihre Eigenschaften wiederherstellen.
Für Parameter verwendet DnD den wiederhergestellten IV-Bereich, um Parameterelemente in bestimmten Adressen zu materialisieren, und extrahiert dann Parameter aus diesen bestimmten Adressen.

Experiment

Es gibt zwei Hauptexperimente:
1. Zeigen Sie, wie viele häufig verwendete DNN-Operatoren und -Modelle unterstützt werden, und demonstrieren Sie so die Vielseitigkeit von DND.
2. Demonstrieren Sie die Korrektheit von DND in verschiedenen DNN-Compilern, ISAs und DNN-Modellen. Vergleichen Sie das ursprüngliche DNN-Modell mit dem entsprechenden dekompilierten DNN-Modell, um die Äquivalenz der Modellarchitektur zu überprüfen, d. beide Modelle geben das gleiche Etikett aus).

Allgemeingültigkeitsbewertung

Die Allgemeingültigkeit von DnD wird bewertet, indem bewertet wird, wie viele weit verbreitete DNN-Modelle DnD unterstützen kann. Ein DNN gilt als unterstützt, wenn alle vom DNN verwendeten Operatoren von DnD unterstützt werden. Zu diesem Zweck bewerten wir, für wie viele DNN-Operatoren DnD eine AST-Vorlage erstellen kann.

Fügen Sie hier eine Bildbeschreibung ein

Bewertung der Dekompilierungskorrektheit

In Übereinstimmung mit früheren Modellextraktionsangriffen [58, 61] verwenden wir MNIST [59] und ResNet v1 [20] als unsere beiden Test-DNN-Modelle. Wir schließen auch MobileNets v2 [40] ein, ein DNN-Modell, das für mobile und eingebettete Systeme entwickelt wurde. Wir zeigen seine Statistiken in Tabelle 1.
Fügen Sie hier eine Bildbeschreibung ein

Die Äquivalenz der Modellarchitektur wurde zwischen dem dekompilierten Modell und dem Originalmodell getestet. Die generierten 15 dekompilierten DNN-Modelle wurden mit den neuronalen Netzwerkstrukturen (d. h. Netzwerktopologie, Anzahl der Operatoren und jedem Operatortyp) der entsprechenden ursprünglichen DNN-Modelle verglichen. Alle 15 dekompilierten DNN-Modelle sind identisch mit den entsprechenden Originalmodellen. Abbildung 6 zeigt ein Beispiel des ursprünglichen ResNet v1-Modells und eines aus einer DNN-Binärdatei dekompilierten ResNet v1-Modells (kompiliert mit Glow and Arm Thumb ISA).
Fügen Sie hier eine Bildbeschreibung ein

Tabelle 2 fasst die Ergebnisse zur Inferenzäquivalenz zwischen dem dekompilierten Modell und dem Originalmodell unter Verwendung von 10.000 Testeingaben zusammen. Wie gezeigt, sind die Inferenzergebnisse des dekompilierten DNN-Modells und des ursprünglichen DNN-Modells für alle Proben genau gleich.
Fügen Sie hier eine Bildbeschreibung ein

Zusammenfassen

Verwandte Werke

[9] Linux Foundation. ONNX. https://onnx.ai/.
[11] Linux Foundation. ONNX-Betreiber. https://github.com/onnx/onnx/blob/master/docs/Operators.md.
[20] Kaiming He, Xiangyu Zhang, Shaoqing Ren und Jian Sun. Tiefes Restlernen für die Bilderkennung. In
Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016.
[40] Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov und Liang-Chieh Chen. Mobilenetv2: Invertierte Residuen und lineare Engpässe. In Proceedings of the IEEE Conference on Computer Vision and Pattern
Recognition, 2018.
[59] Corinna Cortes Yann LeCun und Chris Burges. Handschriftliche Zifferndatenbank von Mnist. http://yann.lecun.com/exdb/mnist/.

Supongo que te gusta

Origin blog.csdn.net/qq_33976344/article/details/128036287
Recomendado
Clasificación