• Keine Ergebnisse gefunden

Methodische Grundlagendes Software-Engineering

N/A
N/A
Protected

Academic year: 2022

Aktie "Methodische Grundlagendes Software-Engineering"

Copied!
22
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Willkommen zur Vorlesung

Methodische Grundlagen des Software-Engineering

im Sommersemester 2011 Prof. Dr. Jan Jürjens

TU Dortmund, Fakultät Informatik, Lehrstuhl XIV

(2)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

22. Kryptographische Protokolle:

Sicherheitsanalyse

(3)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Einordnung

Protokolle mit UMLsec

(4)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Einordnung

Einführung UML / UMLsec

Business Prozesse

Qualitätsmanagement

Testen

Sicherheit

Sicheres Software Design

Einführung UML / UMLsec

Kryptographische Protokolle

Biometrische Authentifizierung

Elektronische Geldbörse

Weitere Anwendungsbeispiele

(5)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Angreifer-Wissen

Gegeben sei die Menge als initiales Wissen eines

Angreifers des Typs A. Sei die Menge der Krypto- Terme, die aus der Menge von Krypto-Termen und aus den Ausdrücken, die nach der n+1sten Iteration des Protokolls empfangen wurden, durch Anwendung der

Krypto-Operationen gebildet werden kann.

Definition (Dolev, Yao 1982).

Ein Datenwert M bleibt vertraulich gegen einen Angreifer

des Typs A, wenn es kein n mit M gibt. ∈

(6)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Sicherheitsanalyse in Logik erster Stufe

Idee: Menge der Datenwerte, die der Angreifer möglicherweise kennenlernen kann, von oben approximieren.

Das logische Prädikat knows(E) bedeutet, dass der Angreifer den Ausdruck E während der Ausführung des Protokolls möglicherweise kennenlernen kann.

Für jedes Geheimnis s kann man dann überprüfen, ob knows(s) aus den logischen Formeln, die das Systemverhalten repräsentieren, abgeleitet

werden kann.

(7)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Sicherheitsanalyse:

Grundlegende Regeln

Für initiales Angreiferwissen (K

0

): Definiere Axiom knows(E) für jeden Datenwert E, der dem Angreifer initial bekannt ist (protokoll-spezifisch, z.B. K

A

, K

A-1

).

Modellieren, dass der Angreifer selber Krypto-Algorithmen einsetzen kann: Definiere Axiome:

∀ E

1

,E

2

.(knows(E

1

) knows(E

2

)

knows(E

1

::E

2

) knows({E

1

}

E2

)

knows(Dec

E2

(E

1

)) knows(Sign

E2

(E

1

))

knows(Ext

E2

(E

1

)))

∀ E.(knows(E) ⇒

knows(head(E)) knows(tail(E)))

(8)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Gegebenes Sequenzdiagramm für

o.g. Variante von TLS …

(9)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

… und Verteilungsdiagramm …

Abgeleitete Angreifer-Aktionen auf

Kommunikationsdaten: read, delete, insert.

(10)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

… Übersetzung in Logik erster Stufe

Gegeben eine Nachrichtenspezifikation

TR1=(in(msg_in),cond(msg_in),out(msg_out))

im Sequenzdiagramm, gefolgt von der Nachrichtenspezifikation TR2, ergibt Prädikat

PRED(TR1)= msg_in. [knows(msg_in) cond(msg_in) knows(msg_out)

PRED(TR2)]

(Annahme: Nachrichtenreihenfolge überprüft (!).)

Hohe Abstraktion (zum Beispiel vom Sender und Empfänger der

Nachrichten) mit dem Ziel einer effizienten automatischen Analyse.

Nachteil: Es können “falsch-positive“ Ergebnisse auftreten (d.h.

angebliche Angriffsmöglichkeiten, die sich bei näherer

Untersuchung als unpraktikabel herausstellen).

(11)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

knows(N) knows(K

C

) knows(Sign

KC-1

(C::K

C

))

∧ 8 init

1

,init

2

,init

3

.[knows(init

1

) knows(init

2

)

knows(init

3

) snd(Ext

init 2

(init

3

)) = init

2

knows({Sign

KS-1

(…)}

) [knows(Sign…)] ∧ .∀ resp

1

,resp

2

. […...]]

Beispiel:

TLS

Variante

(12)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Ausführung im Systemkontext

Aktivitätsdiagramm

(13)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Sicherheitsanforderungen an Daten

Klassendiagramm.

Frage: Vertraulichkeit von Sitzungsschlüssel s

bewahrt, d.h. knows(s) ableitbar ?

(14)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Überblick Variante von TLS:

Gesamtes Modell

(15)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Übersetzung in Logik in

Theorembeweiser-Notation I

(16)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Übersetzung in Logik in

Theorembeweiser-Notation II

(17)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Überraschung …

(18)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

… Was bedeutet das ?

Kann knows(s ) ableiten (!).

Daher: Protokoll bewahrt nicht die Vertraulichkeit des Sitzungsschlüssels s gegen Angreifer.

 Absolut unsicher in Bezug auf festgesetzte Ziele.

Aber wieso ?

Kann Angriffszenario mittels prologbasierten

Angriffsgenerator erzeugen.

(19)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Man-in-the-Middle Angriff

(20)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Korrigiertes Protokoll

Analyse: knows(s) nicht ableitbar, d.h. Vertraulichkeit von s

bewahrt.

(21)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Zusammenfassung

TLS-Variante

Protokollmodellierung

Sicherheitsanalyse

Korrigierte Version

(22)

Methodische Grundlagen Methodische Grundlagen des Software-Engineering des Software-Engineering

SS 2011 SS 2011

Referenzen

ÄHNLICHE DOKUMENTE

− Es gibt Querschnittsmodule (z.B. Dokumentation), die allgemeine Anforderungen über alle Module definieren.. Methodische Grundlagen Methodische Grundlagen des

● Ist ein Prozessbereich abgedeckt, ist seine Fähigkeitsstufe die höchste Stufe, deren generische und spezifische Ziele durch die Prozesse und Praktiken der Organisation

Inkorrektes Teilprogramm (z.B. mit inkorrekter Anweisung oder Datendefinition), das Ursache für eine Fehlerwirkung sein kann.. Zustand eines (Software-)Produkts oder einer

Nicht immer können Fehlerzustände nachgewiesen werden, oft wird in diesem Zusammenhang dann ebenfalls von Anomalien oder.

● Diese zentrale Frage beantwortet das Diagramm:. − Aus welchen Klassen besteht mein System und wie stehen diese untereinander

• Zugangberechtigte Person erhält Zutritt unter fremder Identität. • Person ohne Zugangsberechtigung erhält

Kartenbesitzer: Wenn Karte laut Log-Daten mit dem Betrag m aufgeladen wurde, kann der Kartenbesitzer dem Karten-Emittenten beweisen, dass der. Ladestation-Betreiber ihm

Abschlussarbeiten können auch in inhaltlicher Beziehung zu einer Hiwi- Tätigkeit am Fraunhofer ISST oder LS 14 / TUD durchgeführt werden. Informationen