CoPoRust

Entwicklung einer Rust-Unterstützung für Coded Processing

Projektförderung

Hintergrund

Hardware ist Umwelteinflüssen wie Temperaturschwankungen, Vibrationen, Strahlung sowie Alterungsprozessen auf Nanostrukturebene ausgesetzt. Diese beeinflussen das Verhalten der Hardware und können sich beispielsweise als sporadische Bitflips im RAM und Prozessor oder als permanent unterbrochene Leitungen in Form von zufälligen Hardwarefehlern manifestieren. Auch wenn die Wahrscheinlichkeit ihres Auftretens gering ist, wird in sicherheitskritischen Systemen eine Diagnose solcher Umwelteinflüsse gefordert.

Software Coded Processing (SCP) ermöglicht es, solche Diagnosen auf Softwareebene durchzuführen. SCP arbeitet mit einem zweikanaligen Ansatz, der neben dem nativ vom Entwickler programmierten Softwarekanal einen zweiten, codierten Kanal ausführt. Die beiden Kanäle werden so zusammengeführt, dass Hardwarefehler zuverlässig erkannt werden. Dadurch ist die Realisierung von sicherheitskritischen Systemen auf Basis von COTS-Hardware möglich, ohne dass redundante oder spezialisierte Hardware erforderlich ist.

Aktuell erfolgt die Integration von SCP typischerweise für die Programmiersprachen C/C++ mittels einer Source-to-Source-Transformation. Die noch vergleichsweise junge Programmiersprache Rust gewinnt seit einigen Jahren zunehmend an Bedeutung. Auch im Bereich der Softwareentwicklung für funktionale Sicherheit wurde das Potenzial von Rust erkannt. Aus diesem Grund wurde das Safety-Critical Rust Consortium ins Leben gerufen, um Rust und seine Werkzeuge hinsichtlich der notwendigen Sicherheitsprozesse der Normen zu ergänzen.

Das Besondere an Rust ist sein Ansatz zur Speicherverwaltung. Anders als bei C/C++, wo die manuelle Speicherverwaltung häufig Ursache für Bugs und Sicherheitslücken ist, setzt Rust auf ein Ownership- und Borrowing-System. Dieses System ermöglicht es, die Lebensdauer von Speicher und Speicherreferenzen bereits zur Kompilierzeit zu prüfen. Dadurch wird der Compiler zu einem äußerst leistungsfähigen Werkzeug, um Speicherfehler frühzeitig zu erkennen. Neben der Speicherverwaltung bietet Rust auch effektive Konzepte zur Umsetzung von Multithreaded-Applikationen und Fehlerbehandlungsmechanismen.

Zielsetzung/Ergebnisse

Aus dieser Entwicklung heraus ist die Unterstützung von Rust der logische nächste Schritt, um die Vorteile von SCP und Rust zu verbinden und Anwendern eine zukunftstaugliche Lösung zu bieten. Dabei soll analysiert werden, welche zusätzlichen Codierungen für Rust notwendig sind und wie der codierte Kanal in ein Rust-Projekt eingebunden werden kann. Zum anderen soll untersucht werden, ob sich mit der Metaprogramming-Funktionalität von Rust eine alternative Möglichkeit zur Integration von SCP bietet.

Ihr Ansprechpartner

Dieses Bild zeigt Marc Fischer

Marc Fischer

M.Sc.

Wissenschaftlicher Mitarbeiter "Software- und Engineeringmethoden"

Zum Seitenanfang