...und hofft darauf dass irgendjemand seine eigene Baustelle fertig baut. So als wäre es die größere Herausforderung einen Programmrumpf zu schaffen der dann die "Technologiemodule" aufnimmt.
Nunja, sobald man im Zuge einer Abschlussarbeit auch ein Stück Software entwickeln muss, muss man sich auch immer überlegen in wie weit diese einsetzbar sein soll (abgesehen davon, dass man sich natürlich zuerst Gedanken darber machen sollte, WAS die Software eigentlich leisten soll). Nun habe ich mich entschieden, eine Software zu schreiben, die sowohl PROFIBUS Netztraffic rudimentär parst (FDL wird mittlerweise vollständig verstanden, an den DP Versionen bin ich dran) und anhand der aufbereiteten Daten sogenannte "Beobachtungen" anfertigt. Eine Beobachtung sieht bei mir z.B. so aus (und kann auch beliebige andere Formen annehmen):
- Einer Funktion, welche jedem Paket eine Klasse zuweist (z.B. "Stellwert viel zu klein", "Stellwert leicht unter normal", "Stellwert normal", etc.)
- Einer Anzahl von Datensätzen in der nach der obigen Klassifizierung absolute Häufigkeiten gezählt werden. Für die obige Klassifizierungsfunktion könnte das so aussehen
(0, 3, 20, 2, 0)
(0, 2, 22, 1, 0)
(0, 0, 25, 0, 0)
...
- Die Anzahl der Pakete die in einen Datensatz mit aufgenommen werden (in diesem Fall immer 25)
Die Klassifizierungsfunktion ist denkbar einfach geschrieben und es könnten auch beliebige weitere von jedem erstellt werden, der 3 Stunden Python programmiert hat. DAS meine ich mit einfacher Erweiterbarkeit. Natürlich kann auch ein Statistikprofessor kommen und die Häfte des Systems neu entwerfen (ginge tatsächlich, aber das ist Nebensache) aber voll allem soll der Admin eines Netzwerk das vorhandene System möglichst gut auf seine Bedüfnisse anpassen können. Das ist ja auch unter anderem ein vorgegebener Schwerpunkt der Arbeit.
norustnotrust schrieb:
Das ist keine Kritik an dir sondern ich denke dass deine obskure Aufgabenstellung weit weit über die Möglichkeiten eines BA's hinausgeht und daher von Anfang an zum Scheitern verurteilt ist. Ich meine je nach dem was dein Schwerpunkt ist wäre es doch viel gewinnbringender für alle Beteiligten etwas zu machen was beherrschbar ist und dennoch wichtige Aspekte der Ausbildung beinhaltet wie z.B. einen einfachen PB Master (oder Slave) zu schreiben oder einen einfachen PB Analysator zu machen. Da hast du auch alle Themen eines Bussystems und einen praktischen Teil auch drinnen.
Was lernt man als Student dabei? Mach halt irgendwas, hauptsache du kannst es danach schönargumentieren? Das Arbeitsergebnis ist egal hauptsache du präsentierst es gut? Der Prozess ist wichtiger als das Ergebnis?
Ich verstehe es echt nicht...
Mal anders rum, was können schon Lernziele in einer BA sein? Verständnis eines bisher unbekannten Systems, neuer Algorithmen die evtl. über das bisherige Studium hinausgehen? Einrichten einer Testumgebung um gewisse Daten zuerheben?
Um tatsächlich richtig neue Erkenntnisse zu erhalten, welche dem aktuellen Stand der Forschung in entscheidender Weise von Nutzen sein können braucht es wohl einiges mehr als einen einzelnen Studenten und 3 Monate Arbeitszeit. An dieser Vorstellung scheitern wohl viele, dem Gedanken da etwas wirklich neues und allerwelt nützliches zu schaffen.
Ich habe bisher schon enorm viel gelernt. Um nur die Themen anzureißen: das PROFIBUS Protokoll, allgemein Einsatz und Funktion von Feldbussen, Grundlagen der Prozessautomatisierung, Grundlagen der Intrusion Detection, statistische Algorithmen und deren Anwendung in verschiedenen Fällen und nicht zuletzt auch einige neue Erfahrung in der Programmierung eines halbwegs großen Softwareprojekts, immerhin muss ich das ganze System selbst schreiben.
norustnotrust schrieb:
Ein Sollwert X ist 5 Monate 10 % und dann plötzlich 30%. Ist es ein Virus oder nur ein warmer Tag?
Ist doch egal, selbst wenn es nur zu heiß ist, kann eine Abweichung von 20% eines Sollwertes sicher nichts guten heißen. Wenn das niemand mitbekäme hätte das sicherlich Folgen.. Und so eine Wertänderung kann definitiv auch von einfachen statistischen Tests als signifikant eingestuft werden.
norustnotrust schrieb:
Das heißt jedes Mal wenn du einen Button drückst bekommst du einen Alarm! Außer du bemühst dich und drückst den Button nur jeden Tag um 07:43. . Also ich bin mir recht gut darüber im Klaren was Statistik leisten kann aber das kann nicht funktionieren (= einigermaßen verläßlich bösartige Änderungen erkennen und gutartige ignorieren)
Nur wenn das Überwachungssystem schlecht eingestellt ist. Nur um das mal klar zu stellen, es ist absoluter Grundsatz in diesem Forschungsbereich, dass die Feinstellung eines solchen Systems IMMER dem Admin überlassen werden muss und IMMER sau schwierig ist. Es geht auch stets nur darum false positives zu minimieren, nicht sie komplett auszuschließen.
Ein aus-dem-Hut Vorschlag von mir wäre jetzt, zeitbasiert das Datenprofil zu ändern und bestimmte regelmäßige Ereignisse miteinzukalkulieren. Wie gesagt, selbst für das weltbeste IDS lassen sich immer pathologische Fälle konstruieren. Allein zu diesem Unterthema gibt es unzählige Doktorarbeiten.
ChristophD schrieb:
Dann kommt noch hinzu das quasi jeder Hersteller auch gerne seine eigene Suppe kocht was die Daten in den Telegrammen angeht, sprich was sind die relevanten Daten zur Ansteuerung, Sollwerte, Freigaben etc.
Da darfst du dann für jeden Slave eine Telegrammschablone nehmen und individuell auf die Anlage anpassen.
Auch hier nochmal, die Feinstellung muss jeder Admin selber übernehmen. Und auch hier nochmal, DAS meine ich mit einfach zu erweitern, modular aufgebaut, etc. Admins können nicht nur die vorhandenen Filter konfigurieren (also irgendwelche Werte in Konfigfiles anpassen) sondern zum Beispiel kleine (wirklich kleine, vielleicht 40 Zeilen Code) Plugins schreiben, die ein Paket nehmen und es anders klassifizieren. Das Plugin wird in das entsprechende Verzeichnis geschoben und funktioniert sofort. Damit ist eine weitere Sicht auf den Datenstrom gewonnen, welche dem Admin vielleicht sehr gefehlt hat, gedade weil jeder "seine eigene Suppe kocht".
Oder lass mich mal folgenes Szenario bemühen: Nehmen wir mal an dein heuristischer Superalgorithmus kann das alles. Wie lange braucht er um verlässliche Aussagen treffen zu können. An den Stellgrößen der Anlagen die ich kenne sind fast immer klimatische Elemente in irgendeiner Art und Weise beteiligt. Also braucht er ein Jahr (plusminus) zum lernen. Oder lassen wir das mal weg und sagen optimistisch 3 Monate Daten reichen aus. Das heißt nach jeder Programmänderung, Rezeptänderung, Änderung des Materialeingangs, der Chargengröße, des Produktes usw... funktioniert er 3 Monate schlechter als sonst? Bei wie vielen Anlagen habe ich den Fall dass all diese Komponenten stets gleich bleiben?
Mal abgesehen davon dass dieser "Teaching Modus" auch wieder ein Einfallstor für den Virus ist, denn wenn er böse ist aktiviert er diesen ganz einfach.
Ja du hast recht mit all diesen Aussagen, der Lernmodus kann unter anderem sehr lange dauern, ist nicht immer zuverlässig, ein Virus könnte auch einfach das IDS ausschalten oder ein Einbrecher könnte alle Kabel zum IDS kappen oder einfach die Anlage sprengen. Es gibt immer Wege, ein IDS zu umgehen, gerade ein statistisch basiertes. Niemand spricht davon, sowas als universelles Heilmittel einzusetzen sondern nur, es in eine Reihe anderer Sicherheitstools einzugliedern.
Mein Ziel ist es, ein (evtl. auch nur in einer konstruierten Umgebung) funktionierendes System zu entwickeln, dass signifikante Änderung in beliebigen Teilen eines PROFIBUS Datenstroms feststellen kann.
Zur Erweiterbarkeit habe ich denke ich genug gesagt, ich selbst möchte für jede Funktion mindestens eine Defaulteinstellung liefern UND die Möglichkeit, beliebig daran weiter zuarbeiten. Inbesondere weil es hier im Unternehmen möglichst gut weiter verwendet werden soll und ich nicht weiß, was spätere Mitarbeiter damit nun genau vorhaben. Darum auch die Erweiterbarkeit auf allen Ebenen und nicht weil ich keinen Bock hab, die schwierigen Sachen selbst zu programmieren.