3 Sicherheit in Living Worlds

Wie in jeder Netzwerkanwendung sind auch in Living Worlds bestimmte Sicherheitsmechanismen unverzichtbar. Man will sicher sein können, daß sich alle Objekte konsistent verhalten und keine paradoxen Situationen auftreten können, so wie eine Tür, die gleichzeitig auf und zu gemacht wird. Man will verhindern, daß hingehackte Programme auf Stellen der VRML-Funktionalität zugreifen können, an denen sie der Szene Schaden zufügen können. Und man möchte in der Lage sein, bestimmten Benutzern mehr oder weniger Rechte in der eigenen Szene zu geben, daß z.B. die eigenen Frau die Wohnzimmertür selbst öffnen kann, ein völlig Fremder aber nicht.
Hieraus ergeben sich die drei wesentlichen auf diesem Gebiet zu behandelnden Aspekte (vrml.org 97 (1)): Concurrency Control:
Concurrency Control ist ein wesentlicher Aspekt in jedem System, in dem verschiedene Prozesse gleichzeitig auf ein Objekt zugreifen wollen können. Es gilt dabei zu vermeiden, daß inkonsistente Zustände auftreten können, oder daß einzelne Aktionen 'verlorengehen'.
Hierzu setzt man typischerweise Mechanismen ein, die einen Prozeß zum warten zwingen, wenn er auf ein Objekt zugreifen will, auf das gerade schon zugegriffen wird. Der einfachste solche Mechanismus, der in Living Worlds auch eingesetzt wird, ist der eines Locks.
Ein Lock ist allgemein gesehen ein kleines Softwarekonstrukt, das für einen gegenseitigen Ausschluß (mutual exclusion) in einer kritischen Sektion (critical section) sorgt. Eine kritische Sektion ist "eine Gruppe von Instruktionen, die atomar ausgeführt werden muß", unter gegenseitigem Ausschluß versteht man das "Verhindern von gleichzeitiger Ausführung einer kritischen Sektion durch mehrere Prozesse" (Buhr/Kates 97).
In Living Worlds ist die kritische Sektion bei jeder Veränderung von Variablen im PrivateSharedObject der gesamte Prozeß dieser Änderung. Der gegenseitige Ausschluß besteht in diesem Fall also darin, zu verhindern, daß auf mehreren Clients gleichzeitig Variablen von einer Instanz eines bestimmten Objekts verändert werden.
Der Lock selbst besteht in Living Worlds aus einer einzelnen Boolschen Variable lock. Bevor auf einem beliebigen Rechner nun in der Instanz eines Objektes Veränderungen vorgenommen werden, überprüft die MUtech dort, ob der Lock noch frei ist oder nicht. Wenn er nicht frei ist, muß gewartet werden, bis er freigegeben wird. Ist er frei, so wird eine Nachricht an den Pilot des Objekts geschickt mit der Bitte, den Lock für diese Instanz zu belegen (bzw. wenn es der Pilot selbst ist, der die Änderungen vornehmen möchte, so belegt er den Lock). Hat in der Zwischenzeit eine andere Instanz bereits eine solche Anfrage gestellt, wird eine negative Antwort zurückgegeben, und es muß weiter gewartet werden. Der Pilot repliziert nun zunächst den belegten Lock an alle Dronen, und danach die Änderungen, die daraufhin in gegenseitigem Ausschluß ausgeführt werden können. Da der Pilot die Vergabe des Locks zentral regelt (und da die parallele Übertragung und Verarbeitung von mehreren Anfragen für ein typisches System in einem typischen Netzwerk nicht möglich ist) kann für jede Eventualität ein gegenseitiger Ausschluß gewährleistet werden.

Zugriffskontrolle für Daten und Funktionalität
Die Zugriffskontrolle für Daten und Funktionalität wird in Living Worlds über die vorsichtige Vergabe von Zeigern auf kritische Knoten gehandhabt. Wie schon erwähnt ist schon in VRML 2.0 festgelegt, daß Manipulationen an Knoten nur getätigt werden können, wenn man einen direkten Zeiger auf diesen Knoten hat. Als kritische Knoten sind hier insbesondere das PrivateSharedObject und die PrivateZone anzuführen, auf die nur die MUtech Zugriff hat.

Authentifizierung von Benutzern
Für die Authentifizierung von Benutzern haben sich die Designer von Living Worlds nichts neues einfallen lassen, schlicht und ergreifend deswegen, weil es im Internet bereits einen Mechanismus gibt, der eben dies leistet, und der auch in Living Worlds eingesetzt werden kann. Dieser Mechanismen ist natürlich der Einsatz von Zertifikaten, wie sie z.B. für die Authentifizierung von Websites bereits genutzt werden.