Transitiver Schutz in Java durch Sicherheitsmetaobjekte

Java hat sich als Plattform fur verteilte, objektorientierte Applikationen, bei denen das Thema Sicherheit wichtig ist, etabliert. Das Sicherheitsmodell von Java basiert auf Capabilities: Ein Objekt kann nur uber eine Objektreferenz (=Capability) angesprochen werden. Zusatzlich konnen Klassen auch selbst Zugriffsschutz abhangig vom Aufrufer implementieren (Zugriffslisten-Implementierung). Bei Java ist die Sicherheitskonfiguration nicht von der Implementation der Applikationsklassen getrennt, sondern mus in die Applikationsklassen hineinimplementiert werden. Das Hauptproblem bei Capabilities ist die Verbreitungskontrolle: Da bei objektorientierten Systemen oft Objektreferenzen ubergeben werden, ist es schwer, die Kontrolle zu behalten, wer auf welche Referenz zugreifen kann. Zugriffslisten haben andererseits den Nachteil, das es einer boswilligen Applikation moglich sein kann, fremden, privilegierten Subjekten (Programmteilen, Domanen) Objektreferenzen unterzuschieben (Unix s-Bit Problem). Wir stellen ein Sicherheitsmodell vor, das diese Probleme lost. Durch spezielle Sicherheitsmetaobjekte trennen wir die Sicherheitsstrategie von der Implementierung der Applikationsklassen. Ein Sicherheitsmetaobjekt kann an eine Objektreferenz geheftet werden und schutzt diese Referenz, indem es Zugriffe (Implementation von konfigurierbaren Capabilities) und Parameter- und Ruckgabewerte uberwacht, um die versehentliche Herausgabe von Referenzen zu verhindern bzw. herausgegebene Referenzen mit Zugriffsbeschrankungen zu versehen (Implementation von transitiven Capabilities).