Ansichten eines Informatikers

IT-Sicherheit: Sind denn die Probleme lösbar?

Hadmut
14.9.2023 14:14

Leser fragen – Danisch antwortet.

Ein Leser fragt an:

Frage zu C, C++ und Java

Da muss ich ja mal fragen Hadmut, Du schreibst: Dass ich keinen Spaß mehr an IT-Security habe, weil die Probleme eigentlich immer noch dieselben sind wie damals, als ich vor fast 35 Jahren (so ungefähr um 1989) damit angefangen habe.“

Sind die Probleme denn überhaupt lösbar, d. h. Gibt es eine technisch bekannte Ursache für die Probleme, oder sind die prinzipiell überhaupt nicht lösbar, weil das Programmieren, egal in welcher Sprache, nicht widerspruchsfrei zu haben ist.

Ich erinnere: https://de.wikipedia.org/wiki/P_(Komplexit%C3%A4tsklasse)

Theoretisch

Da muss ich jetzt erst einmal etwas Theorie daherfaseln, auch wenn das dann fast keiner versteht, um nicht falsch zu antworten.

Wenn man es rein theoretisch betrachtet, müsste ich antworten, dass die Frage nicht beantwortbar ist, weil man erst einmal definieren müsste, was „Sicherheit“ überhaupt ist, und auf welches Maschinenmodell sich die Frage überhaupt bezieht.

Es gibt Sicherheitsanforderungen, die sich gegenseitig ausschließen. Beweisbarkeit und Unbeweisbarkeit.

Es gibt auch Sicherheitsprobleme, die grundsätzlich nicht lösbar sind. Ich habe das damals auch in Vorlesungen erläutert, dass Kryptographie, als Sicherheitstechnik vom Gebrauch der Geheimnisse, niemals ein Problem löst, sondern immer nur ein Problem in ein anderes transformiert, und mit jeder Problemlösung ein neues, hoffentlich kleineres oder leichteres Problem übrig bleibt, das man hoffentlich mit anderen Methoden leichter handhaben kann. Beispiel: Wenn ich eine Datei verschlüsselt übertrage, ist das schön. Aber das neue Problem ist, den Schlüssel dazu sicher zu übertragen. Was aber leichter ist, weil er nicht nur kleiner ist, sondern auch vorab vereinbart werden kann, etwa bei persönlichem Zusammentreffen. Man kann aber weiter transformieren, indem man Public-Key-Kryptographie hinzufügt. Auch schön. Erzeugt aber das neue, wiederum leichtere Problem, den Public Key des anderen verlässlich zu erhalten. Wieder ein neues Problem, wieder ein leichteres. Und so weiter. Wer meint, mit Kryptographie ein Problem zu lösen, hat was falsch gemacht, denn am Ende bleibt immer irgendwas übrig, was man anders lösen muss.

Es gibt in der Informatik, und das nicht speziell in der Sicherheit, sondern generell in der Algorithmentechnik, die Erkenntnis, dass grundsätzlich nicht alles zu lösen ist. Stichwort: Halteproblem. Es gibt Probleme, die nicht entscheidbar sind.

Und dann gibt es Fragen, die generell noch nicht durchverstanden sind, Problemklassen wie P=NP.

Und es gibt Probleme, die zwar theoretisch lösbar und verstanden, aber nicht mit der zur Verfügung stehenden Rechenleistung zu lösen sind. Bei denen dann einfach die Komplexität zuschlägt. Beispiel: Brute Force-Attacken auf Schlüssel.

Und dann gibt es die Sache mit den Maschinenmodellen, weil ich alles immer nur auf das zugrundegelegte Maschinenmodell bezieht. Das eine kann mehr, das andere weniger. Und dann kommt einer mit dem Quantencomputer daher, ganz anderes Maschinenmodell.

Aus der Theorie her ist die Frage deshalb eher mit Nein zu beantworten, gibt es keine Sicherheit im Sinne eines lösbaren Problems.

Das sind Sachen, die man im Informatikstudium lernt, und wegen ihrer theoretischen Natur eigentlich nie wieder konkret braucht, die man aber doch immer wieder anwendet, um das Verständnis zu haben oder seine Grenzen zu kennen. Oder manchen Unfug einfach bleiben zu lassen.

Eine Menge „Quereinsteiger“, „Coder“ und „Jeder-kann-Programmieren-Überzeugte“ schreiben Dinge, von denen sie dann sehr begeistert sind, weil die beim Ausprobieren dann so schön laufen, und hinterher wundert man sich dann, dass irgendwas im praktischen Gebrauch zusammenbricht, weil die nicht verstanden oder gar nicht erst bedacht haben, dass der Algorithmus, den sie da zusammenkneten, quadratischen Aufwand hat und ihnen das dann um die Ohren fliegt.

Es ist an sich kein spezifisches Problem der IT-Sicherheit. Man kann einfach nicht alle Probleme algorithmisch und maschinell lösen. Aber es ist sehr schwer und anspruchsvoll, das zu verstehen und die Grenzen zu sehen. Da muss man sich eine Weile damit herumgeschlagen haben. Das geht nicht in einem Blogartikel für Laien.

Praxis

Da würde ich „Ja, klar“ sagen. Geht. Oder ginge, wenn man gewollt hätte.

Denn man müsste ja gar nicht alle Probleme mit theoretischer Wasserdichtigkeit lösen. Sicherheit muss ja nicht theoretisch sicher sein, es reicht ja, wenn sie praktisch sicher ist.

Beispiel: Wenn ich einen 1000-Euro-Schein sicher aufbewahren will, finde ich sicher keinen Tresor, der theoreisch beweisbar unknackbar ist. Gibt es nicht. Es reicht aber ein Tresor, der dem Einbrecher einen Mindestaufwand von 2000 Euro bereitet, um an den 1000-Euro-Schein zu kommen, damit sich das nicht mehr für ihn lohnt.

Ich muss in der Praxis nämlich nicht den theoretisch möglichen Angreifer abwehren, sondern es reicht, den real existierenden Drecksack zu hemmen. Das fängt bei Script-Kiddys an und geht bei irgendwelchen Hacker-Dienstleistern weiter. Man gewinnt schon viel, wenn man

  • den Aufwand so hoch schraubt, dass es keinen „Spaß“ mehr macht und keine Motivation (offenes Scheunentor) liefert,
  • den Aufwand so hoch schraubt, dass man es in seiner Freizeit nicht mehr leisten kann,
  • den Aufwand so hoch schraubt, dass es sich betriebswirtschaftlich nicht mehr lohnt.
  • den Aufwand so hoch schraubt, dass es mit aktuellen praktischen Mitteln nicht mehr leicht geht.

Einfaches Beispiel:

Stellt mal einen Rechner frei ins Internet, IPv4, mit ssh-Port auf normalem Port 22. Und schaut ins Log. Da ist dann die Hölle los. Alle paar Sekunden probiert einer, einzubrechen, versucht logins und Passworte.

Macht dasselbe mit einer zufällig gewählten IPv6-Adresse, und es herrscht Ruhe.

Warum?

Theoretisch ist IPv6 da kein Stück sicherer als IPv4. Aber der Adressraum ist so groß, dass man ihn – derzeit – nicht effektiv durchscannen kann. Das ist zwar sicherheitstechnisch verpönt, sich auf so etwas zu stützen, weil „Security by Obscurity“, und das macht man nicht, weil es einem böse auf die Füße fallen kann, aber trotzdem: Es zeigt, welche Wirkung es hat, wenn der Aufwand über dem liegt, was der normale Angreifer leisten kann.

Und zwar nicht alle, aber unheimlich viele Probleme hätte man in den letzten 30 Jahren lösen können.

Und das Böse daran: Ich sage das jetzt nicht rückwirkend, weil man hinterher (a posteriori) schlauer ist und es sich hinterher leicht sagt. Wir wussten das auch vor 30 Jahren schon und haben Vorlesungen darüber gehalten.

Das Problem ist, dass in der Branche zuviele unterwegs sind, die sich für Sicherheit überhaupt nicht interessieren oder sie nicht verstehen.

Es gibt auch noch viele Pragmatiker, die Unsicherheit – durchaus vertretbar – sogar in Kauf nehmen, nämlich dann, wenn die Sicherheitsmaßnahme teurer als der zu erwartende Schaden wäre.

Der Punkt ist nämlich, dass Sicherheit auch keine Religion, kein moralisches Gebot ist, sondern letztlich nur eine betriebswirtschaftliche Entscheidungskategorie. Es gibt Firmen, die Sicherheit nur umsetzen, wenn man nachweisen kann, dass man mit der Sicherheitsmaßnahme mindestens 50% gegenüber der Unsicherheit spart.

Deshalb habe ich das auch schon lange in Schulungen und so weiter gepredigt, dass die kanonische Sicherheitsmaßnahme die ist, einfach gar nichts zu tun und den Schaden hinzunehmen. Hört sich bekloppt an, gehört aber einfach auf die Liste der möglichen Sicherheitsmaßnahmen, über die man entscheidet.

Es muss nämlich nicht alles „sicher“ sein. Das Ziel der IT-Sicherheit ist nämlich in der Praxis nicht, Angriffe um jeden Preis zu verhindern. Sondern das Ziel ist, im Sinne der Spiel- und Entscheidungstheorie, das eigene Betriebsergebnis unter dem erwarteten Verhalten von Angreifern zu optimieren. Es geht nicht darum, den Angriff auf jeden Fall zu verhindern, sondern die Summe aller zu berücksichtigenden Kosten so niedrig wie möglich zu halten. Und dazu gehört zwar der Schaden durch Angriff, aber auch Geldstrafen, die man wegen Non-Compliance zu zahlen hätte, und der Aufwand für die Sicherheitsmaßnahme.

Es ist also nicht richtig, von „Sicherheit“ als allgemeinem Ziel auszugehen, sondern einfach von Schadensminimierung als Ziel. Das sieht nach außen nicht immer gut aus, kann aber optimal sein. Manchmal ist es am erfolgreichsten, einfach zu sagen „Dann wird’s halt geklaut.“

Anders geagt: Es bringt nichts, einen 50.000-Euro-Tresor zu kaufen, um einen 1000-Euro-Schein zu sichern, wenn der Schein in einem 300-Euro-Schränkchen durchschnittlich einmal im Jahr geklaut würde.

Aber man hätte viel erreichen können, wenn man sich die letzten 30 Jahre koordinierte Mühe gegeben hätte. Und das haben wir nicht. Überhaupt nicht.

Was auch damit zu tun hat, dass wir die Kosten-Nutzen-Rechnungen nie auf die gesamte Volkswirtschaft beziehen, sondern immer nur partikular betrachten.

Will man überhaupt Sicherheit?

Das größte Problem sind neben den unfähigen Politikern aber auch die, die schlicht dagegen sind und aus Gründen der Geheimdiensttätigkeit ganz bewusst unsichere Rechner haben wollen. Und Leute wie mich dann absägen.

Sicherheit wird es nicht geben, solange sie politisch nicht gewollt ist.

Und neben denen, die sie aktiv bekämpfen, gibt es auch noch die, die sich nicht wollen, weil sie es überhaupt nicht verstanden haben, worum es eigentlich geht.