55
1 7. Informationsflusskontrolle

7. Informationsflusskontrolle - inf.fu-berlin.de · 7.1 Elemente der Informationstheorie Bedingte Entropie Verbleibende Unsicherheit unter der Voraussetzung, dass bereits gewisse

  • Upload
    lynga

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

1

7. Informationsflusskontrolle

2

7. Informationsflusskontrolle

Informationsflusskontrolle (information flowcontrol):

sicherstellen, dass sensitive Daten nicht aufgrund von Informationsflüssen an Unbefugte gelangen können

Zugriffsschutzmaßnahmen sind hierfür meistunzureichend.

Zugriffsschutz beschränkt die Rechte von Benutzern, kann aber nicht den Informationsfluss ineinem System kontrollieren. Informationsflussstrategien definieren daher die Wege, auf denenInformationen durch ein System fließen kann und stellt sicher, dass sensitive Daten nichtaufgrund von Informationsflüssen an Unbefugte gelangen.

3

7. Informationsflusskontrolle

Beispiel (Löhr SS02): Rechnergestützte Abgabe undAuswertung von Klausuren.

Abgabe(Lösung):

wenn Lösung hat falsches Format, dannBildschirm.ausgeben(Fehlermeldung);

sonst: Ergebnis = Vergleich(Lösung, Musterlösung);Ergebnisse.anhängen(Lösung, Ergebnis) .

Bösartige Variante dieses Programms könnte bei Benutzungeiner Geheimtür vertrauliche Informationen nach außendurchsickern lassen:

Die Folie zeigt ein Beispiel, in dem Zugriffsschutz unerlaubte Informationsflüsse nichtverhindern kann. In diesem Beispiel haben wir ein Programm Abgabe, welches ein Ergebnisfür eine abgegebene Lösung einer Klausur berechnet. Falls die Lösung im richtigen Formatvorliegt, wird die Lösung mit der Musterlösung verglichen. Zur Berechnung des Ergebnissesbraucht das Programm also Zugriff auf die Musterlösung. Es könnte nun jedoch eine bösartigeVariante des Programms geben, welche den notwendigen Zugriff auf die Musterlösungmissbraucht und diese Informationen an unberechtigte Benutzer weitereicht.

4

Lösung Fehlermeldung Bildschirm

Vergleich

Musterlösung Ergebnisse

Informationsflüsse:

Der unerwünschte Informationsfluss kann nicht mit Zugriffsschutz-Mechanismenverhindert werden, denn das Programm benötigt die missbrauchten Rechte für legitime Zwecke !

In diesem Fall gibt es einen unerwünschten Informationsfluss von der Musterlösung zu einemunautorisierten Benutzer (z.B. über die Ausgabe der Musterlösung am Bildschirm).Zugriffsschutz kann dies nicht verhindern, da das Programm die missbrauchten Rechte auchfür legitime Zwecke benötigt.

5

7. Informationsflusskontrolle

Beispiel:Benutzer hat Lese- und Schreibrecht auf einer

geheimen Datei.Benutzer kann Inhalt der geheimen Datei in eineöffentliche Datei kopieren.

Informationsflusskontrolle hilft diese „Sicherheitslöcher“zu entdecken.

Traditionelles Anwendungsgebiet: Militärinformatik(militärische Geheimhaltung)

Ein zweites Beispiel ist eine Datei, auf die ein spezieller Benutzer Lese- und Schreibrechte hat,alle anderen Benutzer jedoch nicht zugreifen dürfen. Ein Beispiel solch einer Datei könnte diePasswort-Datei sein, die nur vom Administrator modifiziert werden darf. Der Administratorkönnte nun jedoch seine Rechte missbrauchen und den Inhalt der Datei in eine öffentlichlesbare Datei kopieren. Damit hätten alle Benutzer die Informationen der Passwort-Datei. Mitder Informationsflusskontrolle können solche unerlaubten Informationsflüsse aufgedecktwerden. Traditionelles Anwendungsgebiet der Informationsflusskontrolle ist dieMilitärinformatik zur Geheimhaltung militärischer Informationen.

6

7. Informationsflusskontrolle

Zugriffsschutzreguliert den Zugriff auf Objekte, aber nicht wasSubjekte mit der in den Objekten enthaltenenInformation tun kann.

Informationsflusskontrollebetrachtet die Rechte zur Weitergabe bzw.Verbreitung von Informationen. Es werden gültigeKanäle spezifiziert, entlang denen die Informationfließen darf.

Zusammenfassend kann man festhalten, dass Zugriffsschutz den Zugriff auf Objekte reguliert,aber nicht, was Subjekte mit den Informationen in den Objekten tun, für die sie autorisiert sind.Informationsflusskontrolle betrachtet die Weitergabe bzw. die Verbreitung von Informationen,unabhängig davon, in welchen Objekten die Information steckt und wer Zugriff darauf hat.Informationsflusskontrolle spezifiziert die gültigen Kanäle, entlang denen Information fließendarf.

7

7.1 Elemente der Informationstheorie

Erhalt einer Nachricht (Daten) verringert den Grad derUnwissenheit beim Empfänger.

„Informationsgehalt“ einer Nachricht X hängt von denWahrscheinlichkeiten p(xi) der möglichenAusprägungen x1, x2, ... von X ab,

z.B. wenn ich eine von zwei möglichen Nachrichten erwarteund feststeht, dass die eine sehr viel wahrscheinlicher ist als dieandere, erhalte ich beim Eintreffen der Nachricht weniger

Information als wenn beide Nachrichten gleichwahrscheinlichsind.

Um Informationsfluss präzise definieren zu können, werden Konzepte der Informationstheorieverwendet. Dazu wird zunächst der Informationsgehalt einer Nachricht betrachtet, welcher dieUnwissenheit des Empfängers über bestimmte Daten verringert. Grundlage desInformationsgehalts einer Nachricht sind die Wahrscheinlichkeiten der möglichenAusprägungen der Nachricht. Wenn beispielsweise eine von zwei Nachrichten erwartet werdenund die eine sehr viel wahrscheinlicher ist als die andere, erhält man beim Eintreffen derNachricht weniger Information als wenn beide Nachrichten gleichwahrscheinlich sind.

8

7.1 Elemente der Informationstheorie

Beispiel:Würfeln im Nebenzimmer mit 6-seitigem Würfel.

Die Ungewissheit/Unsicherheit vor dem Würfeln istgroß.

Durch die Nachricht W>3 wird die Unsicherheitreduziert.

Der Informationsgehalt der Nachricht ist der Wert, um den die Unsicherheit reduziert wird.

Bei einem 6-seitigen Würfel ist die Unwissenheit über das nächste Würfelergebnis und damitder Informationsgehalt des Würfelergebnisses beispielsweise höher, als wenn ich vorher schonweiß, dass der Würfel eine Zahl größer 3 würfeln wird. Im ersten Fall habe ich 6 möglicheErgebnisse, im zweiten Fall nur noch 3 mögliche Ergebnisse.

9

7.1 Elemente der Informationstheorie

Quantifizierung des Informationsgehalts durch denBegriff

Entropie einer Nachricht X (Shannon 1948):

Grad der Ungewissheit/Unsicherheit über den Inhalt derNachricht.Die Entropie ist am größten, wenn alle Ausprägungenxi gleichwahrscheinlich sind.

∑= ))(/1(log)()( 2 ii xpxpXH

Um den Informationsgehalt statistisch quantifizieren zu können, hat Shannon den Begriff derEntropie eingeführt. Die Entropie ist ein Maß für die Unsicherheit über den Inhalt einerbestimmten Nachricht. Die Entropie ist am größten, wenn alle Ausprägungen der Nachrichtgleichwahrscheinlich sind, da ich mir dann am „unsichersten“ bin, welchen Inhalt dieNachricht haben wird. Sind die Wahrscheinlichkeiten der Ausprägungen stark unterschiedlich,bin ich nicht sehr „überrascht“, wenn dass am meisten wahrscheinlichste Ereignis besondersoft auftritt.

10

7.1 Elemente der Informationstheorie

Bei nicht gleichwahrscheinlichen Nachrichtengeringere Entropie:

p(heute) = 1/2p(morgen) = _p(übermorgen) = _

H(X) = _ log 2 + _ log 4 + _ log 4= _ + _ + _ = 1,5

Erinnerung: log2(x)= log10(x) / log10(2)

Betrachten wir die Entropie des Beispiels der Folie mit drei möglichen Ausprägungen (heute,morgen, übermorgen), die eine unterschiedliche Wahrscheinlichkeit besitzen. Für die Entropieergibt sich ein Wert von 1,5.

11

7.1 Elemente der Informationstheorie

Zum Vergleich: Entropie bei gleicher Wahrscheinlichkeit

p(heute) = 1/3p(morgen) = 1/3p(übermorgen) = 1/3

H(X) = log 3 = 1,58

Betrachten wir nun dasselbe Beispiel, in dem alle Ereignisse gleichwahrscheinlich sind, ergibtsich eine (leicht) höhere Entropie.

12

7.1 Elemente der Informationstheorie

Beispiel: Entropie eines perfekten Würfels

p(i)= 1/6, also H(X) = log 6 = 2,58

Betrachtung anderer Aussagen,z.B. Würfelergebnis i < 3, i = 3, i > 3

p(i<3) = 1/3, p(i=3) = 1/6, p(i > 3) = _,

also H(X)= 1/3 log 3 + 1/6 log 6 + _ log 2 = 1,68

Ein weiteres Beispiel, das zeigt das gleichwahrscheinliche Ereignisse eine höhere Entropie unddamit Unsicherheit ergeben, zeigt diese Folie anhand eines Würfels. Die Entropie eines 6-seitigen Würfels, bei dem alle Zahlen gleichwahrscheinlich sind, hat eine Entropie von 2,58.Betrachtet man nur die Ereignisse: Würfelzahl kleiner 3, Würfelzahl gleich 3 und Würfelzahlgrößer 3, so ergeben sich unterschiedliche Wahrscheinlichkeiten für die Einzelereignisse.Damit sinkt auch die Entropie auf einen Wert von ca. 1,68.

13

7.1 Elemente der Informationstheorie

Bedingte EntropieVerbleibende Unsicherheit unter der Voraussetzung,dass bereits gewisse Information vorliegt.

Bedingte Wahrscheinlichkeit eines Ereignisses:

p(F|E) = p(E und F) / p(E)

wobei p(F|E) die Wahrscheinlichkeit von F unter derBedingung E ist.

Betrachten wir nun die bedingte Entropie, d.h. die Entropie einer Nachricht unter derVoraussetzung, dass bereits gewisse Information vorliegt. Die bedingte Entropie baut auf derbedingten Wahrscheinlichkeit auf. Die bedingte Wahrscheinlichkeit eines Ereignisses F unterdem bedingenden Ergebnis E ist die Wahrscheinlichkeit des Ereignisses F, falls E schoneingetreten ist. Die Formel für die bedingte Wahrscheinlichkeit zeigt die Folie: sie ist derQuotient aus der Wahrscheinlichkeit für das Eintreffen beider Ereignisse und derWahrscheinlichkeit für das bedingende Ereignis.

14

7.1 Elemente der Informationstheorie

Beispiel Würfel:

X = {gerade, ungerade}p(i gerade) = _, p(i ungerade)=1/2

Y = {i<3, i=3, i>3} p(i<3) = 1/3, p(i=3) = 1/6, p(i > 3) = _,

p( i>3 | i gerade) = p( i>3 und i gerade) / p( i gerade)= 1/3 / 1/2= 2/3

Ein Beispiel für eine bedingte Wahrscheinlichkeit zeigt diese Folie. Es zeigt dieWahrscheinlichkeit, dass man eine Zahl größer 3 würfelt, unter der Annahme, dass dieWürfelzahl gerade ist.

15

7.1 Elemente der Informationstheorie

Bedingte Entropie von X unter der Bedingung Y:

)|(1log)|()()|( 2

kik

k iik yxpyxpypYXH ∑ ∑=

Mit der bedingten Wahrscheinlichkeit lässt sich dann die Formel für die bedingte Entropieausdrücken.

16

Entropie zur Bestimmung des Informationsflusses

Gegeben seien Objekte x und y und eine Sequenz vonKommandos c, die das System von Zustand s in denZustand t transformiert.

Es existiert ein Informationsfluss von x nach y, wenn H(xs|yt) < H(xs|ys).

Falls y im Zustand s nicht existiert, giltH(xs|ys) = H(xs).

D.h.: Information fließt von x nach y, wenn aus ysInformationen über den Wert von x vor der Ausführungder Kommandos abgeleitet werden kann.

7.2 Entropie-basierte Analyse

Die bedingte Entropie wird nun zur Bestimmung des Informationsflusses verwendet. Intuitivfließt Information von einem Objekt x zu einem Objekt y, wenn die Information in y durch dieAnwendung einer Sequenz von Operationen durch die Information in x beeinflusst wird. Umdies formal auszudrücken, betrachten wir zunächst eine Sequenz von Kommandos, die dasSystem vom Zustand s in den Zustand t transformiert. Der Zustand der Variable x im Zustand ssei xS. Der Zustand der Variable y im Zustand t sei yt, falls y schon im Zustand s existierte,wird dessen Zustand mit ys bezeichnet. Es fließt durch die Kommandos Information von xnach y, wenn für die bedingte Entropie H(xs|yt) < H(xs|ys) gilt, d.h. die Unsicherheit über denWert von xS ist nach der Ausführung der Kommandos geringer (unter dem Wissen der Wertefür y). Wenn y nicht im Zustand s existieren sollte, so fließt Information, wenn H(xs|ys) =H(xs). Diese Definition sagt also, dass Information von x nach y fließt, wenn der neue Wertvon y es erlaubt, Informationen über den Wert von x vor der Ausführung der Kommandosabzuleiten.

17

7.2 Entropie-basierte Analysey:=x; H(xs|yt) = 0, da keine Unwissenheit über den Wert xs

nach dem Kommando besteht.

x:=y+z; y = {0,...,7} mit gleicher Wahrscheinlichkeit p(yi) = 1/8z = {1,2,3} mit p(z1)=1/2 und p(z2)=p(z3)=1/4

H(ys) = H(yt) = 3 und H(zs) = H(zt) = 3/2 H(ys| xs) = H(ys)

Wenn xt bekannt ist, kann ys nur noch drei mögliche Werte haben, d.h. H(ys| xt) = log 3 = 1,58

1,58 = H(ys| xt) < H(ys| xs) = 3

Informationsfluss von y nach x.

Das Kommando y:=x deckt den Wert von x vor dem Kommando auf. De Wert von x ist nachZuweisung an y bekannt und es besteht keinerlei Unwissenheit mehr über den Wert von x (d.hH(xs|yt) = 0) .

Im zweiten Beispiel sei x:=y+z, wobei y einen wert von 0...7 mit gleicher Wahrscheinlichkeitannehmen kann. Die Variable z nimmt den Wert 1 mit Wahrscheinlichkeit 0,5 und die Werte 2und 3 mit Wahrscheinlichkeit 0,25 an. Wenn s der Zustand vor der Ausführung desKommandos ist und t der Zustand nachher, so ist H(ys) = H(yt) = 3 und H(zs) = H(zt) = 3/2.Nachdem der Wert xt bekannt ist, kann ys nur noch drei mögliche Werte gehabt haben, so dassH(ys| xt) = log 3 = 1,58. Somit fließt Information von y nach x.

18

7.2 Entropie-basierte Analyse

if x = 1 then y:=0else y:=1;

Die Variablen x und y können die Werte 0 oder 1 annehmen.Die Variable nimmt ihren Wert gleichwahrscheinlich an, d.h.H(xs)=1.Wenn y nach dem Kommando den Wert 0 hat, folgt daraus x=1(und umgekehrt) H(xs| yt)= 0.

Also H(xs| yt)= 0 < H(xs| ys)= H(xs)=1.

Informationsfluss von x nach y.

Die Variablen x und y dieses Beispiels können die Werte 0 oder 1 annehmen. Die Variable xnimmt gleichwahrscheinlich die Werte 0 oder 1 an, so dass H(xs)=1. Es ist jedoch H(xs| yt)= 0 ,da ein Wert y=0 impliziert für x den Wert 1, ein Wert y=1 den Wert x=0. Somit fließtInformation von x nach y.

19

7.2 Entropie-basierte Analyse

Explizite Flüsse– Spezieller Transportbefehl– Beispiele: x:=y (Programmiersprache), call proc(x)

(Parameterübergabe), send(K,x)(Prozesskommunikation)

Implizite Flüsse– Entstehen durch Auswerten von Bedingungen, wie if

then else, while do, ...– Keine explizite Anweisung y:= f(x)

Bei den Informationsflüssen lassen sich explizite und implizite Flüsse unterscheiden. Einexpliziter Informationsfluss tritt auf, wenn Information durch einen speziellen Transportbefehlübermittelt wird. Diese Art von Transportbefehl ist beispielsweise die gezeigte Zuweisungx:=y, aber auch Prozeduraufrufe mit Parameterübergabe oderProzesskommunikationsanweisungen. Im Gegensatz zu expliziten Flüssen, gibt es beiimpliziten Flüssen keine expliziten Anweisungen der Form y:=f(x), wobei f ein Ausdruck überder Variablen x ist. Implizite Flüsse entstehen vielmehr aufgrund der Flusskontrolle imProgramm, die auf Werten von Variablen abhängt.

20

7.3 Informationsflussmodelle

Basieren auf Sicherheitsklassen (security classes).

Sicherheitsklassen bilden einen Verband (S, <), d.h.

– S ist eine Menge von Sicherheitsklassen,– < ist eine partielle Ordnung auf S (reflexiv, transitiv,

antisymmetrisch)– für alle a,b in S existiert stets (eindeutig)

• lub(a,b) kleinste obere Schranke von a,b• glb(a,b) größte untere Schranke von a,b

In einem Informationsflussmodell werden die zulässigen Wege spezifiziert, entlang denenInformation fließen darf. Zur Spezifikation dieser gültigen Wege benutzen die ModelleSicherheitsklassen als Markierungen für Objekte. Das Modell hat dann Regeln, unter welchenBedingungen Information zwischen Objekten welcher Sicherheitsklasse fließen darf.

In der Regel bilden die Sicherheitsklassen einen Verband (S,<), d.h. S ist eine Menge vonSicherheitsklassen und < eine reflexive, antisymmetrische und transitive Relation auf dieserMenge. Außerdem muss für jedes Paar von Sicherheitsklassen aus S die kleinste obereSchranke (least upper bound, lub) und die größte untere Schranke (greatest lower bound, glb)existieren.

21

7.3 InformationsflussmodelleDie grundlegende Idee ist, dass Information nur inRichtung „höherer“ Geheimhaltungsklassen fließen darf.

x < y bedeutet, dass Informationsfluss von x nach y erlaubt ist.

nicht öffentlich

öffentlich Sachgebiete A und B

Sachgebiete A oder B

Sachgebiet A Sachgebiet B

Beispiele:

Informationsfluss entlang der Pfeile

Die Idee ist dann, dass x < y angibt, dass Information nur von x nach y fließen darf, aber nichtentgegengesetzt. Die Folie zeigt zwei Beispiele für Verbände von Sicherheitsklassen.Beispielsweise darf Information von Objekten mit Markierung öffentlich zu Objekten mitMarkierung nicht öffentlich fließen, aber nicht von nicht öffentlich zu öffentlich. Die Notationder Pfeile bedeutet, dass das Paar (öffentlich, nicht öffentlich) in der Relation < ist.

22

7.3 Informationsflussmodelle

Besonders im militärischen Bereich ist dieVerwendung streng hierarchischerGeheimhaltungsklassen üblich (multi-level security)

streng geheim top secret

geheim secret

vertraulich confidential

offen unclassified

Besonders im militärischen Bereich wird diese lineare Anordnung von Sicherheitsklassenverwendet.

23

7.3 InformationsflussmodellePotenzmenge einer Menge M bildet einen Verband(2M, <), wobei < die Teilmengenbeziehung ist.

Beispiel: Unternehmen mit Krankheitsdaten (K),Gehaltsdaten (G) und Beurteilungen (B).

{K,G,B}

{K,B}

{G}

{G,B}{K,G}

{K} {B}

Eine weitere Möglichkeit zur Erstellung eines Verbandes für Sicherheitsklassen ist diePotenzmenge zusammen mit der Teilmengenbeziehung. Nehmen wir an, wir hätten einUnternehmen, in dem es Krankheitsdaten (K), Gehaltsdaten (G) und Beurteilungen (B) gibt.Bilden wir für die Sicherheitsklassen die Potenzmenge der Menge {K, G, B} bekommen wirden Verband auf der Folie. Alle Teilmengen der Menge {K, G, B} bilden dieSicherheitsklassen. Zwei Sicherheitsklassen A und B stehen in Relation, wenn A Teilmengevon B. Es darf dann Information von A nach B fließen. Wenn beispielsweise ein Mitarbeiterdie Sicherheitsklasse {K,G} besitzt, kann er auf Krankheits- und Gehaltsdaten zugreifen.

24

7.3 Informationsflussmodelle

Bedeutung von lub(a,b)=c

Fließt bei einer Operation Information aus zweiObjekten Oa und Ob in ein Objekt Oc, so gibtlub(a,b) die Klasse an, der das Objekt Oc(mindestens) angehören muss.

Bedeutung von glb(a,b)=c

Fließt bei einer Operation aus einem Objekt OcInformation in zwei Objekte Oa und Ob, so gibtglb(a,b) die Klasse an, der das Objekt Oc(höchstens) angehören darf.

c

a b* *

c

a b

* *

Die kleinste obere Schranke (least upper bound, lub) ermittelt für zwei Sicherheitsklassen aund b die kleinste Sicherheitsklasse, die sowohl größer als a als auch als b ist. Fließt bei einerOperation Information von a und b in ein Objekt c, so muss c mindestens die Sicherheitsklassevon lub(a,b) haben, damit kein unerlaubter Informationsfluss entsteht. Würde das Objekt c eineKlasse kleiner lub(a,b) haben (d.h. c < lub(a,b)), so würde entweder not(a <c) oder not(b<c).Damit würde Information unerlaubt von a nach c (bzw. von b nach c) fließen.

Die größte untere Schranke (greatest lower bound, glb) ermittelt für zwei Sicherheitsklassen aund b die größte Sicherheitsklasse, die sowohl kleiner als a als auch kleiner als b ist. Fließt beieiner Operation aus einem Objekt c Information in Objekte a und b, so muss c höchstens dieSicherheitsklasse glb(a,b) haben, damit kein unerlaubter Informationsfluss auftritt. Würdebeispielsweise das Objekt c eine Klasse größer glb(a,b) haben, so wäre not(c<a) oder not(c<b).Damit würde Information unerlaubt von c nach a (bzw. nach b) fließen.

25

7.3 Informationsflussmodelle

Ein Informationsflussmodell I ist ein 6-Tupel I= (S,<,O,s), wobei

- (S,<) ist ein Verband aus Sicherheitsklassen- O ist eine Menge von Objekten- s: O S weist jedem Objekt seine

Sicherheitsklasse zu

Ein Informationsflussmodell besteht dann aus einem Verband aus Sicherheitsklassen, einerMenge von Objekten und einer Abbildung, de jedem Objekt seine Sicherheitsklasse zuordnet.

26

7.4 Compiler-basierte Analyse

Statische Analyse eines Programms auf unerlaubteInformationsflüsse bzgl. einer Informationsflussstrategie.

Spezifikation des Programms umfasst die Sicherheitsstrategie.

Beispiel: proc sum(x: int class {a}; out: int class {b} );

out := out + x;

mit a < b.

Compiler-basierte Analyse prüft die Informationsflüsse innerhalb eines Programms. DerMechanismus bestimmt, ob der Informationsfluss innerhalb eines Programms die in derInformationsflussstrategie spezifizierten erlaubten Informationsflüsse verletzt. Diese Analyseist nicht präzise in dem Sinne, dass Informationsflüsse als unzulässig bzgl. einerInformationsflussstrategie bewertet werden könnten, obwohl das Programm sicher sind. Esbleibt jedoch kein unerlaubter Informationsfluss unentdeckt, d.h. unsichere Programme werdenimmer gefunden.

Voraussetzung für eine Compiler-basierte Analyse ist die Integration der Sicherheitsklassen indas Programm. Wir schreiben die Sicherheitsklasse von Variablen in die Variablendeklaration.Im obigen Beispiel ist a die Sicherheitsklasse der Variablen x und b die Sicherheitsklasse derVariablen out. Die Sicherheitsklassenhierarchie ist a < b, d.h. Information darf von a nach bfließen.

27

7.4 Compiler-basierte Analyse

Einfache Fluss-Axiome

Zuweisung y:=f(x1,...,xn)

ist sicher, wennlub(s(x1),...,s(xn)) < s(y)

Beispiel:y:= x1 + x2;ist sicher wenn lub(s(x1),s(x2)) < s(y)

Wir betrachten auf den folgenden Folien einige einfache Fluss-Axiome fürProgrammausdrücke. Zunächst betrachten wir Anweisungen der Form y:=f(x1,...,xn), wobei yund x1,...,xn Variablen sind und f ist eine Funktion. Information fließt von jedem xi nach y.Daher ist die Anforderung für einen sicheren Informationsfluss lub(s(x1),...,s(xn)) < s(y), d.h.die Sicherheitsklassen der xi sind kleiner als die Sicherheitsklasse von y. Betrachten wir dasBeispiel der Folie, so ist diese Zuweisung sicher, wenn lub(s(x1),s(x2)) < s(y).

28

7.4 Compiler-basierte Analyse

Sequenz s1;...sn;

ist sicher, wenn alle si sicher sind (Transitivität von <)

Beispiel: x:= y+z;a:=b*c-x;

Sicher, wenn lub(s(y),s(z)) < s(x) lub(s(b),s(c),s(x)) < s(a).

Eine Sequenz von Anweisungen s1;...;sn ist sicher, wenn der Informationsfluss in jedem Teilsi sicher ist. Im Beispiel müssen beide Zuweisungen sicher sein, damit die Sequenz sicher ist.Für die Sicherheit der Anweisungen gelten dann die Bedingungen der vorigen Folie.

29

7.4 Compiler-basierte Analyse

if f(x1,...,xn) then S1 else S2;

ist sicher, wennS1 und S2 sicher sind undlub(s(x1),...,s(xn)) < glb{s(y)| y ist Ergebnis einer

Zuweisung in S1 oder S2}

Wenn S2 leer ist (d.h. keine else-Teil), ist S2trivialerweise sicher und enthält keine Zuweisungen.

Bei einer if-Anweisung wird abhängig von der Auswertung der boolschen Funktion f derAusdruck S1 oder S2 ausgeführt. Daher müssen beide sicher sein. Die Auswahl von S1 bzw.S2 gibt Informationen über die Werte von x1,...,xn, so dass Information von diesen Variabelnzu jeder Variablen fließt, die in S1 oder S2 ein Ergebnis einer Zuweisung ist. Dies ist nurerlaubt, wenn die kleinste Sicherheitsklasse dieser Variablen in S1 und S2 größer ist als diegrößte Sicherheitsklasse der Variablen x1,...,xn. Im speziellen Fall, dass S2 leer ist, muss nurS1 sicher sein und die Variablen in S1 betrachtet werden.

30

7.4 Compiler-basierte Analyse

Beispiel:

if x + y < z then a := b

else d:= b * c – x;

Beachte: Information fließt von x,y,z nach a und d!

Sicher, wenn s(a) < s(b) und lub(s(b),s(c),s(x))<s(d)und lub(x,y,z)<glb(a,d).

Damit die if-Anweisung dieses Beispiels sicher ist, müssen zunächst a:=b; und d:=b*c-x;sicher sein. Dies ist der Fall, wenn s(a) < s(b) und lub(s(b),s(c),s(x))<s(d). Da der ausgeführteZweig der if-Anweisung von den Werten der Variablen x,y und z abhängt, fließt auchInformation von x,y und z nach a und d (den Variablen, die Ergebnis einer Zuweisung sind).Daher muss ebenfalls lub(x,y,z)<glb(a,d) gelten, damit die if-Anweisung sicher ist.

31

7.4 Compiler-basierte Analyse

while f(x1,...,xn) do S end;

ist sicher, wenn while terminiert, S sicher ist und lub(s(x1),...,s(xn))< glb{s(y)| y ist

Ergebnis einer Zuweisung in S}

Der Ausdruck f(x1,...,xn) in einer while-Schleife ist eine Bedingung, die wie bei if-AusdrückenInformationen in den Ausdruck S fließen lässt. Auch die Anzahl der Wiederholungen von Shängt vom Ausdruck f(x1,...,xn) ab, so dass auch darüber Information nach S fließt. Dahermuss (wie beim if) die kleinste gemeinsame Sicherheitsklasse der Variablen in S größer seinals die größte Sicherheitsklasse der Variablen x1,...,xn. Wenn die while-Schleife nie terminiert,werden Ausdrücke nach dem while niemals ausgeführt. Auch in diesem Fall ist Informationvon x1,...,xn geflossen. Also erfordert ein flusssicheres Programm Termination. Abschließendmuss auch noch der Ausdruck S sicher sein.

32

7.4 Compiler-basierte Analyse

Beispiel:

while i < n doa[i] := b[i];i := i + 1;

end;

Die while-Schleife terminiert.

Die Schleife ist sicher, wenn s(b[i]) < s(a[i]) unds(i)<s(i) und lub(s(i),s(n)) < glb(s(a[i],s(i)).

Die while-Schleife dieses Programms terminiert, da n eine feste natürliche Zahl ist und i beijedem Schleifendurchlauf um eins erhöht wird. Die Anweisungen innerhalb der while-Schleifesind sicher, wenn s(b[i]) < s(a[i]) und s(i)<s(i). Den Variablen a[i] und i werden Ergebnissevon Ausdrücken zugewiesen. Daher fließt Information von i und n des boolschen Ausdrucks i< n in diese Variablen. Daher muss ebenfalls lub(s(i),s(n)) < glb(s(a[i],s(i)) für die Sicherheitder while-Schleife gelten.

33

7.4 Compiler-basierte Analyse

Programm-Beispiel:

prog(x:int class {x}, y:int class {y}, a:int class {a}, b:int class {b})

{

C: if (x<y)

D: { A: a = x;

B: b = x * y; }

}

Nun wollen wir die Flusssicherheit eines etwas größeren Beispieles nachweisen. DasProgramm hat die Variablen x, y, a und b mit den Sicherheitsklassen x, y, a und b.

34

7.4 Compiler-basierte Analyse

...folgender Fluss-Spezifikation

b

x=a y

{ }

Ist das Programm flusssicher?

Die Folie zeigt die hierarchische Anordnung der Sicherheitsklassen.

35

7.4 Compiler-basierte Analyse

A: s(x)<s(a) x < a, somit ist A sicher

B: lub(s(x),s(y))<s(b) b < b, somit B sicher

D: sicher, da A und B sicher sind.

C: sicher, wenn lub(s(x),s(y)) < glb(s(a),s(b)) Es ist lub(s(x),s(y)) = b und

glb(s(a),s(b)) = a Programm nicht sicher!

Zunächst betrachten wir die Sicherheit des Ausdrucks A: a = x; Die Zuweisung ist sicher,wenn x < a, d.h. wenn Information von x nach a fließen darf. Nach derSicherheitsklassenhierarchie ist dies erlaubt, da x=a. Nun betrachten wir den Ausdruck B: b =x * y;, welcher sicher ist, wenn lub(s(x),s(y))<s(b). Die kleinste obere Schranke derSicherheitsklassen x und y ist b. Da die Sicherheitsklasse von b ebenfalls b ist, ist auch Bsicher. Der Ausdruck D ist sicher, da A und B sicher sind. Als letztes ist der Ausdruck C zubetrachten. Die if-Anweisung ist sicher, wenn D sicher ist und wenn lub(s(x),s(y)) <glb(s(a),s(b)). D ist sicher, aber die kleinste obere Schranke von x und y ist b, welche nichtkleiner als a (die größte untere Schranke von a und b ) ist. Das Programm ist somit nichtsicher.

36

7.4 Compiler-basierte Analyse

Statische Prüfung ist mühsam.

Positiver Ausgang ist nur hinreichende Bedingung fürFlusssicherheit, d.h. auch bei negativem Ausgangkönnte das Programm sicher sein.

Alternative:dynamisches Mitführen der Sicherheitsklassen

und dynamische Prüfung.Nachteil: aufwendig, Probleme mit impliziten

Flüssen

Die statische Prüfung eines Programms ist sehr mühsam und aufwendig. Außerdem bietet dieAnalyse nur eine hinreichende Bedingung der Flusssicherheit, d.h. es können auch Programmeals unsicher bewertet werden, die sicher sind. Als Alternative werden daherSicherheitsprüfungen dynamisch zur Laufzeit durchgeführt. Dies ist einfach bei explizitenFlüssen wie Zuweisungen, bei denen die Sicherheitsklassen der Beteiligten Variablen geprüftwerden, aber schwierig für implizite Flüsse (wie bei if- oder while-Ausdrücken).

37

7.4.1 JFlow

JFlow ist eine Erweiterung von Java, um statischInformationsflüsse zu prüfen.

JFlow Compiler prüft JFlow-Programm undübersetzt es in ein Standard Java-Programm.

A.C.Myers. JFlow: Practical Mostly-Static InformationFlow Control. Proc. 26th ACM Symposium ofProgramming Languages, 1999

JFlow ist eine Anwendung von Informationsfluss auf die Programmiersprache Java. Bei JFlowkönnen Java-Elemente mit Sicherheitsklassen verknüpft werden. Der JFlow-Compiler prüftdann anhand dieser Sicherheitsmerkierungen, ob die Informationsflüsse im Programm sichersind. Ist dies der Fall, übersetzt er das um Sicherheitsklassen erweiterte Programm in einnormales Java-Programm.

38

7.4.1 JFlow

Sicherheitslabel für Variablenz.B. int {public} x; boolean {secret} b;

Dynamische Sicherheitslabel werden zur Laufzeit ausgewertet,da sie nicht statisch bekannt sind.z.B. int {*lb} x;

Principals für Variablen (nur diese dürfen zugreifen)z.B. class Account {

final principal customer;

String {customer:} name;

float {customer:} balance}

Weitere Sicherheitslabel für Methoden und Klassen.

Diese Folie zeigt einige Beispiele, wie Sicherheitsklassen bzw. Sicherheitslabel in JFlow anJava-Elemente gehangen werden können. Es können Variablen, Methoden und Klassen einSicherheitslabel tragen.

39

7.5 Zugriffsschutz + Flusskontrolle

Modelle, die Zugriffsschutz mit Flusskontrollekombinieren.

Chinese-Wall-Modell (Brewer/Nash 1989)

Bell-LaPadula-Modell (Bell/LaPadula 1975)

Im folgenden sollen zwei Modelle vorgestellt werden, die Informationsfluss undZugriffskontrolle kombinieren. Dabei handelt es sich um das Chinese-Wall-Modell und dasBell-LaPadula-Modell.

40

7.5.1 Chinese-Wall-Modell

Schutzziel:Verhindern unzulässiger Informationsflüsse

zwischen konkurrierenden Unternehmen (z.B. Bankwesen).

Prinzip:Rechtevergabe berücksichtigt bereits erfolgte

Zugriffe, d.h. ein Zugriff verändert die Zugriffsrechte.

Das Chinese-Wall-Modell wird eingesetzt, um die unzulässige Ausnutzung vonMitarbeiterwissen in konkurrierenden Unternehmen zu verhindern. Es soll beispielsweiseverhindern, dass ein Berater eines Unternehmens Informationen über das Unternehmen benutzt,um einem Konkurrenz-Unternehmen Ratschläge zu erteilen. Die Idee des Chinese-Wall-Modells ist es, die Zugriffsmöglichkeiten eines Subjekts durch die Zugriffe, die es in derVergangenheit durchführte, zu beschränken.

41

7.5.1 Chinese-Wall-Modell

Liegt Zugriffsschutzmatrixmodell zugrunde:

Zugriffsrechte R = {read, write, execute}

Subjekte S agierende Personen im Unternehmen (z.B. Berater)

Objekte OWerden als Baum mit drei Ebenen strukturiert.

Konfliktklassen Kkonkurrierende Unternehmen bilden eine Konfliktklasse

Dem Chinese-Wall-Modell liegt eine Zugriffsschutzmatrix mit den Rechten read, write undexecute zugrunde. Die Menge der Subjekte ist die Menge der Mitarbeiter des Unternehmens,die Objekte sind die in den Unternehmen zu schützenden Objekte. Die Objekte werden ineinem Baum angeordnet, in dem auch die Konfliktklassen definiert werden. EineKonfliktklasse enthält eine Menge konkurrierender Unternehmen.

42

7.5.1 Chinese-Wall-Modell

Objektbaum hat 3 Ebenen

1. Ebene: Konfliktklassen2. Ebene: Unternehmen3. Ebene (Blätter): Objekte, die in den unterschiedlichen Unternehmen verwaltet

werden.

Der Objektbaum besitzt drei Ebenen: In der ersten sind die Konfliktklassen spezifiziert. DerenNachfolger in der zweiten Ebene sind die Unternehmen, die in Konflikt stehen. An denUnternehmen in der dritten Ebene hängen dann die Objekte der Unternehmen.

43

7.5.1 Chinese-Wall-Modell

Beispiel: Objektbaum

Konfliktklassen

Unternehmen

Objekte

Mineralöl Bank

Aral Shell Dresdner Deutsche

o1 o2 o3 o4 o5 o6 o7 o8 o9

Die Folie zeigt ein Beispiel eines Objektbaumes. Es gibt vier Unternehmen Aral, Shell,Dresdner Bank und Deutsche Bank. Unter den Unternehmen hängen die zu den Unternehmengehörenden Objekte. Auf der höchsten Ebene stehen die Konfliktklassen. Im Beispiel habenwir eine Konfliktklasse Mineralöl, in der die Unternehmen Aral und Shell sind, und dieKonfliktklasse Bank, in der die Dresdner und Deutsche Bank sind.

44

7.5.1 Chinese-Wall-Modell

Sicherheitsmarke eines Objekts für das Unternehmenund die Konfliktklasse:

Objekt o = (x(o), y(o)) mit x: O K und y:O U, wobeiU die Menge der Unternehmen.

Öffentlich zugängliche Information bekommt einespezielle Markierung y0 und eine Konfliktklasse x0={y0}.

Die Sicherheitsmarke eines Objektes bilden das zugehörige Unternehmen und dieKonfliktklasse, zu dem das Unternehmen gehört. Im vorigen Beispiel währe dieSicherheitsmarke für das Objekt o1 das Paar (Aral, Mineralöl), für das Objekt o9 das Paar(Deutsche, Bank). Frei verfügbare Objekte ohne Sicherheitsbeschränkungen bekommen einespezielle Sicherheitsmarke (x0, y0).

45

7.5.1 Chinese-Wall-Modell

Zugriffsschutzentscheidung gemäßSchutzmatrix M +Sicherheitsmarken +Zugiffshistorie N

Zugriffshistorie ist eine Matrix N: S x O 2R, wobeiN(s,o) die Menge der bisher benutzten Rechte ist, dies zum Zugriff auf o benutzte.

Die Zugriffsschutzentscheidung erfolgt anhand der Schutzmatrix, den im Objektbaumdefinierten Sicherheitsmarken der Objekte und einer Zugriffshistorienmatrix, die die von denSubjekten ausgeführten Zugriffe verwaltet. Ein Eintrag N(s,o) in der Matrix N für dieZugriffshistorie für ein Subjekt s und ein Objekt o gibt die Menge der Rechte an, die dasSubjekt bisher zum Zugriff auf das Objekt o benutzt hat.

46

7.5.1 Chinese-Wall-Modell

Zugriff auf Objekte werden durch zwei systembestimmteRegeln beschränkt.

Regel 1:Ein read- bzw. execute-Zugriff auf ein Objekt o für einSubjekt s ist zulässig, wenn gilt:

1.) read bzw. execute in M(s,o)2.) f.a. Objekte o‘: Wenn N(s,o‘) nicht leer, dann ist y(o‘)=y(o), d.h. gleiches Unternehmen, oder x(o) = x(o‘), d.h. kein Konflikt, oder y(o‘)=y0.

Der Zugriff auf ein Objekt wird durch zwei systembestimmte Regeln beschränkt. Die Lese-Regel (Regel 1) reglementiert den Lese-Zugriff, während die Schreib-Regel (Regel 2)Beschränkungen für modifizierende Zugriffe festlegt.

Regel 1 besagt, das ein Subjekt s nur dann einen read- bzw. execute-Zugriff auf ein Objekt oausführen darf, wenn s des entsprechende Recht in der Schutzmatrix M hat, s bisher noch aufkein Objekt o´ zugegriffen hat, das zu einem anderen Unternehmen gehört, aber die gleicheKonfliktklasse wie o hat. Das Subjekt s darf immer auf öffenltich zugängliche Objektezugreifen (y(o‘)=y0).

47

7.5.1 Chinese-Wall-Modell

Beispiel: Subjekt s1 hat auf o2 zugegriffen.

Mineralöl Bank

Aral Shell Dresdner Deutsche

o1 o2 o3 o4 o5 o6 o7 o8 o9

Durch Regel 1 wird nach dem Zugriff auf ein Objekt o durch ein Subjekt s eine Mauer um allediejenigen Objekte o‘ errichtet, die zu anderen Unternehmen derselben Konfliktklasse gehören.Nehmen wir an, Subjekt s1 greift auf o2 zu, dann verbietet Regel 1 den Zugriff auf alleObjekte von Shell, da Objekt o1 zum Unternehmen Aral gehört, welches in Konflikt mit demUnternehmen Shell steht. Auf die Objekte der Banken kann s1 jedoch noch zugreifen, da Aralzu keiner Bank in Konflikt steht.

48

7.5.1 Chinese-Wall-Modell

Beispiel: Subjekt s1 hat auf o7 zugegriffen.

Mineralöl Bank

Aral Shell Dresdner Deutsche

o1 o2 o3 o4 o5 o6 o7 o8 o9

Weiterer Mauerbau nach dem Zugriff von s1 auf Objekt o7.

49

7.5.1 Chinese-Wall-ModellRegel 1 verhindert noch keine unerwünschtenInformationsflüsse.

Mineralöl Bank

Aral Shell Dresdner Deutsche

o1 o2 o3 o4 o5 o6 o7 o8 o9

s1 s21:read 2:write 3:read

4:write

Informationsfluss von o2 nach o5 !

Regel ist jedoch nicht ausreichend, um unerlaubte Informationsflüsse zu verbieten. Fallsbeispielsweise Subjekt s1 lesend auf Objekt o2 und danach schreibend auf Objekt o7 zugreift,kann Subjekt s2 die Information in o7 lesen und in Objekt o5 schreiben. Dadurch gelangtInformation von o2 nach o5, was nicht erlaubt ist, da die Unternehmen Aral und Shell inKonflikt stehen.

50

7.5.1 Chinese-Wall-Modell

Regel 2:Ein write-Zugriff auf ein Objekt o durch ein Subjekts ist zulässig, genau dann wenn:1.) write in M(s,o) und2.) f.a. Objekte o‘: Wenn read in N(s,o‘), dann

y(o‘)=y(o), d.h. gleiches Unternehmen, oder y(o‘)=y0.

Regel 2 verhindert diese Art von Informationsflüssen. Die Regel legt fest, dass ein write-Zugriff durch ein Subjekt s auf ein Objekt o zulässig ist, wenn s das write-Recht in derSchutzmatrix M besitzt und s nur read- bzw. execute-Zugriffe auf solche Objekt o‘ hatte, dieentweder zum gleichen Unternehmen wie o gehören oder nur frei zugängliche Informationenbeinhalten.

51

7.5.2 Bell-LaPadula-Modell

Liegt dynamisches Zugriffsschutzmatrixmodell zugrunde:

Rechte = {read-only, append, execute, read-write, control}

Sicherheitsklassen (S, <) (vgl. 7.3)

Objekten und Subjekten wird eine Sicherheitsklasse zugeordnet.bei Objekten: Einstufung (classification)bei Subjekten: Ermächtigung (clearance) ist die maximaleSicherheitsstufe des Subjekts.

Dem Bell-LaPadula-Modell liegt ein dynamisches Zugriffsschutzmatrixmodell mit folgendenRechten zugrunde: read-only erlaubt einen Lese-Zugriff, append berechtigt Daten anexistierende Objekte anzuhängen, das read-write-Recht erlaubt den Lese- und Schreibzugriffund das control-Recht erlaubt die Rechteweitergabe bzw. –rücknahme. Das execute-Rechteberechtigt zur Ausführung von Programmen. Neben der Zugriffsschutzmatrix gibt esSicherheitsklassen mit einer partiellen Ordnung <, um den Objekten und Subjektenunterschiedliche Vertraulichkeitsstufen zuzuordnen. Die Sicherheitsklasse eines Subjekts(Ermächtigung, clearance) ist die maximale Sicherheitsstufe, die das Subjekt einnehmen darf.Bei der Anmeldung gibt das Subjekt seine aktuelle Ermächtigung an.

52

7.5.2 Bell-LaPadula-Modell

Zugriff wird durch zwei systembestimmte Regelnbeschränkt.

Simple Security Property:Ein Read- oder Execute-Zugriff auf ein Objekt odurch ein Subjekt s ist zulässig, wenn

1.) read- bzw. execute-Recht in M(s,o)2.) sc(s) > sc(o)

Der Zugriff auf Objekte wird durch die Simple-Security- und die *-Eigenschaft beschränkt.Die Simple-Security-Regel besagt, dass ein Lese oder Execute-Zugriff auf ein Objekt o durchein Subjekt s nur dann zulässig ist, wenn s das entsprechende Recht in derZugriffsschutzmatrix M besitzt und die Objektsicherheitsklasse kleiner oder gleich derSicherheitsklasse des Subjekts ist.

53

7.5.2 Bell-LaPadula-Modell

*-Eigenschaft für den Schreib-Zugriff

Ein Append-Zugriff auf ein Objekt o durch ein Subjekts ist zulässig, wenn

1.) append-Recht in M(s,o)2.) sc(s) < sc(o)

Ein Read-Write-Zugriff auf ein Objekt o durch einSubjekt s ist zulässig, wenn

1.) read-write-Recht in M(s,o)2.) sc(s) = sc(o)

Die *-Eigenschaft besagt, dass eine append-Zugriff auf ein Objekt o durch ein Subjekt s nurzulässig ist, wenn die Sicherheitsklasse des Objekts mindestens so hoch ist, wie die Klasse desSubjekts. Ein Lese-Schreib-Zugriff auf ein Objekt o ist nur zulässig, wenn dieObjektsicherheitsklasse gleich der Klasse des Subjekts ist.

Die beiden Simple-Security und die *-Eigenschaft-Regel gewährleisten, das Informationhöchstens von unten nach oben entlang der partiellen Ordnung < oder innerhalb einerSicherheitsklasse fließen kann.

54

7.5.2 Bell-LaPadula-Modell

Doc1

Doc2

Doc3 Doc4

Doc5

S1

S2

streng geheim

geheim

vertraulich

unklassifiziert

zulässigerInformationsfluss

append

read-write

read append

read-writeappend

read, execute

Die Folie zeigt ein Beispiel für linear angeordnete Sicherheitsklassen unklassifiziert < geheim< vertraulich < streng geheim. Dokumente und Subjekte sind dieses Sicherheitsklassenzugeordnet. Es sind erlaubte und unerlaubte Zugriffe dargestellt.

55

7.5.2 Bell-LaPadula-Modell

Das Modell ist sehr starr, da Informationen nicht dynamischeingestuft werden können.

Daher in der Praxis

1. Ermächtigung für Subjekte ist nicht fest zugeordnet:- aktuelle Ermächtigung kann kleiner sein als maximale Ermächtigung- Benutzer wählt aktuelle Ermächtigung beim Einloggen

2. Vertrauenswürdige Benutzer haben eine Sonderrolle und können sich über die Regeln hinwegsetzen.

Beispiel-System: UNIX System V/MLS (1989)

Um das Bell-LaPadula-Modell flexibler zu gestalten, kann man vertrauenswürdige Benutzerbzw. Prozesse einführen, bei denen davon ausgegangen wird, dass sie keine Aktionendurchführen, die die Sicherheitseigenschaften verletzen. Sie dürfen sich daher über die Regelnhinwegsetzen. Wie schon erwähnt, können Benutzer beim Anmelden auch eine geringereErmächtigung wählen, als ihnen maximal zusteht.