SlideShare ist ein Scribd-Unternehmen logo
1 von 84
Downloaden Sie, um offline zu lesen
Anwendungen der Logik in der IT-Sicherheit
Tobias Philipp
27. Mai 2019, Formale Systeme, TU Dresden
Agenda
■ Programmverifikation
Why3, SMT, SPARK
Aussagenlogische Resolution
■ Ausblick
Interaktives Theorembeweisen
Hardware Verifikation
Runtime Verifikation
■ Zusammenfassung
| Folie 2 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Teil 1:
Programmverifikation
Why3 SMT SPARK Resolution
Warum formale Verifikation?
Binäre Suche
■ Erste Veröffentlichung 1946
| Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Binäre Suche
■ Erste Veröffentlichung 1946
■ Erste korrekte Veröffentlichung 1962
| Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Binäre Suche
■ Erste Veröffentlichung 1946
■ Erste korrekte Veröffentlichung 1962
■ Implementierung in der Java Standard Bibliothek ist fehlerhaft 2006
Nearly All Binary Searches and Mergesorts are Broken, Joshua Bloch.
Google Research Blog, 2006
| Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Binäre Suche
■ Erste Veröffentlichung 1946
■ Erste korrekte Veröffentlichung 1962
■ Implementierung in der Java Standard Bibliothek ist fehlerhaft 2006
Nearly All Binary Searches and Mergesorts are Broken, Joshua Bloch.
Google Research Blog, 2006
int mid = (low + high) / 2;
int midVal = a[mid];
| Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Binäre Suche
■ Erste Veröffentlichung 1946
■ Erste korrekte Veröffentlichung 1962
■ Implementierung in der Java Standard Bibliothek ist fehlerhaft 2006
Nearly All Binary Searches and Mergesorts are Broken, Joshua Bloch.
Google Research Blog, 2006
int mid = (low + high) / 2;
int midVal = a[mid];
⇝
int mid = low + (high - low) / 2;
int midVal = a[mid];
| Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Softwarefehler …
■ treten häufig auf
| Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Softwarefehler …
■ treten häufig auf
■ stören
| Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Softwarefehler …
■ treten häufig auf
■ stören
■ können hohe Kosten verursachen
| Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Softwarefehler …
■ treten häufig auf
■ stören
■ können hohe Kosten verursachen
■ können Menschenleben in Gefahr bringen
| Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Warum formale Verifikation?
Softwarefehler …
■ treten häufig auf
■ stören
■ können hohe Kosten verursachen
■ können Menschenleben in Gefahr bringen
Instead of debugging a program, one should prove that it meets its specification, and
this proof should be checked by a computer program
— John McCarthy, A Basis for a Mathematical Theory of Computation, 1961
| Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Ansatz
Programm
Spezifikation
Verifikationsbedingungen
Theorembeweiser
Why3, Hoare-Kalkül
Transformationen
| Folie 6 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Why3 Logic
Jean-Christophe Filliâtre: One Logic To Use Them All. In: CADE. Springer. 2013
■ Terme
5int
3.14152real
xθ
if c then t else f
match t with p1 → t1 | . . . | pn → tn end
. . .
■ Formeln
■ Typ-Regeln
■ Semantik
XZ,I
int
∈ Z
. . .
| Folie 7 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Theorembeweiser
■ Ansatz: Axiomatisierung Theorien in Prädikatenlogik
■ Probleme:
Theorie reele Zahlen
Theorie endlicher Bäume
Theorie ganzer Zahlarithmetik mit Multiplikation
Inakzeptable Performanz
| Folie 8 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Theorembeweiser
■ Ansatz: Axiomatisierung Theorien in Prädikatenlogik
■ Probleme:
Theorie reele Zahlen
Theorie endlicher Bäume
Theorie ganzer Zahlarithmetik mit Multiplikation
Inakzeptable Performanz
Satisfiability Modulo Theories (SMT) Solver
■ Variablen repräsentieren Constraints über ganze Zahlen, Arrays, …
■ Theorie-Operationen wie Gleichheit, Addition, …
■ SAT-Solver interagiert mit Constraint Solver
| Folie 8 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
HOL-Why3 Toolchain
Quelldateien
(*.ads, *.adb)
| Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
HOL-Why3 Toolchain
Quelldateien
(*.ads, *.adb)
gnatprove
| Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
HOL-Why3 Toolchain
Quelldateien
(*.ads, *.adb)
gnatprove
Why3 files
(*.mlw)
| Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
HOL-Why3 Toolchain
Quelldateien
(*.ads, *.adb)
gnatprove
Why3 files
(*.mlw)
Why3
| Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
HOL-Why3 Toolchain
Quelldateien
(*.ads, *.adb)
gnatprove
Why3 files
(*.mlw)
Why3
HOL-Why3 files
(*.xml)
Alt-Ergo files…
| Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
HOL-Why3 Toolchain
Quelldateien
(*.ads, *.adb)
gnatprove
Why3 files
(*.mlw)
Why3
HOL-Why3 files
(*.xml)
Alt-Ergo files…
HOL-Why3
Wrapper
Alt-Ergo
| Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
HOL-Why3 Toolchain
Quelldateien
(*.ads, *.adb)
gnatprove
Why3 files
(*.mlw)
Why3
HOL-Why3 files
(*.xml)
Alt-Ergo files…
HOL-Why3
Wrapper
Alt-Ergo
Theory files
(*.thy)
| Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
HOL-Why3 Toolchain
Quelldateien
(*.ads, *.adb)
gnatprove
Why3 files
(*.mlw)
Why3
HOL-Why3 files
(*.xml)
Alt-Ergo files…
HOL-Why3
Wrapper
Alt-Ergo
Theory files
(*.thy)
HOL-Why3
| Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Ada / SPARK
Ada
■ imperative Programmiersprache
■ strenge Typisierung
■ ausführbare Verträge
SPARK
■ leicht verifizierbare Teilmenge von Ada
■ keine Pointer, keine dynamischen Datenstrukturen
■ gnatprove generiert Verifikationsbedingungen
Programmintegrität
Assertions, Schleifeninvarianten
Vor- und Nachbedingungen
| Folie 10 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Überblick
Quelldateien
(*.ads, *.adb)
gnatprove
gprbuild
VC Bericht
Anwendung
Wenn jede Verifikationsbedingung bewiesen ist, dann
■ wird kein Runtime-Fehler auftreten
■ erfüllt das Programm die Spezifikation
| Folie 11 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
SPARK Checks
■ Informationsfluss
■ Aliasing
■ Programmintegrität
■ Spezifikationen
| Folie 12 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Aliasing
■ Aliasing Modifikationen einer Variable haben Einfluss auf andere
■ Pointer
procedure Foo (A : in out A_Type)
is
procedure Helper (B : in out A_Type)
is
begin
-- Helper has two variables: A and B, pointing to the same memory
end Helper;
begin
Helper (B => A);
end Foo;
| Folie 13 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Programmintegrität
Laufzeitfehler sind Fehler während der Programmausführung:
■ array access errors, range violations, overflows, …
| Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Programmintegrität
Laufzeitfehler sind Fehler während der Programmausführung:
■ array access errors, range violations, overflows, …
type Nat_Array is array (Integer range <>) of Natural;
A : Nat_Array (1 .. 10);
I, J, P, Q : Integer;
A (I + J) := P / Q;
| Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Programmintegrität
Laufzeitfehler sind Fehler während der Programmausführung:
■ array access errors, range violations, overflows, …
type Nat_Array is array (Integer range <>) of Natural;
A : Nat_Array (1 .. 10);
I, J, P, Q : Integer;
A (I + J) := P / Q;
Die folgenden Fehler können auftreten:
■ I+J kann überlaufen
| Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Programmintegrität
Laufzeitfehler sind Fehler während der Programmausführung:
■ array access errors, range violations, overflows, …
type Nat_Array is array (Integer range <>) of Natural;
A : Nat_Array (1 .. 10);
I, J, P, Q : Integer;
A (I + J) := P / Q;
Die folgenden Fehler können auftreten:
■ I+J kann überlaufen
■ I+J kann außerhalb des Indexbereiches von A sein
| Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Programmintegrität
Laufzeitfehler sind Fehler während der Programmausführung:
■ array access errors, range violations, overflows, …
type Nat_Array is array (Integer range <>) of Natural;
A : Nat_Array (1 .. 10);
I, J, P, Q : Integer;
A (I + J) := P / Q;
Die folgenden Fehler können auftreten:
■ I+J kann überlaufen
■ I+J kann außerhalb des Indexbereiches von A sein
■ P/Q kann überlaufen
| Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Programmintegrität
Laufzeitfehler sind Fehler während der Programmausführung:
■ array access errors, range violations, overflows, …
type Nat_Array is array (Integer range <>) of Natural;
A : Nat_Array (1 .. 10);
I, J, P, Q : Integer;
A (I + J) := P / Q;
Die folgenden Fehler können auftreten:
■ I+J kann überlaufen
■ I+J kann außerhalb des Indexbereiches von A sein
■ P/Q kann überlaufen
■ P/Q kann außerhalb des Element-Subtypen sein
| Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Programmintegrität
Laufzeitfehler sind Fehler während der Programmausführung:
■ array access errors, range violations, overflows, …
type Nat_Array is array (Integer range <>) of Natural;
A : Nat_Array (1 .. 10);
I, J, P, Q : Integer;
A (I + J) := P / Q;
Die folgenden Fehler können auftreten:
■ I+J kann überlaufen
■ I+J kann außerhalb des Indexbereiches von A sein
■ P/Q kann überlaufen
■ P/Q kann außerhalb des Element-Subtypen sein
■ Q kann Null sein
| Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Spezifikationsfeatures – Überblick
■ Funktionale Ausdrücke
■ Vor- und Nachbedingungen
■ Ghost Code
■ Assertions
■ Schleifeninvarianten
■ Terminierung
■ Typinvarianten
■ Informationsflüsse
■ Zustandsabstraktionen
■ . . .
| Folie 15 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Funktionale Ausdrücke
type Variable_Type is mod 2**64;
type Literal_Type is
record
Polarity : Boolean;
Variable : Variable_Type;
end record;
type Clause_Type is array (Natural range <>) of Literal_Type;
function Compl (Literal : Literal_Type) return Literal_Type
is ((Polarity => not Literal.Polarity, Variable => Literal.Variable));
function Appears (C : Clause_Type; L : Literal_Type) return Boolean
is (for some Lp of C => L = Lp);
function Resolve_Spec
(C : Clause_Type;
D : Clause_Type;
L : Literal_Type;
R : Clause_Type) return Boolean
is ((for all Lp of C => (if Lp /= L then Appears (R, Lp))) and
(for all Lp of D => (if Lp /= Compl (L) then Appears (R, Lp))));
| Folie 16 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Vor- und Nachbedingungen
function Resolve
(C : Clause_Type;
D : Clause_Type;
L : Literal_Type)
return Clause_Type
with
Pre =>
C'First = 0 and
D'First = 0 and
C'Last < 2**16 and
D'Last < 2**16 and
Appears (C, L) and
Appears (D, Compl (L)),
Post =>
Entails (C, D, Resolve'Result);
| Folie 17 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Ghost Code
■ Ghost Code wird wie normaler Code beim Beweisprozess behandelt
■ Ghost Code wird nicht kompiliert
Ghost Code hat keinen Einfluss auf die reguläre Implementierung
function Entails
(C : Clause_Type;
D : Clause_Type;
R : Clause_Type)
return Boolean
with
Ghost,
Import;
procedure Resolution_Lemma
(C : Clause_Type;
D : Clause_Type;
L : Literal_Type;
R : Clause_Type)
with
Ghost,
Pre => Resolve_Spec (C, D, L, R),
Post => Entails (C, D, R);
| Folie 18 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Assertions
function Resolve
(C : Clause_Type;
D : Clause_Type;
L : Literal_Type)
return Clause_Type
is
Result : Clause_Type (0 .. C'Length + D'Length - 3);
L_Pos : Natural := Get_Literal_Pos (C, L);
Compl_L_Pos : Natural := Get_Literal_Pos (D, Compl (L));
begin
Copy (Data => C,
From => C'First,
Length => L_Pos - C'First,
Dest => Result,
Index => Result'First);
pragma Assert (for all I in C'First .. L_Pos - 1 => Result (I) = C (I));
...
pragma Assert (Resolve_Spec (C, D, L, Result));
Resolution_Lemma (C, D, L, Result);
return Result;
end Resolve;
| Folie 19 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Teil 2:
Ausblick
Interaktive Theorembeweiser Hardware Verifikation Runtime
Verifikation
Interaktive Theorem Beweiser
■ Peano-Axiome
0 ∈ N
(∀n)(n ∈ N → s(n) ∈ N)
(∀n)(n ∈ N → s(n) ̸= 0)
(∀n)(∀m)(n, m ∈ N → (s(n) = s(m) → n = m))
“(∀X)(0 ∈ X ∧ (∀n)(n ∈ N → (n ∈ X → s(n) ∈ X)) → N ⊆ X)”
■ Prädikatenlogik ist nicht ausdrucksstark genug
⇝ Prädikatenlogik höherer Stufe (HOL)
■ Isabelle/HOL
Definitionen / Axiome in HOL
Funktionale Programme
Eigenschaften interaktiv beweisen
| Folie 21 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Natürliche Zahlen
| Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: Prädikatenlogik
| Folie 23 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Isabelle/HOL: SPARK
| Folie 24 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Anwendungen Interaktive Theorembeweiser
■ Isabelle/HOL
Offene Verifikationsbedingungen beweisen
Formales Modell von Muen
| Folie 25 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Anwendungen Interaktive Theorembeweiser
■ Isabelle/HOL
Offene Verifikationsbedingungen beweisen
Formales Modell von Muen
■ Coq:
2005: CompCert: Verified optimizing C-Compiler
2008: 4-Color Theorem
| Folie 25 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Anwendungen Interaktive Theorembeweiser
■ Isabelle/HOL
Offene Verifikationsbedingungen beweisen
Formales Modell von Muen
■ Coq:
2005: CompCert: Verified optimizing C-Compiler
2008: 4-Color Theorem
■ ACL2
1995: Korrekheit Floating Point Divison vom AMD K5 (Pentium FDIV Bug)
2006: Eigenschaften der Sun Java Virtual Machine, Bytecode verifier
| Folie 25 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Anwendungen Interaktive Theorembeweiser
■ Isabelle/HOL
Offene Verifikationsbedingungen beweisen
Formales Modell von Muen
■ Coq:
2005: CompCert: Verified optimizing C-Compiler
2008: 4-Color Theorem
■ ACL2
1995: Korrekheit Floating Point Divison vom AMD K5 (Pentium FDIV Bug)
2006: Eigenschaften der Sun Java Virtual Machine, Bytecode verifier
■ F*
2017: HACL Cryptographic Library ⇝ HTTPS stack
| Folie 25 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation
Quelldateien
(*.vhd)
| Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation
Quelldateien
(*.vhd)
Compiler
| Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation
Quelldateien
(*.vhd)
Compiler
Simulator
| Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation
Quelldateien
(*.vhd)
Compiler
Simulator
Bounded Model Checker
| Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation
Quelldateien
(*.vhd)
Compiler
Simulator
Bounded Model Checker SMT
| Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation
Quelldateien
(*.vhd)
Compiler
Simulator
Bounded Model Checker SMT
Beispiel: Register File
https://github.com/tmeissner/formal_hw_verification
Torsten Meißner
| Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation: Frames
| Folie 27 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation: Lese-Beispiel (opcode 0x0)
| Folie 28 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation: Schreibe-Beispiel (opcode 0x1)
| Folie 29 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Hardware Verifikation: Prüfung Invarianten
// SEND_HEADER -> SEND_DATA
fsm_send_header_to_send_data_a : assert property (
s_fsm_state == `SEND_HEADER && DoutValid_o &&
DoutAccept_i && s_header[3:0] == `READ |=>
s_fsm_state == `SEND_DATA
);
| Folie 30 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Runtime Verifikation
■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar.
| Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Runtime Verifikation
■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar.
■ Idee: Beweisen, dass ein Lauf abstrakte Eigenschaften erfüllt.
| Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Runtime Verifikation
■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar.
■ Idee: Beweisen, dass ein Lauf abstrakte Eigenschaften erfüllt.
Eigenschaften
Monitor
System
FeedbackEvents
| Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Runtime Verifikation
■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar.
■ Idee: Beweisen, dass ein Lauf abstrakte Eigenschaften erfüllt.
Eigenschaften LTL, MSO, DL+CWA
Monitor Automaten, Theorembeweiser, Prolog
System
FeedbackEvents
| Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Runtime Verifikation
■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar.
■ Idee: Beweisen, dass ein Lauf abstrakte Eigenschaften erfüllt.
Eigenschaften LTL, MSO, DL+CWA
Monitor Automaten, Theorembeweiser, Prolog
System
FeedbackEvents
Beschreibung, Verarbeitung und Überprüfung clientseitiger Policies für vertrauenswürdige
Cloud-Anwendungen, Jörg Kebbedies. Dresden University of Technology, 2018
| Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Teil 3:
Zusammenfassung
Zusammenfassung
■ Logik
hilft bei der effizienten Softwareentwicklung
ist zentral für Software Verifikation und Programmanalyse
ist praxistauglich
| Folie 33 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Zusammenfassung
■ Logik
hilft bei der effizienten Softwareentwicklung
ist zentral für Software Verifikation und Programmanalyse
ist praxistauglich
■ Anwendungen
Scheduling
Smoke Tests
Muen Separationskernel
Kryptographische Bibliotheken
| Folie 33 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Zusammenfassung
■ Logik
hilft bei der effizienten Softwareentwicklung
ist zentral für Software Verifikation und Programmanalyse
ist praxistauglich
■ Anwendungen
Scheduling
Smoke Tests
Muen Separationskernel
Kryptographische Bibliotheken
| Folie 33 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Jobs
■ Wir suchen Informatiker in allen Karrierestufen
Werkstudenten
Bachelor- und Masterarbeiten
Graduierte
Berufserfahrene
| Folie 34 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Jobs
■ Wir suchen Informatiker in allen Karrierestufen
Werkstudenten
Bachelor- und Masterarbeiten
Graduierte
Berufserfahrene
■ Kultur
Flache Hierachien
Respekt vor anderen Persönlichkeiten
Hochmotivierte Teams
Spannende Themen
| Folie 34 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Jobs
■ Wir suchen Informatiker in allen Karrierestufen
Werkstudenten
Bachelor- und Masterarbeiten
Graduierte
Berufserfahrene
■ Kultur
Flache Hierachien
Respekt vor anderen Persönlichkeiten
Hochmotivierte Teams
Spannende Themen
■ Benefits
| Folie 34 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Jobs
■ Wir suchen Informatiker in allen Karrierestufen
Werkstudenten
Bachelor- und Masterarbeiten
Graduierte
Berufserfahrene
■ Kultur
Flache Hierachien
Respekt vor anderen Persönlichkeiten
Hochmotivierte Teams
Spannende Themen
■ Benefits
https://www.secunet.com/de/das-unternehmen/karriere/
| Folie 34 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
Tobias Philipp
tobias.philipp@secunet.com
Consultant
SINA Software Development and Verification
secunet Security Networks AG
Kurfürstenstrasse 58
45138 Essen
Germany
Phone +49 201 5454-3949
Fax +49 201 5454-1000
info@secunet.com

Weitere ähnliche Inhalte

Mehr von Tobias Philipp

An Expressive Model for Instance Decomposition Based Parallel SAT Solvers
An Expressive Model for Instance Decomposition Based Parallel SAT SolversAn Expressive Model for Instance Decomposition Based Parallel SAT Solvers
An Expressive Model for Instance Decomposition Based Parallel SAT SolversTobias Philipp
 
Unsatisfiability Proofs for Parallel SAT Solver Portfolios with Clause Sharin...
Unsatisfiability Proofs for Parallel SAT Solver Portfolios with Clause Sharin...Unsatisfiability Proofs for Parallel SAT Solver Portfolios with Clause Sharin...
Unsatisfiability Proofs for Parallel SAT Solver Portfolios with Clause Sharin...Tobias Philipp
 
A Verified Decision Procedure for Pseudo-Boolean Formulas
A Verified Decision Procedure for Pseudo-Boolean FormulasA Verified Decision Procedure for Pseudo-Boolean Formulas
A Verified Decision Procedure for Pseudo-Boolean FormulasTobias Philipp
 
PBLib - A Library for Encoding Pseudo-Boolean Constraints into CNF
PBLib - A Library for Encoding Pseudo-Boolean Constraints into CNFPBLib - A Library for Encoding Pseudo-Boolean Constraints into CNF
PBLib - A Library for Encoding Pseudo-Boolean Constraints into CNFTobias Philipp
 
The Complexity of Contextual Abduction in Human Reasoning Tasks
The Complexity of Contextual Abduction in Human Reasoning TasksThe Complexity of Contextual Abduction in Human Reasoning Tasks
The Complexity of Contextual Abduction in Human Reasoning TasksTobias Philipp
 
Checking Unsatisfiability Proofs in Parallel
Checking Unsatisfiability Proofs in ParallelChecking Unsatisfiability Proofs in Parallel
Checking Unsatisfiability Proofs in ParallelTobias Philipp
 
Formal Verification with Ada/SPARK
Formal Verification with Ada/SPARKFormal Verification with Ada/SPARK
Formal Verification with Ada/SPARKTobias Philipp
 
Formale Verifikation von Answer Set Programming
Formale Verifikation von Answer Set ProgrammingFormale Verifikation von Answer Set Programming
Formale Verifikation von Answer Set ProgrammingTobias Philipp
 

Mehr von Tobias Philipp (8)

An Expressive Model for Instance Decomposition Based Parallel SAT Solvers
An Expressive Model for Instance Decomposition Based Parallel SAT SolversAn Expressive Model for Instance Decomposition Based Parallel SAT Solvers
An Expressive Model for Instance Decomposition Based Parallel SAT Solvers
 
Unsatisfiability Proofs for Parallel SAT Solver Portfolios with Clause Sharin...
Unsatisfiability Proofs for Parallel SAT Solver Portfolios with Clause Sharin...Unsatisfiability Proofs for Parallel SAT Solver Portfolios with Clause Sharin...
Unsatisfiability Proofs for Parallel SAT Solver Portfolios with Clause Sharin...
 
A Verified Decision Procedure for Pseudo-Boolean Formulas
A Verified Decision Procedure for Pseudo-Boolean FormulasA Verified Decision Procedure for Pseudo-Boolean Formulas
A Verified Decision Procedure for Pseudo-Boolean Formulas
 
PBLib - A Library for Encoding Pseudo-Boolean Constraints into CNF
PBLib - A Library for Encoding Pseudo-Boolean Constraints into CNFPBLib - A Library for Encoding Pseudo-Boolean Constraints into CNF
PBLib - A Library for Encoding Pseudo-Boolean Constraints into CNF
 
The Complexity of Contextual Abduction in Human Reasoning Tasks
The Complexity of Contextual Abduction in Human Reasoning TasksThe Complexity of Contextual Abduction in Human Reasoning Tasks
The Complexity of Contextual Abduction in Human Reasoning Tasks
 
Checking Unsatisfiability Proofs in Parallel
Checking Unsatisfiability Proofs in ParallelChecking Unsatisfiability Proofs in Parallel
Checking Unsatisfiability Proofs in Parallel
 
Formal Verification with Ada/SPARK
Formal Verification with Ada/SPARKFormal Verification with Ada/SPARK
Formal Verification with Ada/SPARK
 
Formale Verifikation von Answer Set Programming
Formale Verifikation von Answer Set ProgrammingFormale Verifikation von Answer Set Programming
Formale Verifikation von Answer Set Programming
 

Anwendungen der Logik in der IT-Sicherheit

  • 1. Anwendungen der Logik in der IT-Sicherheit Tobias Philipp 27. Mai 2019, Formale Systeme, TU Dresden
  • 2. Agenda ■ Programmverifikation Why3, SMT, SPARK Aussagenlogische Resolution ■ Ausblick Interaktives Theorembeweisen Hardware Verifikation Runtime Verifikation ■ Zusammenfassung | Folie 2 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 4. Warum formale Verifikation? Binäre Suche ■ Erste Veröffentlichung 1946 | Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 5. Warum formale Verifikation? Binäre Suche ■ Erste Veröffentlichung 1946 ■ Erste korrekte Veröffentlichung 1962 | Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 6. Warum formale Verifikation? Binäre Suche ■ Erste Veröffentlichung 1946 ■ Erste korrekte Veröffentlichung 1962 ■ Implementierung in der Java Standard Bibliothek ist fehlerhaft 2006 Nearly All Binary Searches and Mergesorts are Broken, Joshua Bloch. Google Research Blog, 2006 | Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 7. Warum formale Verifikation? Binäre Suche ■ Erste Veröffentlichung 1946 ■ Erste korrekte Veröffentlichung 1962 ■ Implementierung in der Java Standard Bibliothek ist fehlerhaft 2006 Nearly All Binary Searches and Mergesorts are Broken, Joshua Bloch. Google Research Blog, 2006 int mid = (low + high) / 2; int midVal = a[mid]; | Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 8. Warum formale Verifikation? Binäre Suche ■ Erste Veröffentlichung 1946 ■ Erste korrekte Veröffentlichung 1962 ■ Implementierung in der Java Standard Bibliothek ist fehlerhaft 2006 Nearly All Binary Searches and Mergesorts are Broken, Joshua Bloch. Google Research Blog, 2006 int mid = (low + high) / 2; int midVal = a[mid]; ⇝ int mid = low + (high - low) / 2; int midVal = a[mid]; | Folie 4 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 9. Warum formale Verifikation? Softwarefehler … ■ treten häufig auf | Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 10. Warum formale Verifikation? Softwarefehler … ■ treten häufig auf ■ stören | Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 11. Warum formale Verifikation? Softwarefehler … ■ treten häufig auf ■ stören ■ können hohe Kosten verursachen | Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 12. Warum formale Verifikation? Softwarefehler … ■ treten häufig auf ■ stören ■ können hohe Kosten verursachen ■ können Menschenleben in Gefahr bringen | Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 13. Warum formale Verifikation? Softwarefehler … ■ treten häufig auf ■ stören ■ können hohe Kosten verursachen ■ können Menschenleben in Gefahr bringen Instead of debugging a program, one should prove that it meets its specification, and this proof should be checked by a computer program — John McCarthy, A Basis for a Mathematical Theory of Computation, 1961 | Folie 5 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 15. Why3 Logic Jean-Christophe Filliâtre: One Logic To Use Them All. In: CADE. Springer. 2013 ■ Terme 5int 3.14152real xθ if c then t else f match t with p1 → t1 | . . . | pn → tn end . . . ■ Formeln ■ Typ-Regeln ■ Semantik XZ,I int ∈ Z . . . | Folie 7 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 16. Theorembeweiser ■ Ansatz: Axiomatisierung Theorien in Prädikatenlogik ■ Probleme: Theorie reele Zahlen Theorie endlicher Bäume Theorie ganzer Zahlarithmetik mit Multiplikation Inakzeptable Performanz | Folie 8 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 17. Theorembeweiser ■ Ansatz: Axiomatisierung Theorien in Prädikatenlogik ■ Probleme: Theorie reele Zahlen Theorie endlicher Bäume Theorie ganzer Zahlarithmetik mit Multiplikation Inakzeptable Performanz Satisfiability Modulo Theories (SMT) Solver ■ Variablen repräsentieren Constraints über ganze Zahlen, Arrays, … ■ Theorie-Operationen wie Gleichheit, Addition, … ■ SAT-Solver interagiert mit Constraint Solver | Folie 8 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 18. HOL-Why3 Toolchain Quelldateien (*.ads, *.adb) | Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 19. HOL-Why3 Toolchain Quelldateien (*.ads, *.adb) gnatprove | Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 20. HOL-Why3 Toolchain Quelldateien (*.ads, *.adb) gnatprove Why3 files (*.mlw) | Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 21. HOL-Why3 Toolchain Quelldateien (*.ads, *.adb) gnatprove Why3 files (*.mlw) Why3 | Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 22. HOL-Why3 Toolchain Quelldateien (*.ads, *.adb) gnatprove Why3 files (*.mlw) Why3 HOL-Why3 files (*.xml) Alt-Ergo files… | Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 23. HOL-Why3 Toolchain Quelldateien (*.ads, *.adb) gnatprove Why3 files (*.mlw) Why3 HOL-Why3 files (*.xml) Alt-Ergo files… HOL-Why3 Wrapper Alt-Ergo | Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 24. HOL-Why3 Toolchain Quelldateien (*.ads, *.adb) gnatprove Why3 files (*.mlw) Why3 HOL-Why3 files (*.xml) Alt-Ergo files… HOL-Why3 Wrapper Alt-Ergo Theory files (*.thy) | Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 25. HOL-Why3 Toolchain Quelldateien (*.ads, *.adb) gnatprove Why3 files (*.mlw) Why3 HOL-Why3 files (*.xml) Alt-Ergo files… HOL-Why3 Wrapper Alt-Ergo Theory files (*.thy) HOL-Why3 | Folie 9 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 26. Ada / SPARK Ada ■ imperative Programmiersprache ■ strenge Typisierung ■ ausführbare Verträge SPARK ■ leicht verifizierbare Teilmenge von Ada ■ keine Pointer, keine dynamischen Datenstrukturen ■ gnatprove generiert Verifikationsbedingungen Programmintegrität Assertions, Schleifeninvarianten Vor- und Nachbedingungen | Folie 10 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 27. Überblick Quelldateien (*.ads, *.adb) gnatprove gprbuild VC Bericht Anwendung Wenn jede Verifikationsbedingung bewiesen ist, dann ■ wird kein Runtime-Fehler auftreten ■ erfüllt das Programm die Spezifikation | Folie 11 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 28. SPARK Checks ■ Informationsfluss ■ Aliasing ■ Programmintegrität ■ Spezifikationen | Folie 12 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 29. Aliasing ■ Aliasing Modifikationen einer Variable haben Einfluss auf andere ■ Pointer procedure Foo (A : in out A_Type) is procedure Helper (B : in out A_Type) is begin -- Helper has two variables: A and B, pointing to the same memory end Helper; begin Helper (B => A); end Foo; | Folie 13 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 30. Programmintegrität Laufzeitfehler sind Fehler während der Programmausführung: ■ array access errors, range violations, overflows, … | Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 31. Programmintegrität Laufzeitfehler sind Fehler während der Programmausführung: ■ array access errors, range violations, overflows, … type Nat_Array is array (Integer range <>) of Natural; A : Nat_Array (1 .. 10); I, J, P, Q : Integer; A (I + J) := P / Q; | Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 32. Programmintegrität Laufzeitfehler sind Fehler während der Programmausführung: ■ array access errors, range violations, overflows, … type Nat_Array is array (Integer range <>) of Natural; A : Nat_Array (1 .. 10); I, J, P, Q : Integer; A (I + J) := P / Q; Die folgenden Fehler können auftreten: ■ I+J kann überlaufen | Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 33. Programmintegrität Laufzeitfehler sind Fehler während der Programmausführung: ■ array access errors, range violations, overflows, … type Nat_Array is array (Integer range <>) of Natural; A : Nat_Array (1 .. 10); I, J, P, Q : Integer; A (I + J) := P / Q; Die folgenden Fehler können auftreten: ■ I+J kann überlaufen ■ I+J kann außerhalb des Indexbereiches von A sein | Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 34. Programmintegrität Laufzeitfehler sind Fehler während der Programmausführung: ■ array access errors, range violations, overflows, … type Nat_Array is array (Integer range <>) of Natural; A : Nat_Array (1 .. 10); I, J, P, Q : Integer; A (I + J) := P / Q; Die folgenden Fehler können auftreten: ■ I+J kann überlaufen ■ I+J kann außerhalb des Indexbereiches von A sein ■ P/Q kann überlaufen | Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 35. Programmintegrität Laufzeitfehler sind Fehler während der Programmausführung: ■ array access errors, range violations, overflows, … type Nat_Array is array (Integer range <>) of Natural; A : Nat_Array (1 .. 10); I, J, P, Q : Integer; A (I + J) := P / Q; Die folgenden Fehler können auftreten: ■ I+J kann überlaufen ■ I+J kann außerhalb des Indexbereiches von A sein ■ P/Q kann überlaufen ■ P/Q kann außerhalb des Element-Subtypen sein | Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 36. Programmintegrität Laufzeitfehler sind Fehler während der Programmausführung: ■ array access errors, range violations, overflows, … type Nat_Array is array (Integer range <>) of Natural; A : Nat_Array (1 .. 10); I, J, P, Q : Integer; A (I + J) := P / Q; Die folgenden Fehler können auftreten: ■ I+J kann überlaufen ■ I+J kann außerhalb des Indexbereiches von A sein ■ P/Q kann überlaufen ■ P/Q kann außerhalb des Element-Subtypen sein ■ Q kann Null sein | Folie 14 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 37. Spezifikationsfeatures – Überblick ■ Funktionale Ausdrücke ■ Vor- und Nachbedingungen ■ Ghost Code ■ Assertions ■ Schleifeninvarianten ■ Terminierung ■ Typinvarianten ■ Informationsflüsse ■ Zustandsabstraktionen ■ . . . | Folie 15 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 38. Funktionale Ausdrücke type Variable_Type is mod 2**64; type Literal_Type is record Polarity : Boolean; Variable : Variable_Type; end record; type Clause_Type is array (Natural range <>) of Literal_Type; function Compl (Literal : Literal_Type) return Literal_Type is ((Polarity => not Literal.Polarity, Variable => Literal.Variable)); function Appears (C : Clause_Type; L : Literal_Type) return Boolean is (for some Lp of C => L = Lp); function Resolve_Spec (C : Clause_Type; D : Clause_Type; L : Literal_Type; R : Clause_Type) return Boolean is ((for all Lp of C => (if Lp /= L then Appears (R, Lp))) and (for all Lp of D => (if Lp /= Compl (L) then Appears (R, Lp)))); | Folie 16 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 39. Vor- und Nachbedingungen function Resolve (C : Clause_Type; D : Clause_Type; L : Literal_Type) return Clause_Type with Pre => C'First = 0 and D'First = 0 and C'Last < 2**16 and D'Last < 2**16 and Appears (C, L) and Appears (D, Compl (L)), Post => Entails (C, D, Resolve'Result); | Folie 17 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 40. Ghost Code ■ Ghost Code wird wie normaler Code beim Beweisprozess behandelt ■ Ghost Code wird nicht kompiliert Ghost Code hat keinen Einfluss auf die reguläre Implementierung function Entails (C : Clause_Type; D : Clause_Type; R : Clause_Type) return Boolean with Ghost, Import; procedure Resolution_Lemma (C : Clause_Type; D : Clause_Type; L : Literal_Type; R : Clause_Type) with Ghost, Pre => Resolve_Spec (C, D, L, R), Post => Entails (C, D, R); | Folie 18 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 41. Assertions function Resolve (C : Clause_Type; D : Clause_Type; L : Literal_Type) return Clause_Type is Result : Clause_Type (0 .. C'Length + D'Length - 3); L_Pos : Natural := Get_Literal_Pos (C, L); Compl_L_Pos : Natural := Get_Literal_Pos (D, Compl (L)); begin Copy (Data => C, From => C'First, Length => L_Pos - C'First, Dest => Result, Index => Result'First); pragma Assert (for all I in C'First .. L_Pos - 1 => Result (I) = C (I)); ... pragma Assert (Resolve_Spec (C, D, L, Result)); Resolution_Lemma (C, D, L, Result); return Result; end Resolve; | Folie 19 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 42. Teil 2: Ausblick Interaktive Theorembeweiser Hardware Verifikation Runtime Verifikation
  • 43. Interaktive Theorem Beweiser ■ Peano-Axiome 0 ∈ N (∀n)(n ∈ N → s(n) ∈ N) (∀n)(n ∈ N → s(n) ̸= 0) (∀n)(∀m)(n, m ∈ N → (s(n) = s(m) → n = m)) “(∀X)(0 ∈ X ∧ (∀n)(n ∈ N → (n ∈ X → s(n) ∈ X)) → N ⊆ X)” ■ Prädikatenlogik ist nicht ausdrucksstark genug ⇝ Prädikatenlogik höherer Stufe (HOL) ■ Isabelle/HOL Definitionen / Axiome in HOL Funktionale Programme Eigenschaften interaktiv beweisen | Folie 21 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 44. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 45. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 46. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 47. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 48. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 49. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 50. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 51. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 52. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 53. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 54. Isabelle/HOL: Natürliche Zahlen | Folie 22 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 55. Isabelle/HOL: Prädikatenlogik | Folie 23 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 56. Isabelle/HOL: SPARK | Folie 24 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 57. Anwendungen Interaktive Theorembeweiser ■ Isabelle/HOL Offene Verifikationsbedingungen beweisen Formales Modell von Muen | Folie 25 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 58. Anwendungen Interaktive Theorembeweiser ■ Isabelle/HOL Offene Verifikationsbedingungen beweisen Formales Modell von Muen ■ Coq: 2005: CompCert: Verified optimizing C-Compiler 2008: 4-Color Theorem | Folie 25 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 59. Anwendungen Interaktive Theorembeweiser ■ Isabelle/HOL Offene Verifikationsbedingungen beweisen Formales Modell von Muen ■ Coq: 2005: CompCert: Verified optimizing C-Compiler 2008: 4-Color Theorem ■ ACL2 1995: Korrekheit Floating Point Divison vom AMD K5 (Pentium FDIV Bug) 2006: Eigenschaften der Sun Java Virtual Machine, Bytecode verifier | Folie 25 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 60. Anwendungen Interaktive Theorembeweiser ■ Isabelle/HOL Offene Verifikationsbedingungen beweisen Formales Modell von Muen ■ Coq: 2005: CompCert: Verified optimizing C-Compiler 2008: 4-Color Theorem ■ ACL2 1995: Korrekheit Floating Point Divison vom AMD K5 (Pentium FDIV Bug) 2006: Eigenschaften der Sun Java Virtual Machine, Bytecode verifier ■ F* 2017: HACL Cryptographic Library ⇝ HTTPS stack | Folie 25 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 61. Hardware Verifikation Quelldateien (*.vhd) | Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 62. Hardware Verifikation Quelldateien (*.vhd) Compiler | Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 63. Hardware Verifikation Quelldateien (*.vhd) Compiler Simulator | Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 64. Hardware Verifikation Quelldateien (*.vhd) Compiler Simulator Bounded Model Checker | Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 65. Hardware Verifikation Quelldateien (*.vhd) Compiler Simulator Bounded Model Checker SMT | Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 66. Hardware Verifikation Quelldateien (*.vhd) Compiler Simulator Bounded Model Checker SMT Beispiel: Register File https://github.com/tmeissner/formal_hw_verification Torsten Meißner | Folie 26 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 67. Hardware Verifikation: Frames | Folie 27 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 68. Hardware Verifikation: Lese-Beispiel (opcode 0x0) | Folie 28 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 69. Hardware Verifikation: Schreibe-Beispiel (opcode 0x1) | Folie 29 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 70. Hardware Verifikation: Prüfung Invarianten // SEND_HEADER -> SEND_DATA fsm_send_header_to_send_data_a : assert property ( s_fsm_state == `SEND_HEADER && DoutValid_o && DoutAccept_i && s_header[3:0] == `READ |=> s_fsm_state == `SEND_DATA ); | Folie 30 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 71. Runtime Verifikation ■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar. | Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 72. Runtime Verifikation ■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar. ■ Idee: Beweisen, dass ein Lauf abstrakte Eigenschaften erfüllt. | Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 73. Runtime Verifikation ■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar. ■ Idee: Beweisen, dass ein Lauf abstrakte Eigenschaften erfüllt. Eigenschaften Monitor System FeedbackEvents | Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 74. Runtime Verifikation ■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar. ■ Idee: Beweisen, dass ein Lauf abstrakte Eigenschaften erfüllt. Eigenschaften LTL, MSO, DL+CWA Monitor Automaten, Theorembeweiser, Prolog System FeedbackEvents | Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 75. Runtime Verifikation ■ Problem: Beweisen von Millionen Zeilen Code ist (noch) nicht machbar. ■ Idee: Beweisen, dass ein Lauf abstrakte Eigenschaften erfüllt. Eigenschaften LTL, MSO, DL+CWA Monitor Automaten, Theorembeweiser, Prolog System FeedbackEvents Beschreibung, Verarbeitung und Überprüfung clientseitiger Policies für vertrauenswürdige Cloud-Anwendungen, Jörg Kebbedies. Dresden University of Technology, 2018 | Folie 31 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 77. Zusammenfassung ■ Logik hilft bei der effizienten Softwareentwicklung ist zentral für Software Verifikation und Programmanalyse ist praxistauglich | Folie 33 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 78. Zusammenfassung ■ Logik hilft bei der effizienten Softwareentwicklung ist zentral für Software Verifikation und Programmanalyse ist praxistauglich ■ Anwendungen Scheduling Smoke Tests Muen Separationskernel Kryptographische Bibliotheken | Folie 33 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 79. Zusammenfassung ■ Logik hilft bei der effizienten Softwareentwicklung ist zentral für Software Verifikation und Programmanalyse ist praxistauglich ■ Anwendungen Scheduling Smoke Tests Muen Separationskernel Kryptographische Bibliotheken | Folie 33 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 80. Jobs ■ Wir suchen Informatiker in allen Karrierestufen Werkstudenten Bachelor- und Masterarbeiten Graduierte Berufserfahrene | Folie 34 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 81. Jobs ■ Wir suchen Informatiker in allen Karrierestufen Werkstudenten Bachelor- und Masterarbeiten Graduierte Berufserfahrene ■ Kultur Flache Hierachien Respekt vor anderen Persönlichkeiten Hochmotivierte Teams Spannende Themen | Folie 34 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 82. Jobs ■ Wir suchen Informatiker in allen Karrierestufen Werkstudenten Bachelor- und Masterarbeiten Graduierte Berufserfahrene ■ Kultur Flache Hierachien Respekt vor anderen Persönlichkeiten Hochmotivierte Teams Spannende Themen ■ Benefits | Folie 34 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 83. Jobs ■ Wir suchen Informatiker in allen Karrierestufen Werkstudenten Bachelor- und Masterarbeiten Graduierte Berufserfahrene ■ Kultur Flache Hierachien Respekt vor anderen Persönlichkeiten Hochmotivierte Teams Spannende Themen ■ Benefits https://www.secunet.com/de/das-unternehmen/karriere/ | Folie 34 | 27. Mai 2019 | Anwendungen der Logik in der IT-Sicherheit
  • 84. Tobias Philipp tobias.philipp@secunet.com Consultant SINA Software Development and Verification secunet Security Networks AG Kurfürstenstrasse 58 45138 Essen Germany Phone +49 201 5454-3949 Fax +49 201 5454-1000 info@secunet.com