250 likes | 355 Views
Perlen der Informatik III Die Subjects Umgebung. Christian Scheideler Institut f ür Informatik Technische Universität München. Grundprinzipien der Sicherheit. Eignerzustimmung und -kontrolle Prinzip der geringsten Ausgesetztheit. Neues Paradigma. Subjekte Objekte Relaypunkte
E N D
Perlen der Informatik IIIDie Subjects Umgebung Christian Scheideler Institut für Informatik Technische Universität München
Grundprinzipien der Sicherheit Eignerzustimmung und -kontrolle Prinzip der geringsten Ausgesetztheit
Neues Paradigma • Subjekte • Objekte • Relaypunkte • Identitäten und Clones ID S
Subjekte und Objekte atomar, anonym, statisch und unbeweglich, enthält Methoden besitzen atomar, anonym, beweglich,dynamische Daten atomar, anonym, unbeweglich,für Kommunikationsverbindungen
Subjekt kann Subjekte erzeugen kann Objekte besitzen kann Verbindungen aufbauen, die nicht umlegbar sind
Erstes Kennenlernen R A B Öffentliche Identität (TAN) R • Subjekte besitzen keine Identität • Identitäten nicht kopierbar, nur einmal verwendbar • Relayverbindungen können nicht umgelegt werden • Zustimmung und Kontrolle, geringste Ausgesetztheit?
Vorstellung A B R R>B C B>A A>B Zustimmung und Kontrolle, geringste Ausgesetztheit?
Nachkommen Ressourcenkontrolle Mutter Kind Kind in derselben Maschine wie Mutter. Zustimmung und Kontrolle, geringste Ausgesetztheit?
Objekte Object: Basisklasse für Objekte • Container für dynamische Daten • keine Identität (nur über Referenz erreichbar) • keine Methoden • transferierbar, aber hat zu jedem Zeitpunkt eindeutigen Besitzer (Subjekt) • Besitzer kann auf alle Anwendungsdaten innerhalb vom Object zugreifen
Objekte Von Object abgeleitete Klassen: • Identity: enthält Identität eines Relaypunkts • Clone: enthält “schlafendes” Subjekt Objekte dieser Klassen sind nur einmal aktivierbar, und auf deren Inhalte können Subjekte nicht zugreifen. Benutzerdefinierte Objekte:class <UserObject>: public Object{public: <benutzerdefinierte Variablen>};
Relays Relay: Klasse für Relaypunkte • nicht transferierbar • nur eine ausgehende Kante, die bei Generierung erzeugt wird und dann nicht mehr umgelegt werden kann • anonym, aber Identitäten können für eingehende Kanten generiert und transferiert werden
Identitäten Anweisungen: • new Identity(Relay *r): erzeugt neue öffentliche Identität von Relay r • new Identity(Relay *r, Relay *r’): erzeugt private Identität von r für r’ • delete i: löscht Identität
Clones Anweisungen: • newpublic(<UserSubject>) odernewpublic(<UserSubject>(<UserObject> *o)): erzeugt öffentliches Clone vom Typ UserSubject • newprivate(<UserSubject>, Relay *r) odernewprivate(<UserSubject>(<UserObject> *o),Relay *r): erzeugt privaten Clone vom Typ UserSubject für Relay r • delete c: löscht Clone
Subjekte Subject: Basisklasse für Subjekte • atomar, anonym • können Objekte und Relays besitzen • nicht transferierbar • Kindsubject immer am selben Ort wie Mutter • frei definierbare, aber von Anfang an fest vorgegebene Methoden, die auf alle Anwendungsdaten innerhalb eines Subjekts und deren Objekte zugreifen können
Subjekte Benutzerdefiniertes Subjekt:class <UserSubject>: public Subject{ protected: <benutzerdefinierte Variablen> <interne benutzerdefinierte Methoden> public: <UserSubject>() // benutzerdef. Konstruktor { // evtl mit <UserObject> *o in () nur “call()”-Methode hier erlaubt, nicht “new()” ! } <externe benutzerdefinierte Methoden>};
Subjekte Alle extern aufrufbaren Methoden müssen folgende Form haben:void <method>() {…}void <method>(<UserObject> *o) {…} Start der Subjects-Umgebung:s=new <UserSubject>;run(s,t); // t=0: laufe, bis keine Aufgaben mehr
Subjekte Reservierte Variablen: • ulong _debugID: eindeutige Identität für Debugging • Relay *parent: Relay zu Muttersubjekt • ulong source: ID des Subjekts, von dem Aufruf kam (lokal eindeutig) • ulong sink: ID des Relaypunkts, der Aufruf empfangen hat
Subjekte Anweisungen: • new(<UserSubject>) odernew(<UserSubject>(<UserObject> *o)): erzeugt neues Subjekt • new(Subject(Clone *c)): aktiviert Subjekt im Clone c • delete(s): löscht Subject (muss Kind sein, damit möglich) Wichtig: bei new/delete “()” benutzen!
Subjekte Anweisungen: • new Relay: erzeugt neuen Relaypunkt, dessen ausgehende Kante zum Subjekt selbst zeigt • new Relay(Identity *i): erzeugt Relaypunkt mit Verbindung zum Relaypunkt mit Identität I (damit wird i invalidiert) • delete r: löscht Relaypunkt r • call(verb,object): generiert Anfrage verb(object) für eigenes Subjekt • r!call(verb,object): generiert Anfrage verb(object) für Ziel von Relay r
Subjekte Anweisungen: • wakeup(s): weckt Subjekt s auf (und alle seine Nachfolger im Stammbaum) • freeze(s): friert Subjekt s ein (und alle seine Nachfolger im Stammbaum) • int idle(): gibt an, ob noch Anfragen für Subjekt • int idle(Relay *r): gibt an, ob noch ausgehende Anfragen für Relay r
Subjects-Umgebung Zukünftige Eigenschaften: • Object kann ein Container von Objekten sein (kann simuliert werden über “<UserObject> **o”) • Subject kann ein Container von Subjekten sein (simulierbar über “<UserSubject> **s”). • Ein neues Subjekt/Objekt muss in “new” immer einer Referenz zugeordnet werden. Wird die Referenz überschrieben, so wird das referen-zierte Subjekt/Objekt gelöscht.
Subjects-Umgebung Zukünftige Eigenschaften: • Relay kann ein Container von Relays sein. • Relays müssen auf Methoden zeigen:“new Relay(<UserMethod>)”Damit kann das Subjekt kontrollieren, welche Methoden aufgerufen werden können. • Jedes neue Subjekt muss bei Erzeugung eine Identität auf eine Methode mitgeliefert bekommen, damit die Anfangskommunikation gesichert ist.
Ausblick Nächste Woche: • Robustes DNS • Digital Rights Management • SPAM-resistentes Email-System • Online Banking • Soziale Netzwerke • Mobilität • Weitere Themen, die Sie interessieren?
Ausblick Übernächste Woche: Bau einfacher dynamischer Systeme mit der Subjects-Umgebung