Project Details
Projekt Print View

Software-implementierte hardwareunabhängige Detektion transienter und permanenter Ausführungsfehler mit adaptierbarer Sicherheit

Subject Area Software Engineering and Programming Languages
Term from 2008 to 2011
Project identifier Deutsche Forschungsgemeinschaft (DFG) - Project number 101906015
 
Final Report Year 2010

Final Report Abstract

Im Rahmen des Projekts wurde ein Framework zur Detektion von Ausführungsfehlern entwickelt. Dieses Framework ermöglicht es, unsichere Anwendungen in sichere Anwendungen zu transformieren. Im Gegensatz zu unsicheren Anwendungen, sind sichere Anwendungen in der Lage zu detektieren, ob ihre Ausführung fehlerhaft war, zum Beispiel weil die benutzte Hardware die Anwendung nicht korrekt ausgeführt hat. Das entwickelte Framework unterstützt verschiedene dieser Transformationen, die sich in den erzielten Fehlerdetektionsraten und den Laufzeitkosten unterscheiden: SWIFT dupliziert für die sichere Anwendung Instruktionen und Register eines Ausführungsthreads. Speicher wird nicht dupliziert. Bevor Daten ausgegeben werden oder den Kontrollfluß steuern, wird die Konsistenz der Duplikate der ausgegebenen oder genutzten Daten geprüft. Wenn die Duplikate ungleich sind, wird das Programm abgebrochen. SWIFT ECF erweitert SWIFT um eine Konsistenzüberprüfung des Kontrollfluß. AN-encoding erhält die sichere Programmversion aus der unsicheren durch AN-Codierung, d.h., daß die sichere Programmversion ausschließlich Daten verarbeitet, die durch einen arithmetischen AN-Code gesichert werden. Dieser Code ermöglicht es, Datenmodifikationen und fehlerhafte Berechnungen zu entdecken. ANB-encoding verwendet im Gegensatz zu AN-encoding einen arithmetischen ANB-Code. Dieser ermöglicht zusätzlich die Detektion von Kontroll- und Datenflußfehlern. ANBDmem-encoding erweitert ANB-encoding noch um die Möglichkeit, verlorene Aktualisierungen des Speichers zu detektieren. SWIFT und SWIFT ECF sind bekannte Ansätze, die innerhalb des Projekts implementiert wurden, um das Framework um schnelle Ansätze mit allerdings geringeren Fehlerdetektionsfähigkeiten zu erweitern. Compiler-basierte Codierung mit arithmetischen AN-, ANB- und ANBDmem-Codes wurden innerhalb des Projekts entwickelt und implementiert. Im Gegensatz zu bekannten Codierungsansätzen mit arithmetischen Codes zur Fehlerdetektion, erfolgt die entwickelte Transformation komplett zur Compilierzeit und ist vollständig, daß heißt alle Instruktionen und Daten werden durch die Codierung geschützt. Im Gegensatz zum replikationsbasierten SWIFT und SWIFT ECF können arithmetische Codes auch permanente Fehler detektieren. Weiterhin wurde innerhalb des Projekts ein Evaluator entwickelt, der mittels Fehlerinjektion die Fehlerdetektionsfähigkeiten verschiedener Transformationen bestimmen kann. Dieser Evaluator benutzt ein breiteres Fehlermodell als es bisherige Arbeiten zu diesem Thema angewendet haben. Wir konnten durch Untersuchungen mit unserem Evaluator zeigen, daß die verschiedenen Transformationen unterschiedliche Fehlerdetektionsfähigkeiten und Laufzeitkosten (im Sinne von zusätzlich benötigter Laufzeit) aufweisen: Es ist nicht überraschend, daß eine zunehmende Sicherheit in Form von höheren Detektionsraten hierbei immer mit höheren Laufzeitkosten verbunden ist. Aber während sich die Detektionsraten exponentiell verbessern, wächst die zusätzlich benötigte Laufzeit nur linear. SWIFT generiert die geringsten Kosten und detektiert die wenigsten Fehler, während ANBDmem-encoding die höchsten Kosten aufweist und die meisten Fehler detektiert. Es ist nicht auszuschließen, daß die durchgeführten Transformationen die Semantik der transformieren Anwendung verändern. In Zukunft sollte verifiziert werden, daß die transformierte, sichere Anwendung im fehlerfreien Fall die gleiche Funktionalität aufweist wie die unsichere Ursprungsanwendung. Die Fehlerdetektionsfähigkeiten wurden bisher mit Hilfe von Fehlerinjektionsexperimenten evaluiert. Prinzipiell kann für jede arithmetische Codierung (AN-, ANB- und ANBDmem-Code) eine Wahrscheinlichkeit angegeben werden mit der Fehler erkannt werden. Allerdings gilt diese Wahrscheinlichkeit nur für eine ideale und fehlerfreie Implementierung der Codierung. In Zukunft soll mit Hilfe formaler Verifikationstechniken untersucht werden in wie weit die Implementierung der Codierung Schwachstellen aufweist und wie diese behoben werden können. Die Ergebnisse der Fehlerinjektionsexperimente deuten auf das Vorhandensein solcher Schwachstellen hin. In heutigen hochsicherheitskritischen Systemen wird die Detektion von Ausführungsfehlern zumeist durch redundante Ausführung auf replizierter Hardware realisiert. Dadurch entstehen hohe Hardware- und Energiekosten. Die im Projekt entwickelten Transformationen ermöglichen Fehlerdetektion ohne replizierte Hardware. Auf der anderen Seite verlängern sie die Laufzeit der geschützten Anwendungen. Es ist zu untersuchen in wie weit Codierung mit arithmetischen Codes kostengünstigere (sowohl Produktions- als auch Betriebskosten) hochsicherheitskritische Systeme ermöglicht. Für einen weit verbreiteten Einsatz arithmetischer Codierung ist eine weitere Optimierung der codierten Operationen, die die Basis jeder Codierungstransformation bilden, notwendig. Neben Optimierungen der verwendeten Algorithmen kann eine Implementierung • codierter Operationen, • Teile codierter Operationen oder • ganzer codierter Programme in Hardware die Ausführung codierter Anwendungen beschleunigen. Weiterhin ermöglichen ANB- und ANBDmem-encoding eine sehr genaue Bestimmung fehlerhafter Teile eines Prozessors. Weitere Forschungsarbeiten sollten am Einsatz arithmetischer Codes zum Zwecke der Diagnose und folgender Recovery fehlerhafter Hardware arbeiten. Mögliche Anwendungen des entwickelten Frameworks sehen wir im Bereich sicherheitskritischer Systeme, zum Beispiel im Automobil-, Flugzeugtechnik- und Medizintechnikbereich.

Publications

  • AN-Encoding Compiler: Building Safety-Critical Systems with Commodity Hardware. In The 28th International Conference on Computer Safety, Reliability and Security (SafeComp 2009), 2009
    U. Schiffel, M. Süßkraut, and C. Fetzer
  • ANB- and ANBDmem-Encoding: Detecting Hardware Errors in Software. In The 29th International Conference on Computer Safety, Reliability and Security (SafeComp 2010), 2010
    U. Schiffel, A. Schmitt, M. Süßkraut, and C. Fetzer
  • Slice Your Bug: Debugging Error Detection Mechanisms using Error Injection Slicing. In Eighth European Dependable Computing Conference (EDCC 2010), 2010
    U. Schiffel, A. Schmitt, M. Süßkraut, and C. Fetzer
  • Software-Implemented Hardware Error Detection: Costs and Gains. In The Third International Conference on Dependability (DEPEND 2010), 2010
    U. Schiffel, A. Schmitt, M. Süßkraut, and C. Fetzer
 
 

Additional Information

Textvergrößerung und Kontrastanpassung