Sprachen für sichere verteilte Systeme - Lehrstuhl für Effiziente ...

www14.in.tum.de

Sprachen für sichere verteilte Systeme - Lehrstuhl für Effiziente ...

Sprachen für sichere verteilte Systeme: WelcheSprachen gibt es, um sichere und robustverteilte Systeme zu entwickelnWenfeng RuanUniversität Paderborn rwf@uni-paderborn.de


Sprachen für sichere verteilte Systeme 3• Robustness - robust.Subject hat vollständige Kontrolle über die Ressourcen und Informationen.Folgende Anforderungen (siehe [1]. und [2]) für Robustness sind erfüllt.Eigentümer Zustimmung und Kontrolle Alle Ressourcen, die einSubjekt besitzt(wie Zeit, Raum und Bandbreite) sollten unter ihrer Kontrollesein. Dies bedeutet, dass eine Verbindung von Subjekt A zu B dasSubjekt B ausdrücklich genehmigen muss. Subjekt A soll nicht SubjektB zu C direkt vorzustellen können. Jede Erteilung einer Ressource solltewiderrufen werden können durch den, der sie erteilt hat. Das ist, SubjektB kann zu jeder Zeit die Informationsfluss aus Subjekt A abbrechen.Au¨serdem, niemand sollte in der Lage sein, den Zugriff auf eine Ressourcevon einem Subjekt zu haben, wenn dieses Subjekt das nicht will. Allerdings,Eltern haben das Recht, ihre Kinder (und ihre Nachkommen) in denSchlaf zu bringen oder zu löschen.Prinzip des geringsten ExpositionDie control layer sollte dem Subject nur eine minimale Menge von Informationengeben, die erforderlich sind, um die Aufgaben zu erfüllen und fürUniversalität zu sorgen, (d.h., so dass alle möglichen Anwendungen umgesetztwerden können). Es wird gefordert, dass die Subjects anonym sindund kein Subject Informationen zu einem neu erstellten Subject sendenkann. Da es muss eine Art von Verbindungen für eine neu erstellte Subjecthaben, und ausdrücklich gewährt werden. dies bedeutet, dass am Anfanges nur ein Informations-Flow von dem Kind zu den Eltern geben sollte.Es gibt keine globale Identität, sondern nur lokale Identität Informationen.Das heisst, jede Identität, die ein Subject erfährt, ist nur nutzbar fürdieses Subject. Dies hält die Exposition der Subjects auf einem Minimum.Self-StabilizationEin Objekt kann nicht verloren gehen, da es immer feste Subject zu- geordnetwird(wenn noch nicht auf der Transit). Stammbaum von Sub- jecthängt immer zusammen. Das ermöglicht eine gründliche Kon- trolle. Kommunikationskanalvon Kind zu Mutter gibt es so lange das Kind existiert,so dass immer schwache Verbindung zwischen den Subjects garantiert sind.• Message passingSubject bietet unblockiert Message passing Oparationen(asynchron). Dasheisst, nachdem Infomation ausgeschickt wird, läuft das Programm weiter,ohne warten auf die Ergebnisse.• Grund Elemente von SubjectWie in Abbildung 1 dargestellt wird, Subject hat vier Grund Elemente:subject, object, Relay Points und action.subject kann subject erstellen, object überarbeiten, action durchfühlen und


4 Wenfeng RuanFig. 1. Grund Elemente von SubjectFig. 2. subjectnicht-weiterleitete Verbindungen warten(siehe Abbildung 2). Relay Pointist mit einem subject zusammen gebunden. Identität einer Relay Pointkann generiert werden, aber nur einmal benutzt werden, um Relay Pointzu erstellen. Es gibt zwei Möglichkeiten einen Relay Point zu erstellen.Wenn subject ohne Identität einen Relay Point erstellt, hat dieser RelayPoint einen Ausgang auf Subject selbst(siehe Abbildung 3 links). ImGegensatz dazu, wenn subject mit einer Identität von subject B eine RelayPoint erstellt, zeigt dann der Ausgang der Relay Point auf eine RelayPoint von B(siehe Abbildung 3 rechts).Sujects haben keine eigene Identität. Nur Relay Points können Identitätenerstellen, die für andere Anwendungen nicht zugänglich sind. Der Ausgangkann nicht geändert werden.


Sprachen für sichere verteilte Systeme 5Fig. 3. Grund Elemente von SubjectFig. 4. Grund Elemente von SubjectIn Abbildung 4 wird dargestellt, dass ein subject B nur dann mit subject Adirekte Verbinden kann, wenn B eine Ralay Point Identität von A bekommenhat. Und solche Identität kann A über anderen Weg (z.B. Post) oderüber ein anderes subject C ( siehe Abbildung 5), das A und B verbundenhat, weiterleiten.Fig. 5. Grund Elemente von SubjectJetzt erklären wir in Beispielen, wie man das in der Realität benutzenkann.BeispieleWir fangen mit einem Hello World Programm an. Die Head-Datei vonSubjects-Umgebung muss includet werden (Zeile 04). Die Klasse Hello wirddefiniert als eine Subklasse der Subject(Zeile 06). von Zeile 09 bis 12 ist derKonstruktor dieser Klasse, und man darf da darin nur call benutzen, um andereMethode in der Klasse aufzurufen. Die Methode run startet die Umgebung(Zeile 24). Dabei ist t von Typ unsigned long. Wenn t = 0, dann läuftdie Umgebung bis es keine mehr Anfrage zu verarbeiten gibt. Anderenfalls,


6 Wenfeng Ruandie Umwelt läuft für die t-Runden. Man kann in diesem Beispiel merken, dassdies sehr einfach für C++ Programmierer beherrscht werden kann.01 // Subjects-Umgebung, Beispiel 1:02 // Hello World03 #include 04 #include "Subjects1-4.h"05 // Hello Subjekt06 class Hello: public Subject07 {08 public:09 Hello() // creates Hello subject10 {11 call(Hello::sayHello, NULL);12 }13 void sayHello() // says "Hello World"14 {15 cout


Sprachen für sichere verteilte Systeme 708 public:09 Ping(); // creates Ping object10 void Init(); // initializes Ping object11 void PingPong(); // creates Ping req\"ust12 };1314 // Pong class15 class Pong: public Subject16 {17 Relay *pinglink; // link to Ping object18 public:19 Pong(); // creates Pong object20 void Init(); // initializes Pong object21 void Setup(Identity *d); // creates link to Ping object22 void PingPong(); // replies to Ping req\"ust23 };2425 // Ping methods26 Ping::Ping()27 {28 num = 0;29 call(Ping::Init, NULL);30 }31 void Ping::Init()32 {33 Identity *d;34 ponglink = new Relay;35 d = new Identity(ponglink,parent);36 parent->call(Pong::Setup, d);37 PingPong();38 }39 void Ping::PingPong()40 {41 if (num < 5) { // only 5 Ping req\"usts42 std::cout


10 Wenfeng Ruan• Concurrency - Diese Systeme müssen natürlich Fähigkeit von Concurrencyhaben, da Interaktion dieser Systeme mit vielen Zehntausendenvon Menschen gleichzeitig passieren können. Das bedeutet, dass diese Systemeviele Zehntausend gleichzeitige Aktivitäten effizient handeln kön- nensollte.• Soft real-time - in diesen Systeme müssen viele Operationen innerhalbeiner bestimmten Zeit erledigt werden. Einige dieser zeitlich Operationensind strikt durchgesetzt werden. in diesem Fall, wird der gesamte Betriebabgebrochen wenn eine bestimmte Operation nicht innerhalb einer bestimmtenZeitspanne gelingt werden kann. Andere sind lediglich überwachtmit irgendeiner Form der Timer. D.h., Operation wird wiederholt, wenn dieTimer-Ereignis auslöst, bevor die Operation abgeschlossen ist. Programmierungsolcher Systeme erfordert effiziente Manipulation von vielen Zehntausendsolcher Timer.• Distributed (Dezentrale, Verteilte) - Systeme sollten so strukturiert werden,dass sie leicht von einem Single-Node-System auf ein Multi-Node-System zu verteilen sind.• Grö¨se Software Systeme - Dies bedeutet, dass Software mit MillionenZeilen Quellcode einwandfrei funktionieren muss.• Komplexe Funktionen - In manchen Fällen wird es gefördert, dass nach derBereitstellung des Systems, Weiterentwicklung von Systemen durchführenwerden muss. D.h., während der Lebensdaür eines Systems wird wahrscheinlichdie Funktion gesetzt oder geändert. Funktion, und Software Upgrademuss durchgeführt werden, ohne Ausschalten des Systems.• Daürbetrieb - die Systeme kann für lange Zeit kontinuierlich betrieben.Dies bedeutet, dass die Operationen wie Software und Hardware-Wartung,kann ohne Anhalten des Systems durchgeführt werden.• Qualitäts-Anforderungen - Systeme sollten mit einem annehmbaren Serviceanbieten, auch in der Anwesenheit von Fehlern. Es wird erwartet, dassder Austausch sehr zuverlässig ist.• Fehlertoleranz - Systeme sollten fehlertolerant sein. Diese bedeutet, dassvon Anfang an wissen wir, dass Fehler auftreten könnten, und dass wireine Software und Hardware-Infrastruktur so aufgebaut sollen, dass dasSystem sich mit diesen Fehler lebt und ein akzeptables Niveau der Dienstleistungenanbieten kann.


Sprachen für sichere verteilte Systeme 11BeispieleFolgende ist ein quicksort Programm, das mit Erlang geschrieben wird.01 %% quicksort:quicksort(List)02 %% Sort a list of items03 -module(quicksort). % This is the file ’quicksort.erl’04 -export([quicksort/1]). % A function ’quicksort’ with 1 parameteris exported (no type, no name)05 quicksort([]) -> []; % If the list [] is empty, return an empty list(nothing to sort)06 quicksort([Pivot|Rest]) -> % Compose recursively a list with ’Front’07 % from ’Pivot’ and ’Back’ from ’Rest’08 quicksort([Front || Front


12 Wenfeng RuanTable 1. Vergleich Subject, E und ErlangSubject E ErlangBasiere auf C++ JAVA beeinflusst bei prologwichtige Klasse Subject VatRelay PointThread/Prozess Thread Thread Prozess1 Thread / Teilnehmer jede Object ist ProzessMessage Passing asynchron asynchron asynchronund synchronIdentität einweg Id von R.P. Id ist wiederbenutzbar PID für ProzessBesonderheit sehr bekannte Syntax eigene Syntax eigene Syntaxverschlüsselte sehr weit inKommunikation TelekommunikationShell Programmierung verbreitetgegen ID theft ja nein neingegen DOS ja nein neinReferences1. K. Cameron. The laws of identity, 2004.2. D. Epp. The eight rules of security, 2003.

Weitere Magazine dieses Users
Ähnliche Magazine