Komplementäre Ansätze für den Schutz vor Beeinflussung
Generell ist es das Beste, mit komplementären Techniken so viele Komponenten wie möglich voneinander zu isolieren.
Ein möglicher Ansatz ist die Betriebssystemarchitektur. Bei einem Betriebssystem mit Mikrokernel laufen alle Komponenten (auch Dateisystem, Gerätetreiber, Netzwerkstack usw.) in separaten Adressräumen und sind sowohl gegen den Kernel als auch gegeneinander isoliert. Weitere Ansätze wären:
Adaptive Partitionierung — Bei der sogenannten adaptiven Zeitpartitionierung wird einer Gruppe von Threads ein Mindestanteil an Prozessorzeit zugewiesen, allerdings nur dann, wenn die Threads diesen auch benötigen. Sicherzustellen, dass Prozesse nicht mangels CPU-Zeit verhungern, wird durch adaptive Zeitpartitionierung deutlich vereinfacht. Diese Technik kann bei komplexen Systemen eingesetzt werden, für die sich RMS (ratenmonotones Scheduling) nicht eignet.
Datendiversifizierung und Coded Processors — Unter Datendiversifizierung versteht man das Speichern von Daten in mehreren unterschiedlichen Semantiken. Durch eine solche Diversifizierung steigt das Konfidenzniveau bezüglich der Datenintegrität. Man stützt sich dabei auf die Annahme, dass ein Algorithmus zwar ein falsches Ergebnis liefern kann, es aber unwahrscheinlich ist, dass zwei unterschiedliche Algorithmen dasselbe falsche Ergebnis liefern.
Erkennung von Anomalien — Schon seit Langem kommen Prädiktor-Korrektor-Methoden wie etwa Kalman-Filter zum Einsatz, um Anomalien in Sensordaten zu erkennen. Für die Erkennung von Anomalien in Systemvariablen, deren Wert nur selten von stochastischem Rauschen betroffen ist, eignen sich diese Methoden weniger gut.
Fortschrittsüberwachung — Programme zur Überwachung des Fortschritts überwachen Systemindikatoren und ergreifen Maßnahmen, falls das System stehen bleibt bzw. ins Stocken gerät. Häufig werden Prozessausfälle überwacht – die extremste Form des Ausbleibens von Fortschritt.
Techniken zur Validierung des Komponentenschutzes
Auditoren und Aufsichtsbehörden verlangen Nachweise dafür, dass die Grenzen zwischen den isolierten Komponenten nicht verletzt werden. Es gibt zahlreiche Techniken und Tools, um zu beweisen, dass diese Anforderungen erfüllt sind.
Diskrete ereignisorientierte Simulation: Wenn die Korrektheit eines Algorithmus, Protokolls oder der Isolierung nicht bewiesen werden kann – wenn beispielsweise die Verteilung von Ereignissen nur empirisch ermittelt werden kann –, können diskrete ereignisorientierte Simulationen (DES) ein statistisches Konfidenzniveau für die Korrektheit der Annahmen liefern.
Formale Designprüfung: Der Zeitaufwand für Tests lässt sich deutlich reduzieren, wenn sich beweisen lässt, dass ein Design korrekt ist, und aus diesem Design sodann automatisch Code generiert wird.
Statische Code-Analyse: Eine Schwäche von statischer Codeanalyse besteht darin, dass sie dazu neigt, Fehler zu entdecken, die bei näherer Betrachtung gar keine sind. Außerdem ist statische Analyse bei den im Embeeded-Bereich verwendeten Sprachen (zum Beispiel C mit seinen Zeigern) wenig effektiv. Allerdings sind inzwischen ausgefeilte Tools für statische Analyse verfügbar, die speziell bei der Nutzung von sogenannten Codeverträgen sowie symbolischer Ausführung deutlich verbessert wurden.
Flow-Tagging: Mit Flow-Tagging lässt sich beweisen, dass unter den getesteten Bedingungen keine unangemessene Interaktion zwischen isolierten Komponenten aufgetreten ist. Kombiniert man diese Technik mit Assert-Anweisungen, die lineare temporale Logikinvarianten enthalten, sind anspruchsvolle Analysen der Interaktion von Komponenten möglich, die Aussagen bezüglich ihrer Isolation stützen können.
Originalbeitrag als ePaper oder im pdf-Format lesen
Dieser Autorenbeitrag ist in der Printausgabe ELEKTRONIKPRAXIS Sonderheft Embedded Software Engineering Report 2 erschienen. Diese ist auch als kostenloses ePaper oder als pdf abrufbar.
Vermeidung von Deadlocks und Livelocks
Coffmann stellte seine vier Bedingungen, die für einen Deadlock erfüllt sein müssen, bereits 1971 auf. Heute betrachten wir sowohl Deadlocks als auch Livelocks als Formen von Nichtfortschritt, also als nicht erfüllte Lebendigkeitsbedingungen. Der Beweis der Korrektheit von Annahmen über die Lebendigkeit ist per se schwierig, weil der abzusuchende Raum im Prinzip unbegrenzt ist: Was könnte das System in der Zukunft tun? Dennoch können Tools dabei helfen, Deadlocks und Livelocks in diversen Phasen der Systementwicklung zu erkennen.
Adaptive Partitionierung: Einer Gruppe von Threads wird ein Mindestanteil an Prozessorzeit zugewiesen, allerdings nur dann, wenn die Threads diesen auch benötigen. Auf diese Weise wird sichergestellt, dass Prozesse nicht mangels CPU-Zeit verhungern.
(Grafik: QNX)
Tools, die Deadlocks und Livelocks in der Designphase erkennen können, analysieren meist ein abstraktes Modell des Systems, das die Hardware und die Software einschließt. Einige Tools können Code aus dem Design generieren, wenn seine Korrektheit bewiesen werden konnte. Wird das Design dagegen manuell implementiert, besteht die Gefahr von Fehlern. Die korrekte Implementierung könnte so kompromittiert werden.
Statische Analyse-Tools, die in der Codierphase zum Einsatz kommen, können manchmal mögliche Deadlocks erkennen. Jedoch ist dies bei Sprachen wie C schwieriger als bei komplett definierten oder stark und statisch typisierten Sprachen. Diese Tools führen zahlreiche Operationen aus, die von der Extraktion von Semantikinformationen aus im Code eingebetteten Verträgen (in Sprachen, die keine vertragsbasierte Programmierung unterstützen, können diese Verträge als Kommentare vorliegen) bis zu symbolischer Ausführung reichen – einer Kreuzung aus dynamischem Test und statischer Analyse.
Laufendes System: Viele Systeme besitzen einen Hardware-Watchdog, der regelmäßig angestoßen werden muss. Die Entscheidung, welcher oder welche Prozess(e) den Wachhund anstoßen sollen, fällt jedoch schwer, weil der Watchdog für Deadlocks von Prozessen blind ist, von denen er gar nicht erwartet, dass sie ihn anstoßen. Es ist daher oft hilfreich, Bedingungen zu definieren, die garantieren, dass Fortschritt erfolgt, und einen Softwareprozess darauf anzusetzen, die Bedingung zu überwachen und im Fall von ausbleibendem Fortschritt Maßnahmen einzuleiten.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
* Yi Zheng ist Produktmanagerin für Safe and Secure Systems bei QNX Software Systems.
* Chris Hobbs ist Senior Developer für Sichere Systeme bei QNX Software Systems.