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
-
Zugriffskontrolle für Daten und Funktionalität
-
Authentifizierung von Benutzern
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.