Policy-Überwachung mit besonderer Betrachtung unvollständiger

Werbung
Seminararbeit
Policy-Überwachung mit
besonderer Betrachtung
unvollständiger Logs
Tobias Görgen
27. Januar 2014
Gutachter: Prof. Dr. Jan Jürjens
Dr. Sven Wenzel
Prof. Dr. Jan Jürjens Lehrstuhl 14 Software Engineering
Fakultät Informatik
Technische Universität Dortmund
Otto-Hahn-Straße 14
44227 Dortmund
http://www-jj.cs.uni-dortmund.de/secse
Tobias Görgen
[email protected]
Matrikelnummer: 133522
Studiengang: Master Informatik
Seminar Sicherheit und Softwareengineering
Thema: Policy-Überwachung mit besonderer Betrachtung unvollständiger Logs
Eingereicht: 27. Januar 2014
Betreuer: Thorsten Humberg
Prof. Dr. Jan Jürjens Lehrstuhl 14 Software Engineering
Fakultät Informatik
Technische Universität Dortmund
Otto-Hahn-Straße 14
44227 Dortmund
i
ii
iii
Ehrenwörtliche Erklärung
Ich erkläre hiermit ehrenwörtlich, dass ich die vorliegende Arbeit selbstständig angefertigt habe; die aus fremden Quellen direkt oder indirekt übernommenen Gedanken
sind als solche kenntlich gemacht.
Die Arbeit wurde bisher keiner anderen Prüfungsbehörde vorgelegt und auch noch
nicht veröffentlicht.
Dortmund, den 27. Januar 2014
Tobias Görgen
iv
INHALTSVERZEICHNIS
v
Inhaltsverzeichnis
1 Einleitung
2 Der Reduce-Algorithmus
2.1 Logik des Algorithmus . . . . . . . . .
2.1.1 Definition . . . . . . . . . . . .
2.1.2 Beispiel . . . . . . . . . . . . .
2.2 Teilstrukturen und deren Semantik . .
2.2.1 Definition Teilstruktur . . . . .
2.2.2 Semantik . . . . . . . . . . . .
2.3 Der Algorithmus . . . . . . . . . . . .
2.3.1 Definition des Algorithmus . . .
2.3.2 Anwendung auf ein Beispiel . .
2.3.3 Eigenschaften des Algorithmus .
2.4 Implementierung . . . . . . . . . . . .
2.5 Zwischenfazit . . . . . . . . . . . . . .
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Temporale Logiken als Mittel zur Überwachung von Policys
Laufzeit
3.1 Grundlagen: Lineare temporale Logik . . . . . . . . . . . . . . . .
3.2 Ansätze zur Erweiterung der LTL . . . . . . . . . . . . . . . . . .
3.2.1 Metrische temporale Logik M T L . . . . . . . . . . . . . .
3.2.2 Temporale Prädikatenlogik LCV . . . . . . . . . . . . . . .
3.2.3 Lineare temporale Logik ALC . . . . . . . . . . . . . . . .
3.3 Zwischenfazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
3
. 3
. 3
. 4
. 5
. 5
. 5
. 6
. 7
. 8
. 9
. 10
. 11
zur
.
.
.
.
.
.
.
.
.
.
.
.
13
13
14
14
15
15
15
4 Policy-Spezifizierung sowie -Analyse
17
4.1 Ansatz mit Identifizierung des Verursachers . . . . . . . . . . . . . . 17
4.2 PrivacyLFP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 HIPAA-Formulierung mittels Prolog-Ansatz . . . . . . . . . . . . . . 18
5 Zusammenfassung und Fazit
21
Literaturverzeichnis
23
vi
INHALTSVERZEICHNIS
KAPITEL 1. EINLEITUNG
1
1
Einleitung
In Zeiten, in denen Technologie immer mehr Einfluss auf das Leben der Menschen
nimmt und besonders auch immer weiter in Bereiche eindringt, in denen sie nicht beheimatet ist, sondern nur als Hilfsmittel benutzt wird, wächst auch stetig der Wunsch
nach Datenschutz und besonders nach einheitlichen Richtlinien (im weiteren Verlauf
der Arbeit als Policys bezeichnet). Besonders in Bereichen in denen sehr sensible private Daten vorherrschen und übermittelt werden, muss es klare, die Daten schützende Regelungen geben. Solche Bereiche sind zum Beispiel der Gesundheitssektor oder
der Finanzsektor. Patientendaten, wie Informationen über Behandlungen oder die
Krankenhistorie einer Person, sind hochgradig persönliche Daten und dürfen nicht
einfach weitergegeben werden. Durch das Wachstum der Informationstechnologie ist
das Übermitteln von Krankenakten erheblich vereinfacht worden. So ermöglichen es
beispielsweise E-Mails innerhalb von Sekunden eine große Menge Daten von Krankenhaus zu Krankenhaus zu schicken. Ob eine solche Transaktion immer notwendig
oder gar gestattet ist, ist eine wichtige Frage, die der Datenschutz klären muss.
Auf Grund dieser Herausforderung hat beispielsweise die US-Regierung im Jahr 1996
den The Health Insurance Portability and Accountability Act of 1996“([Con96])
”
verabschiedet, welcher umfangreiche Policys für den Umgang mit privaten Daten im
Gesundheitssektor festlegte. Für den Finanzsektor folgte im Jahr 1999 der Gramm”
Leach–Bliley Act“([Con99]). Aufgrund des Umfangs dieser Policys entstand der
Wunsch Verstöße gegen diese automatisiert zu erkennen, sprich es gab Bedarf für
eine automatisierte Überwachung der Einhaltung.
Diese Ausarbeitung beschäftigt sich mit der Überwachnung von eben solchen Policys. Ein Algorithmus, der speziell auf den HIPAA zugeschnitten ist, ist hierbei
der Reduce-Algorithmus aus Policy Auditing over Incomplete Logs: Theory, Im”
plementation and Applications“[GJD11]. Nach dieser Einleitung wird er im Details
besprochen und es wird erläutert, was die Vorzüge dieses Algorithmus sind. Der
Reduce-Algorithmus zielt dabei besonders auf die Überwachung von unvollständigen Logs ab, sprich Log-Daten, in denen gewisse Informationen aus unterschiedlichen
Gründen noch nicht vorhanden sind. In der Realität sind solche unvollständigen Logs
weit verbreitet, wobei die Gründe für solche Unvollständigkeiten unterschiedlich sein
können. Deshalb hat diese Problemstellung eine besondere praktische Relevanz. Der
Reduce-Algorithmus geht dabei iterativ vor und hat als Ziel eine Policy immer weiter zu reduzieren, bis eine Verletzung der Policy auftaucht oder die Einhaltung der
Policy bestätigt werden kann.
Im darauf folgenden Abschnitt wird sich mit anderen Ansätzen aus der wissenschaftlichen Literatur beschäftigt, die auf dem Einsatz von linearen temporalen Logiken
beziehungsweise Erweiterungen darauf basieren. Hier werden insbesondere drei An-
2
sätze besprochen, die die weit verbreitete lineare temporale Logik als Basis benutzen
und erweitern, um Logs zur Laufzeit auszuwerten, was ein Unterschied zum ReduceAlgorithmus darstellt. Quellen für diese drei Ansätze sind insbesondere Monitoring
”
Algorithms for Metric Temporal Logic Specifications“[TR05], Run-Time Checking
”
of Dynamic Properties“[Sok+06] und Runtime Verification Using a Temporal Des”
cription Logic“[BBL09].
Im nächsten Abschnitt wird sich dann nochmal mit Methoden zur Policy-Spezifizierung auseinander gesetzt. Unter anderem wird ein Algorithmus aus Privacy and
”
Utility in Business Processes“[Bar+07] vorgestellt, der neben einer Policyverletzung
auch den Verursacher eben jener identifizieren kann. Außerdem erfolgt noch eine
kurze Vorstellung der P rivacyLF P 1 , welches die Logik ist, die von den Autoren des
Reduce-Algorithmus entwickelt wurde zur Formalisierung von Policys im amerikanischen Gesundheitssystem. Diese wurde in Experiences in the Logical Specification
”
of the HIPAA and GLBA Privacy Laws“[DeY+10] entwickelt und die Anwendung
auf eben jene Policys illustriert. Als alternativer Ansatz zur Formalisierung einer
Policy wird der Ansatz aus A Formalization of HIPAA for a Medical Messaging
”
System“[LMS07] dargestellt, der als Basis Formeln aus der logischen Programmiersprache Prolog benutzt.
Zum Schluß wird ein Fazit gezogen und die vorgestellten Techniken noch einmal
miteinander in Beziehung gesetzt.
1
Privacy Fixed Point Logic
KAPITEL 2. DER REDUCE-ALGORITHMUS
2
3
Der Reduce-Algorithmus
In diesem Kapitel wird der Reduce-Algorithmus aus der Primärquelle [GJD11] besprochen. Der Reduce-Algorithmus soll dabei besonders zwei praxisrelevante Probleme lösen, welche auch im Zusammenhang mit den HIPAA und GLBA-Policys
auftauchen. Diese sind zum einen unvollständige Logs und zum anderen Policys
mit unendlichen Domänen. Der Algorithmus ist durch Ideen der logischen Programmierung inspiriert, in welchen quantifizierte Formeln durch gewisse Bedingungen
beschränkt werden. Im ersten Teil wird die Idee des Algorithmus wiedergegeben
und die Logik vorgestellt, auf welcher der Algorithmus arbeitet. Das Ganze wird
anhand eines übergreifenden Beispiels veranschaulicht. Daraufhin wird sich sowohl
mit der räumlichen und zeitlichen Komplexität auseinander gesetzt, als auch mit
Faktoren wie Terminierung, Korrektheit und Minimalität. Zusätzlich findet eine Betrachtung der tatsächlichen Implementierung des Algorithmus statt. Hierbei wird
auf die unterschiedlichen Komponenten wert gelegt, die die Implementierung bilden.
2.1 Logik des Algorithmus
In diesem Abschnitt wird die Logik des Algorithmus dargestellt. Zuerst wird diese
Logik definiert und anschließend wird ein Beispiel zum besseren Verständnis gegeben.
(vgl [GJD11, S.2])
2.1.1 Definition
Der Reduce-Algorithmus ist ein iterativer Algorithmus. Das bedeutet, er verarbeitet
eine Policy zu einer neuen Policy und reduziert diese dabei so weit wie die vorhandenen Informationen es zulassen. Hierbei wird erwartet, dass die Policy in Form einer
Prädikatenlogik erste Stufe dargestellt werden kann, die aus folgenden Elementen
besteht:
Atome
P := p(t1 , . . . , tn )
Formeln
ϕ := P |>|⊥|ϕ1 ∨ ϕ2 |ϕ1 ∧ ϕ2 |∀~x.(c ⊃ ϕ)|∃~x.(c ∧ ϕ)
Restriktionen c := P |>|⊥|c1 ∨ c2 |c1 ∧ c2 |∃x.c
Prädikate p sind hierbei Relationen zwischen Termen, während Terme wiederum
Variablen und Konstanten darstellen oder zu uninterpretierten Funktionssymbolen
hinzugezogen werden. Ein Prädikat wird einer Liste von Termen t1 , . . . , tn zugeordnet. Die bekannten logischen Operatoren haben hier ihre gewöhnliche Bedeutung.
Allerdings werden die Quantoren durch den Einsatz von Restriktionen auf eine ge-
4
2.1. LOGIK DES ALGORITHMUS
wisse Form beschränkt. ∀~x.(c ⊃ ϕ)1 wird wahr definiert genau dann, wenn alle
Instanzen von ~x, die die Restriktion c befriedigen, auch ϕ befriedigen. Genau so
ist ∃~x.(c ∧ ϕ) wahr, genau dann wenn eine Belegung ~x existiert, die sowohl c als
auch ϕ wahr macht. Um die Terminierung des Algorithmus zu gewährleisten, wird
zusätzlich benötigt, dass nur eine endliche Anzahl von Substituten für quantifzierte
Variablen die Restriktionen wahr machen.
In der Logik wird aus technischen Gründen auf Negationen verzichtet. Im Gegenzug
wird angenommen, dass es zu jedem Prädikat p ein duales Prädikat p, gibt mit:
p(t1 , . . . , tn ) = > ⇔ p(t1 , . . . , tn ) = ⊥. Daraus wird ein duales ϕ definiert, was sich
analog zu der klassischen Negation verhält. So gilt beispielsweise das De Morgansche
Gesetz oder die Umkehr von Quantoren bei Einsatz der dualen Formel.
Um eine zeitliche Komponente einzufügen wird aus der Domäne von ganzen Zahlen
durch τ ein Zeitpunkt in einem Prädikat dargestellt, an dem ein mögliches Ereignis
stattgefunden haben kann. Sowohl LTL2 als auch die Erweiterung TPTL3 können in
diese Logik überführt werden, damit wird sich aber später weiter beschäftigt. (vgl
[GJD11, S.2])
2.1.2 Beispiel
Da der Algorithmus insbesondere für Policys im amerikanischen Gesundheitssystem
entwickelt wurde findet das Beispiel auch im Universum des Gesundheitssystem
statt. Die zu erstellende Policy sieht in Sprachform ausgedrückt wie folgt aus. Eine
Entität darf den Gesundheitsbericht (privat) nur an eine andere Entität schicken,
wenn die empfangende Entität der Arzt des Individuums und der Verwendungszweck
die Behandlung ist oder wenn das Individuum der Übertragung vorher zugestimmt
hat. Diese Aussage umgewandelt in die Logik sieht wie folgt aus:
ϕpol =
∀p1 , p2 , m, u, q, t, τ.(sende(p1 , p2 , m, τ ) ∧ zweck(m, u) ∧ markiert(m, q, t))
⊃ attr in(t, privat) ∨ (arztV on(p2 , q, τ ) ∧ zweck in(u, Behandlung))
∨ ∃τ 0 .(τ 0 < τ ∧ hatZugestimmt(q, sendeHandlung(p1 , p2 , (q, t)), τ 0 ))
Die Formel ist auf den ersten Blick sicherlich nicht sehr einsichtig. Deshalb wird
sie nun im Details betrachtet: Am Anfang der Formel befindet sich der Allquantor.
Hier stehen p1 und p2 für die schickende und die empfangende Entität. Die Variable
m steht für eine Nachricht. u stellt den Sendezweck dar und q ist das Indivduum
dessen Informationen verschickt werden. t ist ein Attribut mit dem eine Nachricht
versehen sein kann.
Darauf folgt das Prädikat sende(p1 , p2 , m, τ ), welches wahr ist, wenn im Log ein
Eintrag steht, der besagt, dass die Nachricht m von Entität p1 zu p2 zum Zeitpunkt
τ geschickt wurde. Das Prädikat zweck(m, u) wird wahr, wenn die Nachricht m mit
dem Zweck u versehen ist. Das Prädikat markiert(m, q, t) heißt, dass die Nachricht
m mit dem Attribut t von Individuum q markiert ist. Die beiden Prädikate attr in
und zweck in sind spezielle Prädikate, die davon ausgehen, dass die Attribute und
Zwecke eine Hierarchie haben. So ist zum Beispiel das Attribut Medikation im Attri1
Mit ⊃ wird in [GJD11] die Implikation bezeichnet, statt dem oft benutzten Pfeil →
Lineare temporale Logik
3
Gezeitete lineare temporale Logik
2
KAPITEL 2. DER REDUCE-ALGORITHMUS
5
but Krankengeschichte enthalten (also ist attr in(M edikation, Krankengeschichte)
wahr). Für den Zweck wäre ein Beispiel: zweck in(Operation, Behandlung). Das
Prädikat arztV on(p2 , q, τ ) ist wahr, wenn p2 Arzt von q zum Zeitpunkt τ ist. Zu guter Letzt bedeutet hatZugestimmt(q, sendeHandlung(p1 , p2 , (q, t)), τ 0 ), dass q der
Sendehandlung zum Zeitpunkt τ 0 zugestimmt hat.
In Worten formuliert kann man die Policy also zusammenfassen: Wenn p1 an p2
Nachricht m zum Zeitpunkt τ sendet, dann ist das Attribut t nicht privat oder p2
ist zu dem Zeitunkt Arzt von q oder q hat dem Senden vorher zugestimmt.
Die Werte von Prädikaten können auf unterschiedliche Art und Weise ermittelt
werden. Möglich sind zum Beispiel Nutzereingaben oder Werte in Datenbanken, die
sagen, ob ein Prädikat mit den passenden Eingaben wahr ist. Genauer betrachtet
wird dies im Abschnitt über die Implementierung des Algorithmus. (vgl [GJD11,
S.3])
2.2 Teilstrukturen und deren Semantik
Nachdem im vorherigen Abschnitt die Logik präsentiert wurde, auf welcher der
Reduce-Algorithmus arbeitet, wird sich in diesem Kapitel mit Teilstrukturen auseinandergestzt. Teilstrukturen sind hierbei die Informationen, die der Algorithmus
benötigt, um eine Policy zu reduzieren.
2.2.1 Definition Teilstruktur
Sei D eine (unendliche) Domäne von Termen, dann heißt L Teilstruktur, wenn es
eine Abbildung von den Atomen über D auf die Menge {tt, f f, uu} ist. Das Atom
P wird als wahr, falsch oder unbekannt in L bezeichnet, wenn L(P ) tt, f f oder uu
ist. Durch die mögliche Abbildung auf uu wird die Unvollständigkeit von Logs zum
Zeitpunkt der Überprüfung dargestellt. Teilstrukturen decken damit drei Arten von
Unvollständigkeit ab (vgl [GJD11, S.3]):
• zukünftige Unvollständigkeit - zukünftige Ereignissen können nicht verfügbar
sein für einen Algorithmus zur Überprüfung des Logs
• Unvollständigkeit durch räumliche Trennung - Daten, die das Überwachungssystem benötigt, können an unterschiedlichen physikalischen Orten liegen
• subjektive Unvollständigkeit - manche Daten müssen durch Benutzereingabe
abgefragt werden. Der Nutzer ist aber nicht allwissend. Hierdurch kann es zu
Unvollständigkeiten kommen.
2.2.2 Semantik
Im folgenden wird die Semantik auf Teilstrukturen formalisiert. Diese geschieht mittels der Relation L ϕ, was bedeutet, dass ϕ in der Struktur L wahr ist. Für diese
Relation gilt:
• L P gdw. L(P ) = tt
6
2.3. DER ALGORITHMUS
• L>
• L ϕ ∨ ψ gdw. L ϕ oder L ψ
• L ϕ ∧ ψ gdw. L ϕ und L ψ
• L ∀~x.(c ⊃ ϕ) gdw. für alle ~t ∈ D gilt entweder L c[~t/~x] oder L ϕ[~t/~x]
• L ∃~x.(c ∧ ϕ) gdw. ein ~t ∈ D existiert mit: L c[~t/~x] und L ϕ[~t/~x]
Für duale Atome gilt: L(P ) = L(P ), mit tt = f f , f f = tt und uu = uu. Eine
Formel ϕ ist falsch in L, wenn L ϕ.
Diese Semantik efüllt diese zwei Eigenschaften:
1. Konsistenz: Eine Formel ϕ kann nicht gleichzeitig wahr und falsch in L sein
2. Unvollständigkeit: Eine Formel ϕ kann weder wahr noch falsch sein in L
System-Logs erweitern sich im Laufe der Zeit immer weiter. Daraus folgt, dass sich
die Informationen, die ein Log beinhaltet immer vergrößern. Daraus ergibt sich eine
Halbordnung auf den Teilstrukturen. L1 ≤ L2 (L2 erweitert L1 ) bedeutet, dass L2
mehr Informationen enthält als L1 , aber alle Informationen bis auf Ungewissheit in
L1 auch in L2 gelten. Formal gilt: L1 ≤ L2 , wenn für alle Atome P , die keine freien
Variablen haben, gilt: L1 (P ) ∈ {tt, f f } =⇒ L2 (P ) = L1 (P )
Es ist leicht zu sehen, dass die Erweiterungsrelation monton ist: Aus L1 ≤ L2 und
L1 (P ) ϕ folgt, dass L2 (P ) ϕ gilt. (vgl [GJD11, S.4])
2.3 Der Algorithmus
Der grundlegende Gedanke des Algorithmus ist es durch Iteration eine Policy immer
weiter zu reduzieren bis als Ergebnis eines Reduce-Aufrufes eine Verletzung (⊥) oder
keine Verletzung (>) festgestellt werden kann. Eine einzelne Iteration wird hierbei
bezeichnet als reduce(L, ϕ) = ψ. Das Ergebnis ψ eines solchen Aufrufs ist immer eine
Restpolicy, die aus den Teilen von ϕ besteht, welche durch den Reduce-Algorithmus
noch nicht verifiziert werden konnten. Durch Erweiterung von L auf L0 kann man
mit einer erneuten Iteration eine neue Policy generieren, die wieder kleiner ist.
Dabei soll der Algorithmus drei Eigenschaften erfüllen:
• Terminierung: Jede Iteration terminiert.
• Korrektheit: Sei reduce(L, ϕ) = ψ, dann gilt: ∀L0 ≥ L : L0 ϕ ⇔ L0 ψ
• Minimalität: Sei reduce(L, ϕ) = ψ, dann gibt es ein Atom P nur in ψ, wenn
es auch in ϕ ist und L(P ) = uu
Besonders problematisch an der Realisierung des Algorithmus ist der Umgang mit
den Quantoren über unendlichen Domänen. Ein naiver Algorithmus würde bei einem Quantor über eine unendliche Domäne oft nicht terminieren. Da es unendliche
Domänen gibt (z.B. bei einer Quantifizierung über die unendliche Domäne aller
Nachrichten), besteht die Notwendigkeit der Restriktionen, die dafür sorgen, dass
KAPITEL 2. DER REDUCE-ALGORITHMUS
7
die Anzahl der relevanten Instanzen x, die als Kandidaten für die jeweilige Formel
in Frage kommen, endlich ist. Durch den Einsatz von Techniken der Mode Analyse
aus der logischen Programmierung, ist es möglich die Restriktionen auf eine endliche Anzahl befriedigender Instanzen zu begrenzen und diese zu berechnen. Um
die Mode Analyse einzusetzen, muss bei Prädikaten angegeben werden, welche sich
endlich berechnen lassen und welche nicht. So wäre beim Beispiel bei zweck(m, u)
die Nachricht m über eine unendliche Domäne zu bekommen, während der Zweck u
aus der Nachricht berechenbar ist. Benötigte Eingaben werden hier mit einem + gekennzeichnet, während berechenbare Ausgaben mit einem - gekennzeichnet werden.
Für Zweck wäre also eine passende Kennzeichnung zweck(+, −).
Durch Anwendung eines Mode Checks bei angegebenen Mode Informationen kann
innerhalb von linearer Zeit garantiert werden, dass es eine endliche Anzahl freier
Variablen gibt, die eine Restriktion befriedigen.
Für die tatsächliche Berechnung der befriedigenden Belegungen einer Restriktion
c
wird die Funktion sat(L,
c) definiert, die alle Substitute σ berechnet, so dass L cσ,
mit der Annahme, dass eine Funktion sat(L, P ) alle Substitute σ für freie Variablen
in P berechnet, so dass L P σ. (vgl [GJD11, S.4])
2.3.1 Definition des Algorithmus
In Abbildung 2.1 ist die Definition des Reduce-Algorithmus dargestellt.
Abbildung 2.1: Definition des Reduce-Algorithmus aus [GJD11, S.5]
8
2.3. DER ALGORITHMUS
Wie bereits erwähnt ist das Vorgehen basiert auf einer iterativen Reduktion der
Policys. Geht man von einer Startpolicy ϕ0 und einer Sequenz L1 ≤ L2 ≤ . . . Ln , die
man iterativ auf die entstehenden Policys anwendet so ergeben sich ϕ1 , ϕ2 , . . . , ϕn ,
L1
L2
so dass reduce(Li , ϕi−1 ) = ϕi . Dieser Prozess lässt sich schreiben als ϕ0 −→
ϕ1 −→
Ln
ϕn .
. . . −→
Bei Atomen entspricht das Verhalten eines Aufrufs des Reduce-Algorithmus den Erwartungen. So ergibt
reduce(L, P ) >, ⊥ oder P , wenn L(P ) tt,f f oder uu entspricht. Auch die Verknüpfungen ∨ und ∧, sowie > und ⊥ werden wie gewöhnlich berechnet. Die interessanteren Fälle sind eindeutig, die letzten beiden, wobei diese analog zueinander verlaufen.
c
Um reduce(∀~x.(c ⊃ ϕ)) zu berechnen, wird zuerst mittels Aufruf von sat(L,
c), die
endliche Menge aller befriedigenden Instanzen ~x der Restriktion c berechnet. Für
jede dieser Instanzen t~1 , . . . , t~n wird jetzt ϕ[~ti /~x] durch einen rekursiven Aufruf des
Reduce-Algorithmus zu ψi reduziert. Da alle Instanzen von ϕ halten müssen, ist die
Ausgabe folglich ψ1 ∧ · · · ∧ ψ1 ∧ ψ 0 , wobei ψ 0 der Tatsache geschuldet ist, dass andere
Instanzen von ~x als t~1 , . . . , t~n nicht betrachtet wurden. Solche Instanzen können in
Erweiterungen von L enthalten sein. Für ∃~x.(c ∧ ϕ) verhält sich der Algorithmus
analog.
c
Wie bereits erwähnt berechnet die Funktion sat(L,
c) die Menge der befriedigenden
c
Substitute für die Restriktion c. Dabei ist sat wie folgt definiert:
c
sat(L,
p(t1 , . . . , tn )) = sat(L, p(t1 , . . . , tn ))
c
sat(L, >)
= {•}
c
sat(L,
⊥)
= {}
S
c
c
σ + sat(L,
c2 σ)
sat(L,
c1 ∧ c2 )
=
c
σ∈sat(L,c
1)
c
c
c
sat(L,
c1 ∨ c2 )
= sat(L,
c1 ) ∪ sat(L,
c2 )
c
c
sat(L,
∃x.c)
= sat(L,
c)\{x} (x frisch)
c
c
Da > immer wahr sein muss, enthält sat(L,
>) nur die leere Substitution •. sat(L,
⊥)
ist die leere Menge, da es keine Substitution geben kann, die ⊥ befriedigt. Für
c1 ∧ c2 nimmt man die befriedigen Instanzen von c1 und verbindet sie mit den
befriedigenden Instanzen von c2 σ. Bei c1 ∨ c2 handelt es sich um die Vereinigung der
beiden befriedigenden Mengen. Die befriedigenden Instanzen von ∃x.c ergeben sich
durch Herausnehmen der Substituten von x. (vgl [GJD11, S.5])
2.3.2 Anwendung auf ein Beispiel
Im Folgenden werden Teilstrukturen mittels des Reduce-Algorithmus auf das Beispiel aus Abschnitt 2.1.2 angewendet. Zur besseren Übersicht sei ~x fest definiert
als Sequenz p1 , p2 , m, u, q, t, τ und c(~x) und ϕ(~x) sind durch Pattern Matching
die Formeln, die ϕ = ∀~x.(c(~x) ⊃ ϕ(~x)) befriedigen. Desweiteren seien noch ϕ2 und
ϕ3 durch Pattern Matching definiert als ϕ(~x) = attr in(t, privat) ∨ ϕ2 (p2 , q, τ, u) ∨
ϕ3 (τ, q, p1 , p2 , t). Sei L eine Teilstruktur, die die folgenden Informationen enthält:
1. Alice sendet an Bob die Nachricht M zum Zeitpunkt 4. Die Nachricht ist
markiert, dass sie Informationen über Charlie’s Adresse enthält mit dem Zweck
der Bezahlung.
KAPITEL 2. DER REDUCE-ALGORITHMUS
9
2. Charlie hat diese Übertragung zum Zeitpunkt 2 gestattet.
Aus diesen Informationen folgt:
c
sat(L,
c(~x)) = {σ}, mit σ = [σ → (Alice, Bob, M, Bezahlung, Charlie, Adresse, 4].
Jetzt wird die Definition des Reduce-Algorithmus auf ϕpol angewendet. Das ergibt
reduce(L, ϕpol ) = ψ1 ∧ ϕ0pol , mit ψ1 = reduce(L, ϕ(~xσ)) und ϕ0pol = ∀~x.(c(~x) ∧ ~x ∈
/
{σ}) ⊃ ϕ(~x).
Da ϕ(~x) eine Disjunktion von drei Formeln ist, wo die dritte ϕ3 ist, kann durch
Anwendung von 2. gezeigt werden, dass reduce(L, ϕ3 (τ, q, p1 , p2 , t)) als Ergebnis >
hat. Das bedeutet, dass es bis hierhin kein Verletzung der Policy gab und wir durch
Anwendung des Algorithmus die Restpolicy ϕ0pol erhalten haben.
Nun wird eine Erweiterung der Teilstruktur L betrachtet, so dass wir mit neuen
Informationen L0 ≥ L erhalten und diese neue Teilstruktur auf die Restpolicy anwenden können. Es kommen die drei folgenden neuen Informationen hinzu.
3. Alice sendet an Bob die Nachricht M’ zum Zeitpunkt 5. Die Nachricht ist
markiert, dass sie Informationen über Dan’s Laborbericht enthält mit dem
Zweck der Operation.
4. L0 (hatZugestimmt(Dan, a, τ 0 )) = f f für jede Handlung a und jede beliebige
Zeit τ 0 , also ist auch insbesondere der Nachricht von Alice nicht zugestimmt
worden
5. L0 (ArztV on(Bob, Dan, 5)) = f f , also ist Bob zum Zeitpunkt 5 nicht der Arzt
von Dan
Daraus folgt: ϕ0pol = ∀~x.(c(~x) ∧ ~x ∈
/ {σ}) ⊃ ϕ(~x) war die in der ersten Iteration
0
c 0 , c0 (~x)) = {σ 0 } und
ermittelte Restpolicy. Sei nun c (~x) = c(~x) ∧ ~x ∈
/ {σ}, mit sat(L
σ 0 = [~x → (Alice, Bob, M’, Operation, Dan, Laborbericht,5)]. Durch Anwenden des
Reduce-Algorithmus berechnet sich folgendes: reduce(L0 , ϕ0pol ) = ψ2 ∧ ϕ00pol , mit ψ2 =
reduce(L0 ϕ(~x)σ 0 ), während ϕ00pol für andere Nachrichten als die beiden genannten
gebraucht wird. Durch Einsatz der Informationen 4 und 5 ergibt sich, dass ψ2 =
attr in(Laborbericht, privat) ist. Daraus folgt, dass es einen Policyverstoß gab, wenn
der Laborbericht als privat eingestuft wurde. Ansonsten war das Senden im Rahmen
des Erlaubten. (vgl [GJD11, S.5-6])
2.3.3 Eigenschaften des Algorithmus
Bis hierhin wurde gezeigt, wie der Algorithmus arbeitet und durch ein Beispiel wurde
illustriert, wie eine Verfizierung einer Policy mit einer Teilstruktur durch den ReduceAlgorithmus funktioniert. Dabei wurde nur dargestellt, dass der Reduce-Algorithmus
in der Lage ist eine Policyverletzung festzustellen, aber nicht den Grund für die
Verletzung zu nennen. Dazu ist der Reduce-Algorithmus aber ebenfalls in der Lage.
Hierzu muss nicht der Algorithmus angepasst werden, sondern lediglich die Policy
muss erweitert werden. Dies kann durch ein neues Prädikat verletzt(~x) realisiert
werden, welches für alle ~x unbekannt ist. Eine Policy der Form ϕpol = ∀~x.(c ⊃ ϕ),
wird also so erweitert, dass ϕ0pol = ∀~x.(c ⊃ (verletzt(~x) ∨ ϕ)) erhalten wird. Da
für diese Policy eine Verletzung entsteht, wenn es eine Variablenbelegung gibt, so
10
2.4. IMPLEMENTIERUNG
dass die Restriktion falsch ist, aber die Formel wahr, ergibt sich im Falle einer
Verletzung, dass der Reduce-Algorithmus eine Restpolicy in der Form verletzt(~a1 ) ∧
· · · ∧ verletzt(~an ) zurückgibt, so dass alle ~a1 , . . . , ~an die Belegungen sind, die die
Policy verletzen. Eine solche Policyerweiterung ist für jede Formel der Logik möglich.
(vgl [GJD11, S.6])
In [GJD11] werden zudem noch weitere Eigenschaften des Reduce-Algorithmus präsentiert. Folgende Eigenschaften werden gezeigt:
• Partielle Korrektheit und Minimalität (s.o.)
• Vollständigkeit: Wenn ϕ den Mode Check besteht, dann existiert auch ein ψ
mit: reduce(L, ϕ) = ψ, welches den Mode Check besteht.
• Komplexität: reduce(L, ϕ) liegt in den Komplexitätsklassen T IM E(|L|O(|ϕ|) )
und P SP ACE(|ϕ|).
2.4 Implementierung
Die Implementierung des Reduce-Algorithmus orientiert sich stark an der mathematischen Definition. Das Programm ist in Standard ML4 geschrieben. Das Programm
besteht aus fünf Komponenten, die die Struktur L darstellen und insbesondere eine
Auswertung von sat(L, P ) und L(P ) ermöglichen.
Als erstes muss jedes Prädikat nach Art der Auswertung kategorisiert werden. Dies
wird als Kategorie bezeichnet. In der Implementierung stehen drei Kategorien zur
Auswahl:
• DB: Das Prädikat ergibt sich aus einem Eintrag in einer Tabelle einer relationalen Datenbank.
• EVAL: Das Prädikat ist durch eine berechenbare Operation verifizierbar. (z.B.
eine mathematische Berechnung)
• SUBJ: Um das Prädikat zu verifzieren muss eine menschliche Eingabe erfolgen.
Die zweite Komponente ist eine lookup-Funktion, welche Anfragen in die Datenbank
stellen kann um die Prädikate auszuwerten. Aus dieser lookup-Funktion, lässt sich
eine sat db(P ) definierten, die alle befriedigenden Belegungen von einem Atom in
der Datenbank findet.
Drittens muss es eine Funktion eval(P ) geben, die Prädikate der Kategorie EVAL
auswerten kann.
Als viertes bedarf es einer Funktion isF inal(P ), die angibt, ob durch zusätzliche
Eingaben sich die Auswertung des Prädikats noch verändern kann. Zum Beispiel
wenn neue Informationen in die Datenbank hinzugefügt werden.
Als letztes sind zwei Tabellen (subjWahr und subjFalsch) nötig, die die Prädikate der
Kategorie SUBJ beinhalten, die wahr oder falsch sind. Diese Tabellen können zum
Beispiel durch eine Front-End von einem menschlichen Benutzer aufgefüllt werden.
4
Meta Language
KAPITEL 2. DER REDUCE-ALGORITHMUS
Hieraus ergeben sich für die Auswertung

 sat db(P )
eval(P )
sat(L, P ) =

undef iniert
11
von sat folgendes:
wenn P in Kategorie DB ist
wenn P in Kategorie EVAL ist
wenn P in Kategorie SUBJ ist
Durch die Definition von sat ist es jetzt auch möglich L(P ) zu definieren:

 tt
ff
L(P ) =

uu
wenn sat(L, P ) = {•} oder P ∈ subjW ahr
wenn sat(L, P ) = {} und isF inal(P ) = wahr oder P ∈ subjF alsch
andernfalls
Dabei ist die Evaluierung von P wahr, wenn es eine befriedigende Belegung gibt oder
es in subjWahr ist. Gibt es keine befriedigende Belegung und das Prädikat kann auch
nicht mehr wahr werden oder es ist in subjFalsch, dann ist die Evaluierung falsch.
Für alle anderen Fälle bleibt das P unbekannt. (vgl [GJD11, S.7])
Zur Optimierung der Implementierung werden in [GJD11, S.7ff] noch einige mögliche
Verfahren angesprochen, auf die hier aber nicht weiter eingegangen wird.
2.5 Zwischenfazit
Der Reduce-Algorithmus ist ein leistungsstarker Algorithmus zur Überwachung der
Einhaltung von Policys mittels Logs. Die Logs können durch die Modellierung der
Logik, auf der der Algorithmus arbeitet unvollständig sein und trotzdem evaluiert
werden. So schafft der Reduce-Algorithmus, dass die Policys iterativ verkleinert werden. Durch einfache Änderungen an einer Policy ist es zudem möglich nicht nur eine
Policy-Verletzung zu erkennen, sondern auch die Ursache für diese zu lokalisieren.
Eine große Schwierigkeit, die der Reduce-Algorithmus durch den Einsatz von Restriktionen überwindet, ist die Existenz unendlicher Domänen. Durch Mode Analyse kann der Algorithmus trotzdem garantieren, dass eine Terminierung stattfindet.
Andere Logiken lassen sich in die Logik des Reduce-Algorithmus übertragen. In
den folgenden Kapiteln wird sich mit weiteren alternativen Ansätzen zum Thema
Policy-Überwachung auseinandergesetzt. So ist der Reduce-Algorithmus nicht dafür
ausgelegt Policys und Logs während der Laufzeit eines Programms auf Einhaltung
zu überprüfen, da der Reduce-Algorithmus von zwei unterschiedlichen Datensätzen
für das Log und die Policys ausgeht. Für solche Fälle bedarf es anderer Ansätze, die
im nächsten Kapitel skizziert werden. Auch die PrivacyLFP, die Logik auf der die
Reduce-Logik basiert, wird zum Schluß genauer vorgestellt.
12
2.5. ZWISCHENFAZIT
KAPITEL 3. TEMPORALE LOGIKEN ALS MITTEL ZUR ÜBERWACHUNG VON POLICYS ZUR LAUFZEIT13
3 Temporale Logiken als Mittel zur Überwachung von
Policys zur Laufzeit
In diesem Kapitel soll sich mit temporalen Logiken auseinandergesetzt werden, die
häufig zur Überwachung von Policys zur Laufzeit eingesetzt werden und von denen
es in der Literatur viele unterschiedliche Variationen beziehungsweise Erweiterungen gibt. So benutzt zum Beispiel [TR05] die MTL1 , welches eine Erweiterung der
LTL ist, in der zusätzlich Zeitintervalle festgelegt werden können. Weitere Beispiele für Beschreibungen von Erweiterungen der temporalen Logiken sind in [Sok+06]
und [BBL09] zu finden. In [Sok+06] handelt es sich um die temporale Prädikatenlogik LCV , welche sich besonders mit den Aspekten Ereignisattribute und dynamischer Indexierung von Eigenschaften beschäftigt, während [BBL09] die ALC-LTL
vorstellt, welche auf Axiome der Beschreibungslogik ALC zurückgreift und auch auf
unvollständig beschriebenen Zuständen arbeiten kann. Der im vorherigen Kapitel betrachtete Reduce-Algorithmus unterscheidet sich von solchen Ansätzen insbesondere
dadurch, dass der Reduce-Algorithmus davon ausgeht, dass System-Logs unabhängig von der Ausführung eines Programms ausgelesen werden. Die hier vorgestellten
Ansätze sollen eine Auswertung von Logs zur Laufzeit gewährleisten können.
Zu Beginn des Kapitels findet eine kurze Beschreibung der linearen temporalen Logik
statt. Hierbei sollen vor allem die Grundlagen dieser Logik ins Gedächtnis gerufen
werden. Im zweiten Abschnitt des Kapitels folgt dann eine Beschreibung der drei
LTL-Erweiterungen M T L, LCV und ALC in genau dieser Reihenfolge. Ziel dieser
Abschnitte ist es ein grundlegendes Verständnis für die unterschiedlichen Ansätze
der Erweiterungen zu vermitteln und die Breite der möglichen Ansätze in der Wissenschaft aufzuzeigen.
3.1 Grundlagen: Lineare temporale Logik
Die lineare temporale Logik ist eine Logik zu Modellierung von Entwicklungen in
der Zukunft. So gibt es in ihr Operatoren, mit denen Aussagen über die zukünftige
Entwicklung von Pfaden getroffen werden können. Eine passende Definition findet
sich in [Roz10].
Neben den üblichen Operatoren, die es in den anderen Logiken gibt (∧, ∨, ¬, . . . )
stehen in der LTL noch die folgenden Operatoren zur Verfügung:
• X steht für den Nachfolger
• G (alternativ auch ) steht für eine globale Aussage
1
Metric Temporal Logik
14
3.2. ANSÄTZE ZUR ERWEITERUNG DER LTL
• F (alternativ auch ) steht dafür, dass eine Formel irgendwann gelten soll
(finally)
• U steht dafür, dass eine Formel bis irgendwann gelten soll (until)
• R steht dafür, dass eine Formel irgendwann aufgelöst wird (release).
X und G sind dabei unäre Operatoren, während F, U und R binäre Operationen
sind. Also sind Xϕ und ϕU ψ syntaktisch korrekte Formeln, wenn ϕ und ψ auch
syntaktisch korrekt sind.
Eine LTL-Formel wird dabei auf einen Pfad angewendet, der eine Sequenz von Aussagen ist. Die Formel ist genau dann erfüllt, wenn sie auf der ersten Position des
Pfades erfüllt ist. Aufgrund der Eigenschaft, dass die LTL immer Sequenzen von
Aussagen beziehungsweise Zuständen ist, lässt sich schon erkennen, dass sie sich dafür eignet, um Programmschritte zu überprüfen. Ein Programmschritt entspricht in
diesem Fall einem Zustand der LTL-Formel. LTL-Formeln stellen dann Bedingungen an den Ablauf eines Programmes dar. Diese zu überprüfen ist das Ziel der im
folgenden vorgestellten Ansätze.
3.2 Ansätze zur Erweiterung der LTL
In diesem Abschnitt werden kurz mehrere Ansätze beschrieben, die unterschiedliche
Erweiterungen von LTL darstellen zur Überwachung von Logs zur Laufzeit eines
Programms. Dabei wird nicht weiter auf die mathematischen Details eingegangen,
sondern es soll lediglich ein grober Überblick über die Ansätze in der Forschung
gewährt werden.
3.2.1 Metrische temporale Logik M T L
In [TR05] wird mittels der M T L ein Verfahren dargelegt, zur Überwachung eines
Programms zur Laufzeit. Dabei wird davon ausgegangen, dass keine Speicherung
der Ablaufverfolgung des Programms stattfindet, während dies in anderen Ansätzen
passiert. Die M T L ist hierbei eine Erweiterung der klassischen linearen temporalen
Logik (LTL), die auf diskrete Zeiteigenschaften verweisen kann. So ist es möglich
Zustände der Vergangenheit oder der Zukunft zu modellieren. Als Beispiel sei hier
die Formel φU[3,7] ψ zu betrachten. Ihre Bedeutung soll sein, dass ψ vom aktuellen
Zeitpunkt aus zwischen 3 und 7 Zeiteinheiten lang noch wahr sein soll und ab dann
soll ψ wahr sein. Das angegebene Intervall kann hierbei zwischen 0 und ∞ liegen.
Hieraus ergibt sich, dass die LT L ein Spezialfall der M T L ist, in der alle Intervalle
[0, ∞) sind. Zusätzlich zu Intervallen ist es noch möglich Kongruenzen anzugeben.
Das bedeutet, man kann das periodische Wiederkehren von Aussagen modellieren.
Der in [TR05] vorgestellte Algorithmus hat dabei eine räumliche Komplexität von
O(m2m ) und eine zeitliche Komplexität von O(m3 23m ), wobei m der Summe aus
den Formeln |φ| und die Anzahl aller numerischen Konstanten in φ ist, wobei diese
Schranken für manche Spezialfälle noch verbessert werden können. M T L wird hier
als ausdrucksstarke und mächtige Logik für Überwachungsanforderungen bezeichnet
und die Autoren sind der Meinung, dass der Algorithmus auch für praktische Zwecke einen Nutzen haben kann. Since MTL is an expressive and powerful logic for
”
KAPITEL 3. TEMPORALE LOGIKEN ALS MITTEL ZUR ÜBERWACHUNG VON POLICYS ZUR LAUFZEIT15
monitoring requirements, the presented novel and close to optimal algorithms can
be used in practical runtime verifcation and testing tools, such as JPaX2 .“([TR05,
S.15])
3.2.2 Temporale Prädikatenlogik LCV
In diesem Abschnitt erfolgt eine kurze Vorstellung der in [Sok+06] entwickelten
temporalen Prädikatenlogik LCV . Hierbei sei erwähnt, dass LCV einer Erweiterung
von LCp ist, die von teilweise den gleichen Autoren in [Kim+04] entwickelt wurde.
LCV erweitert die ursprüngliche Logik um zwei Eigenschaften:
• Ereignisattribute: Diese Attribute sind zusätzliche Informationen, die ein Ereignis im Log mit sich bringt. So sind möglicherweise die Werte von einem
Systemaufruf von größerer Bedeutung.
• Dynamische Indexierung von Eigenschaften: Hierbeit wird unterschieden zwischen statischen Objekten, die sich nie oder nur selten ändern und beweglichen Objekten. Bei statischen Objekten steht immer fest, welche Eigenschaften
überprüft werden müssen, während bei beweglichen Objekten dynamisch von
Fall zu Fall unterschiedliche Sachen abgefragt werden müssen.
Ziel der Prädikatenlogik LCV ist es dynamische Eigenschaften von Systemen zu
spezifizieren. Praktische Anwendung soll die LCV in Java-MaC3 finden, welche eine
Architektur zur Sicherstellung einer korrekten Ausführung von Java-Programmen
ist.
3.2.3 Lineare temporale Logik ALC
Zum Schluss wird in diesem Kapitel ein Ansatz von [BBL09] vorgestellt, der die LT LErweiterung LT L−ALC aus [BGL08] für einen Algorithmus benutzt. Auch hier wird
die LTL erweitert um dynamische Eigenschaften eines Systems zu beschreiben. Diese
geschieht mittels der Beschreibungslogik ALC. Die Aufgabe der Verifizierung ist es
zu überprüfen, ob alle möglichen Systemabläufe die nötigen Formeln befriedigen.
Hierbei setzen die Autoren auf den Einsatz von Büchi-Automaten, die dazu benutzt
werden um ω-Sprachen (Mengen über unendlichen Wörten) zu definieren.
Der in dieser Arbeit vorgestellte Algorithmus hat eine dreifach exponentiale Laufzeit
in Abhängigkeit zu der Größe der Formeln φ. Die Autoren meinen jedoch, dass diese
häufig ziemlich klein sind, wodurch dies weniger schwer ins Gewicht fällt.
3.3 Zwischenfazit
In diesem Kapitel wurden mehrere Ansätze grob skizziert, die zeigen sollen, dass
gerade im Bereich der LT L viele unterschiedliche Entwicklungen in Bezug auf Policyüberwachung voran getrieben werden. Dabei stehen die hier angesprochenen Ansätze nur beispielhaft für eine große Menge wissenschaftlicher Literatur, die sich mit
2
3
Java Path Explorer
Monitoring and Checking
16
3.3. ZWISCHENFAZIT
dem Bereich auseinander setzt. Diese Ansätze werden am Ende dieser Ausarbeitung
noch in Verbindung mit dem Reduce-Algorithmus gesetzt.
KAPITEL 4. POLICY-SPEZIFIZIERUNG SOWIE -ANALYSE
4
17
Policy-Spezifizierung sowie -Analyse
In diesem Kapitel wird sich mit weiteren alternativen Ansätzen zur Policy-Spezifizierung auseinander gesetzt und diese werden mit dem Reduce-Algorithmus beziehungsweise dessen Logik verglichen. Hierfür eigenen sich zum Beispiel der Ansatz
von [Bar+07]. Hier wird ein Algorithmus zur Policy-Überprüfung vorgestellt, der
als Besonderheit im Vergleich zum Reduce-Algorithmus auch den Verursacher eines
Policybruchs ausfindig machen kann. Ein weiteres Augenmerk wird in diesem Kapitel auf die PrivacyLFP aus [DeY+10] gelegt. Die PrivacyLFP ist hierbei die Logik,
auf welche der Reduce-Algorithmus basiert und die zu dem Zweck entwickelt wurde
die HIPAA1 - und GLBA2 -Policys zu spezifizieren. In [LMS07] gibt es einen weiteren
Ansatz zur Formulierung und Spezifizierung von HIPAA-Policys, welcher als Basis
die logische Programmiersprache Prolog hat.
4.1 Ansatz mit Identifizierung des Verursachers
Der in [Bar+07] vorgestellte Ansatz setzt sich als Ziel neben einer Policy-Verletzung
auch den Verursacher eben jener zu erkennen. Grundlage für den Ansatz ist die
bereits in 3.1 vorgestellte LTL. Auch dieser Ansatz hat als Ziel mit unvollständigen
Informationen umgehen zu können.
Der große Unterschied zum Ansatz des Reduce-Algorithmus ist hier die Identifizierung eines schuldigen Agenten, sprich dem Akteur, der eine Policy-Verletzung
auslöst. Der Reduce-Algorithmus ist lediglich dazu in der Lage den Grund für die
Aussage zu identifizieren, während hier auch auf die Akteure gezielt wird. Um dies zu
realisieren, definieren die Autoren den Begriff der starken Konformität. Dabei ist eine Aktion stark konform zu einer Ablauffolge, wenn es eine fortführende Ausführung
gibt, die die Policy befriedigt. Wenn Akteure jetzt erkennen können, ob eine Aktion stark konform ist, dann können sie verhindern, dass sie einen Policy-Verletzung
begehen.
Zusätzlich wird in [Bar+07] die Verantwortlichkeit für eine Policy-Verletzung wie
folgt definiert: Ein Akteur ist verantwortlich für eine Policy-Verletzung, wenn er eine
Tätigkeit in der Ablauffolge unternommen hat, die eine Policy-Verletzung verursacht
hat. Zur Identifizierung eines verantwortlichen Agenten wird ein Kausalitätsgraph
erzeugt, über den sich die Verantwortung für eine Verletzung ableiten kann.
1
2
Health Insurance Portability and Accountability Act
Gramm-Leach-Bliley Act
18
4.2. PRIVACYLFP
4.2 PrivacyLFP
Die P rivacyLF P ist eine Logik von den Machern des Reduce-Algorithmus, die in
[DeY+10] vorgestellt wird. Sie ist dafür konstruiuert, die HIPAA- und GLBA-Policys
in einer Logik zu formalisiern. Sie ist der Vorgänger für die Logik, welche hinterher
für den Reduce-Algorithmus benutzt wird. In [GJD11] betonen die Autoren, dass
die PrivacyLFP, durch leicht anzuwendene Änderungen in die Logik des ReduceAlgorithmus übertragbar ist. Wie der Name schon vermuten lässt, ist P rivacyLF P
darauf ausgelegt insbesondere Policys bezüglich Privatsphäre und Datenschutz zu
formalisieren.
So werden in [DeY+10, Abschnitt 2] mehrere wichtig Konzepte bezüglich Datenschutzpolicys dargelegt, die gleichzeitig eine Herausforderung an die Logik stellen.
Diese sind unter anderem:
• Der Umgang mit positiven und negativen Regeln: Eine positive Regel erlaubt
etwas, während eine negative Regel etwas auf eine Bedingung einschränkt
• Kombination von Regeln
• Ausnahmen von Regeln
• Selbstreferenzierung: Es kann passieren, dass eine Regel rekursionsartig auf
sich selbst verweist
• Daten-Attribute: Wie bereits in Kapitel 2.1.2 erwähnt, kann es eine Hierarchie
der Attribute geben
• Dynamische Rollen: Eine Regel kann statt auf bestimmte Personen auf eine
Rolle definiert sein.
• ...
Mit der P rivacyLF P sollen diese Probleme gelöst werden. Dabei setzt die P rivacyLF P auf die LF P , welche neben den üblichen logischen Operatoren auch noch
Fixpunktoperatoren zur Verfügung stellt. Dabei gibt es sowohl einen geringsten,
als auch einen größten Fixpunktoperator. So ist es zum Beispiel möglich mittels
dieser Fixpunkte die natürlichen Zahlen zu definieren: X(x) , (x = 0) ∨ (∃y.(x =
y + 1) ∧ X(y)) (vgl. [DeY+10, Abschnitt 3]). Die P rivacyLF P vereinigt hierbei die
LF P mit der LT L. So ergibt sich eine mächtige Logik, mit der man in der Lage ist
die HIPAA- und GLBA-Policys zu formalisieren.
4.3 HIPAA-Formulierung mittels Prolog-Ansatz
Zum Abschluss dieser Ausarbeitung wird der Ansatz von [LMS07], welcher eine
alternative Möglichkeit aufzeigt die HIPAA-Policys zu formalisieren und maschinell
auszuwerten. Hierfür wird ein Ansatz verfolgt, der sich die Fragmente aus Prolog
nimmt, wobei der Einsatz von Negationen limitiert ist.
KAPITEL 4. POLICY-SPEZIFIZIERUNG SOWIE -ANALYSE
19
In diesem Ansatz wird eine Nachricht nach acht Kategorien eingeordnet: Zu, V on,
Ü ber, Art, Zweck, AlsAntwortauf , ZugestimmtV on und Annahmen. Wobei Zu
und V on für den Empfänger bzw. den Absender einer Nachricht stehen. Ü ber ist
die Person, über die die Nachricht Informationen enthält. Die Art Kategorie sagt,
welche Informationen in der Nachricht enthalten sind und Zweck steht für den
Grund der Nachrichtenübertragung. AlsAntwortauf soll benutzt werden, wenn die
Nachricht eine Antwort auf eine andere Nachricht ist. ZugestimmtV on weißt auf
die Person, die der Übertragung zugestimmt und die Annahmen Kategorie steht
für Annahmen, die zum Zeitpunkt der Nachricht gelten. Mathematisch kann dies
in ein 8-Tupel zusammengefasst werden, was genau diese Informationen enthält.
Eine HIPAA-Policy wird dann als Abbildung von der Menge der 8-Tupel auf {T, F }
angesehen.
Anhand dieser Definitionen können Aktionen dann kategorisiert werden. So kann
man zum Beispiel alle Aktionen in eine Kategorie zusammenfassen, die vom gleichen
Absender kommen. Durch solche Kategorisierungen ist es dann möglich bestimmten
Aktionen in erlaubte oder verbotene Aktionen einzuordnen. Dies geschieht durch
den Einsatz von Prolog-Formeln. Mit diesem Ansatz als Grundlage wurde eine Webinterface geschaffen, welches frei zugänglich ist. Dieses ist unter [Gro] zu finden.
20
4.3. HIPAA-FORMULIERUNG MITTELS PROLOG-ANSATZ
KAPITEL 5. ZUSAMMENFASSUNG UND FAZIT
5
21
Zusammenfassung und Fazit
In dieser Ausarbeitung wurden unterschiedliche Ansätze von Policyüberwachung
vorgestellt, von denen sich die meisten in gewissen Zielsetzungen unterscheiden. Das
größte Augenmerk wurde hierbei auf den Reduce-Algorithmus gelegt. Das Ziel vom
Reduce-Algorithmus ist insbesondere die Überwachung von Logs basierend auf dem
HIPAA. Es wurde dargelegt, wie der Reduce-Algorithmus definiert ist und anhand
welcher Logik man eine Policy für den Reduce-Algorithmus auswertbar macht. Die
Besonderheit bei diesem Ansatz ist das Einbeziehen von unvollständigen Informationen, wie sie in der Realität wirklich auftreten. So ist der Algorithmus in der Lage
auch auf diesen zu arbeiten und eine Policy schrittweise zu reduzieren. Außerdem
ist der Algorithmus in der Lage auf unendlichen Domänen zu arbeiten. Es wurde
skizziert, wie die tatsächliche Implementierung des Algorithmus von statten ging.
Im weiteren Verlauf wurden Ansätze vorgestellt, die ein Log oder einen Programmablauf zur Laufzeit überwachen sollen. Diese Ansätze hatten als Gemeinsamkeit,
dass sie als Basis die LTL haben. Diese Ansätze unterscheiden sich gerade durch die
Laufzeit Komponente durch den Reduce-Algorithmus. Während dieser eine Trennung von Policy und Informationen über Handlungen vorsieht, werten diese Algorithmen beides miteinander gekoppelt aus. Vorgestellt wurden hierbei Ansätze die
auf den Logiken M T L, LCV und LT L − ALC basieren.
Zum Schluss wurde noch ein weiterer Ansatz vorgestellt, der sich im Unterschied
zum Reduce-Algorithmus auch besonders mit der Identifizierung von Verursachern
für Policyverletzungen auseinander setzt, sowie Akteure zu warnen, dass sie eine
Policyverletzung begehen könnten. Zusätzlich wurden noch zwei Ansätze diskutiert,
die sich mit der Formalisierung der HIPAA-Policys beschäftigten. Das eine war die
P rivacyLF P , die der Vorgänger für die Logik des Reduce-Algorithmus ist und eine
weitere Formalisierung mittels Grundgedanken der Programmiersprache Prolog.
Das Thema Policy-Überwachung ist ein ziemlich breites Thema mit einer Fülle von
unterschiedlichen Ansätzen, die alle auf unterschiedliche Ziele hinarbeiten. Ein gemeinsamer Nenner der Ansätze ist meistens die Entwicklung einer Logik, die als
Grundgerüst zur Formulierung von Policys dient. Der Reduce-Algorithmus zielt
hierbei besonders auf die Überwachung der HIPAA-Policys ab. Er wurde für diesen Zweck entwickelt und eignet sich deshalb nicht so gut für die Überwachung
von laufenden Programmen. Hierfür müssen andere Ansätze gefunden werden beziehungsweise existieren andere Ansätze. Für die HIPAA-Policys scheint er aber gut zu
arbeiten. So können mit der Logik, alle 84 HIPAA-Policys dargestellt werden und
durch den Algorithmus performant überwacht werden.
22
LITERATUR
23
Literatur
[Bar+07]
Adam Barth u. a. Privacy and Utility in Business Processes“. In: Pro”
ceedings of the 20th IEEE Computer Security Foundations Symposium.
2007.
[BBL09]
Franz Baader, Andreas Bauer und Marcel Lippmann. Runtime Veri”
fication Using a Temporal Description Logic“. In: Proceedings of the
7th International Conference on Frontiers of Combining Systems. 2009,
S. 149–164.
[BGL08]
Franz Baader, Silvio Ghilardi und Carsten Lutz. LTL over Description
”
Logic Axioms“. In: Proceedings of the 21st International Workshop on
Description Logics (DL2008). Bd. 353. CEUR-WS. 2008.
[Con96]
104th Congress. Public Law 104-191. 1996. url: http://www.gpo.gov/
fdsys/pkg/PLAW-104publ191/html/PLAW-104publ191.htm (besucht
am 27. 01. 2014).
[Con99]
106th Congress. Public Law 106-102. 1999. url: http://www.gpo.gov/
fdsys/pkg/PLAW-106publ102/html/PLAW-106publ102.htm (besucht
am 27. 01. 2014).
[DeY+10] Henry DeYoung u. a. Experiences in the Logical Specification of the
”
HIPAA and GLBA Privacy Laws“. In: Proceedings of the 9th Annual
ACM Workshop on Privacy in the Electronic Society (WPES). 2010.
[GJD11]
Deepak Garg, Limin Jia und Anupam Datta. Policy Auditing over Incomplete Logs: Theory, Implementation and Applications. Chicago, Illinois. 2011.
[Gro]
Stanford Privacy Group. HIPAA Compliance Checker. url: http://
crypto.stanford.edu/privacy/HIPAA/ (besucht am 27. 01. 2014).
[Kim+04]
M. Kim u. a. Java-MaC: a run-time assurance approach for Java pro”
grams“. In: Formal Methods in Systems Design 24.2 (2004), S. 129–155.
[LMS07]
Peifung E. Lam, John C. Mitchell und Sharada Sundaram. A Forma”
lization of HIPAA for a Medical Messaging System“. In: Proceedings on
the 6th International Conference on Trust (2007), S. 279–294.
[Roz10]
Kristin Y. Rozier. Linear Temporal Logic Symbolic Model Checking“.
”
In: Computer Science Review (2010).
[Sok+06]
Oleg Sokolsky u. a. Run-Time Checking of Dynamic Properties“. In:
”
Electronic Notes in Theoretical Computer Science 144 (2006), S. 91–
108.
24
[TR05]
LITERATUR
Prasanna Thati und Grigore Rosu. Monitoring Algorithms for Metric
”
Temporal Logic Specifications“. In: Electronic Notes in Theoretical Computer Science 113 (2005), S. 145–162.
Herunterladen