Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kugelsichere Architektur mit formalen Methoden

Kugelsichere Architektur mit formalen Methoden

Korrektheit, eigentlich eine selbstverständliche Anforderung an Software, schafft es selten in die offizielle Design-Dokumentation. Aber: Manche Software *muss* korrekt sein - solche, die kritische Hardware steuert, besonders sensible Informationen schützt oder umsatzkritische Berechnungen anstellt.

Tests allein können Korrektheit nicht sicherstellen, dafür braucht es formale Beweise. Ein ganzes Arsenal von Techniken und Werkzeugen hilft, Korrektheitsbeweise zu erstellen und zu überprüfen. Soll eine Architektur diese Techniken unterstützen, ist allerdings Sorgfalt geboten, insbesondere beim Design verifizierbarer Modelle. Der Vortrag gibt einen Überblick darüber, wie Software verifiziert werden kann und wie die Architektur dafür entworfen wird -- anhand von Fallbeispielen aus der Praxis.

Lars Hupel

April 25, 2024
Tweet

More Decks by Lars Hupel

Other Decks in Programming

Transcript

  1. Bianca • Informatikstudium an der TU Berlin • mehrere Jahre

    Anwendungsentwicklerin bei einer Rentenversicherung (Wartung und Modernisierung eines SAP-Legacy-Systems) • aktuell: Haskell- und Clojure-Entwicklerin
  2. Lars • hat an der TUM im Bereich Compilerbau promoviert

    • aktuell: Digitalwährungen für Zentralbanken • auch: Forschungsprojekt über Lieferkettensicherheit
  3. “Executable specifications are requirements written as tests that are automated.”

    https://bluefruit.co.uk/processes/executable- specifications-software-development/
  4. Wie wird die Geschwindigkeit ermittelt? A. Aniculaesei, M. Zhang, A.

    Rausch: Data- driven Approach for Accurate Estimation and Validation of Ego-Vehicle Speed (ICONS 2020)
  5. Requirements Analysis Construction of the Abstract System Model System Validation

    Test A. Aniculaesei, M. Zhang, A. Rausch: Architecture-based Hybrid Approach to Verify Safety-critical Automotive System Functions by Combining Data-driven and Formal Methods (ICSA-C)
  6. “The results of the system verification test have shown that

    a first version of the speed estimation function did not satisfy the Euro NCAP requirement.” A. Aniculaesei, M. Zhang, A. Rausch: Architecture-based Hybrid Approach to Verify Safety-critical Automotive System Functions by Combining Data-driven and Formal Methods (ICSA-C)
  7. Probabilistische Verifikation mit Storm • Storm ist ein Analysewerkzeug für

    Systeme mit Zufalls- Komponenten • wir können überprüfen, ob eine formale Anforderung mit einer vordefinierte Wahrscheinlichkeit durch das Eingabemodell erfüllt wird oder nicht • wir können auch die minimale und die maximale Wahrscheinlichkeit berechnen, womit eine gegebene Anforderung erfüllt wird oder nicht γ, 0.8 α, 0.5 α, 0.5 β, 0.2
  8. seL4 • Mikrokernel • Varianten in Qualcomm-Modems und iPhone-Security-Enklave •

    funktionale Korrektheit bewiesen (2009) • Beweis: 200.000 LoC User Mode →  Kernel Mode G. Heiser: The seL4 Microkernel – an Introduction
  9. “Functional correctness means here that the implementation always strictly follows

    our high-level abstract specification of kernel behaviour. This encompasses […] properties such as the kernel will never crash, and it will never perform an unsafe operation. It also proves much more: we can predict precisely how the kernel will behave in every possible situation.” G. Klein et al.: seL4: formal verification of an OS kernel (SOSP 2009)
  10. Isabelle • Beweisassistent für verschiedene Logiken • am häufigsten verwendet:

    Higher Order Logic (= Funktionale Programmierung + Logik) • Sprache für Beweise + IDE • mathematische Syntax für Mengen, Algebra, Analysis, … • Code-Export nach SML, OCaml, Haskell und Scala • Archive of Formal Proofs umfasst viele konkrete Beispielanwendungen: https://www.isa-afp.org/
  11. CompCert • C Compiler für ARM, PowerPC, x86 und RISC-V

    • unterstützt einen Großteil von ISO C 99, einen Teil von ISO C 2011 und einige Erweiterungen aus GNU C und Diab C • Compiler ist implementiert und verifiziert in Coq • Nachweis von „Semantic Preservation“ zwischen Input und Output in allen Compiler-Durchläufen • AbsInt GmbH vertreibt eine industrietaugliche CompCert-Version • Airbus verwendet den Compiler für sicherheitskritische Anwendungen
  12. Semantic Preservation If the compiler produces compiled code C from

    source code S, without reporting compile-time errors, then every observable behavior of C is either identical to an allowed behavior of S, or improves over such an allowed behavior of S by replacing undefined behaviors with more defined behaviors. https://compcert.org/motivations.html
  13. Coq • Formal Proof Management System • Sprache für mathematische

    Definitionen, ausführbare Programme und mathematische Beweise • Anbindung an verschiedene IDEs • Emacs, Vim, VSCode, jsCoq • Code-Extraktion nach OCaml, Haskell und Scheme
  14. Was sind denn nun formale Methoden? Specification Coverage Rigor Implementation

    Type system First-order logic Model checking State machines Theorem prover Property testing Flowchart
  15. 1. Formeln tun nicht weh. 2. Schreibt Eigenschaften. 3. Testet

    Eigenschaften. 4. Beweist Eigenschaften. 5. Formale Methoden sorgen für besseren Schlaf.