Obfuskation (kryptografisch)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Bei der kryptografischen Obfuskation geht es um die Verschleierung dessen, was ein Programm tut, und darum, es gegen automatische Analyse zu schützen. Dadurch können zwar Ein- und Ausgaben beobachtet werden, aber die Art der Berechnung bleibt auch einer tieferen Analyse verborgen. Im Vergleich zur Software-Obfuskation stellt die kryptografische Obfuskation eine stärkere Methode dar.

Hintergrund und Motivation[Bearbeiten | Quelltext bearbeiten]

Bei der Obfuskation mittels Software geht es darum, den Programmablauf so zu verschleiern, dass Reverse Engineering und damit Produktpiraterie erschwert wird, um Know-how zu schützen. In der Vergangenheit wurden allerdings zahlreiche Werkzeuge zum Reverse Engineering entwickelt, wie beispielsweise das kostenfreie Ghidra der NSA[1].

Die Hoffnung auf bessere Methoden, als die Software-Obfuskation bietet, begründet sich in dem von Alan Turing (1912–1954) vorgelegten Beweis des Halteproblems. Danach kann ein Programm durch Analyse des Quellcodes eines anderen Programms nicht immer entscheiden, ob das andere Programm anhält oder unbegrenzt weiterläuft. Nachdem lange an dieser Möglichkeit der Obfuskation gezweifelt wurde, gelang es den Forschern Gentry, Halevi, Raykova, Sahai und Waters im Jahr 2013, einen Obfuskator vorzustellen, der für beliebige Funktionen erlaubt, deren Arbeitsweise zu verschleiern.

Anwendung[Bearbeiten | Quelltext bearbeiten]

Mit der kryptografischen Obfuskation ist es möglich, Algorithmen so zu verschleiern, dass Eingabe und Ausgabe analysiert werden können, der Code dazwischen aber undurchsichtig bleibt, auch wenn der Nutzer Zugriff auf den Programmcode hat.

Beispiel[Bearbeiten | Quelltext bearbeiten]

Ein Programm soll ein Passwort im Code speichern („hartcodiertes Passwort“) und eine Eingabe mit dem Passwort vergleichen, um einen Zugriff zu erlauben. Dazu wird eine Eingabe mit dem programmierten Passwort verglichen. Wird das Passwort im Klartext gespeichert, so ist es bei der Analyse des Codes leicht zu finden.

Der kryptografischen Obfuskation entspricht dagegen folgendes Vorgehen: Aus dem richtigen Passwort wird ein kryptografischer Hash-Wert gebildet und hartcodiert. Die Eingabe wird vor dem Vergleich mit dem gleichen Hash-Verfahren in einen Hash-Wert verwandelt und mit dem hartcodierten Hash des Passwortes verglichen. So ist das hartcodierte Passwort nicht erkennbar und lässt sich durch die Falltürfunktion des Hash-Wertes auch nicht rekonstruieren.[2]

Abgrenzung: Unabhängig von der kryptografischen Obfuskation bietet auch eine homomorphe Verschlüsselung die Möglichkeit, Daten im Programmablauf zu schützen. In diesem Fall werden Berechnungen (z. B. Grundrechenarten) auf verschlüsselten Daten ausgeführt, und nach der Entschlüsselung erscheint das gleiche Ergebnis, als wenn die Berechnungen normal mit unverschlüsselten Daten ausgeführt worden wären.

Literatur[Bearbeiten | Quelltext bearbeiten]

  • Máté Horváth, Levente Buttyán: Cryptographic Obfuscation. Springer Nature, Switzerland 2020, ISBN 978-3-319-98040-9 (englisch).
  • Christian Matt: Der Heilige Gral der Informatik. In: Spektrum der Wissenschaft. Nr. 2021-12-01. Spektrum der Wissenschaft Verlagsgesellschaft mbH, ISSN 0170-2971, S. 70–77 (Spektrum Artikel 1937242).
  • Maria Buling: Obfuskation in der Kryptographie. (PDF) 1. Dezember 2016, abgerufen am 27. Februar 2022 (deutsch, Masterarbeit am Institut für Theoretische Informatik der Leibniz Universität Hannover).

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Lutz Erfert: Inspektor Software. In: c't. Nr. 14/2020. Heise-Verlag, 2020, ISSN 0724-8679, S. 76 (ct.de).
  2. Matthew Green: Cryptographic obfuscation and ‘unhackable’ software. 21. Februar 2014, abgerufen am 27. Februar 2022 (englisch).