Sicherere Benutzeroberflächen mittels DirectX

Die Seite wird erstellt Sarah Brandt
 
WEITER LESEN
Sicherere Benutzeroberflächen mittels DirectX

                                    Hanno Langweg

                              Institut für Informatik III
                   Rheinische Friedrich-Wilhelms-Universität Bonn
                                  Römerstraße 164
                                     53117 Bonn
                          langweg@informatik.uni-bonn.de

      Abstract: Ursprünglich für die Nutzung durch Spieleentwickler vorgesehene
      Schnittstellen sind für Sicherheitszwecke nutzbar. Wir zeigen, wie mittels
      Microsofts DirectX eine direkte Kommunikation zwischen einer Anwendung und
      einem Benutzer hergestellt werden kann. Simulationen und Verfälschungen durch
      andere Programme werden ausgeschlossen. Mit begrenztem Aufwand können
      Integrität und Authentizität der Benutzereingabe und die Integrität der
      Programmausgabe gewahrt werden.

1 Einleitung
Computerspiele zielen stets darauf ab, die Möglichkeiten eines PCs weitestgehend
auszunutzen – aufwändige Graphikdarstellung und eine schnelle Reaktion auf
Benutzereingaben sind typisch für solche Anwendungen. In früheren Zeiten waren
Personal Computer so entworfen, dass nur ein Programm gleichzeitig ausgeführt werden
konnte. Spiele konnten alle Ressourcen eines Computers ungestört einsetzen und hatten
direkten Zugriff auf Eingabe- und Ausgabegeräte. Mit dem Erscheinen
multitaskingfähiger Betriebssysteme änderte sich das, Programme mussten nun
Ressourcen untereinander teilen. Spieleentwickler beklagten sich über eine
eingeschränkte Systemleistung.

Multitasking-Betriebssysteme wurden unter Safety-Gesichtspunkten begrüßt. Eine
Anwendung konnte nicht mehr das gesamte System blockieren. Das Betriebssystem
hatte die Aufsicht über Ressourcen und konnte ihre Nutzung den Programmen entziehen.
Anwendungen konnten sich nicht darauf verlassen, exklusiven Zugriff auf Geräte zu
bekommen.

                                          227
Anwendungsentwickler, die direkt mit dem Benutzer kommunizieren möchten, haben
einen schweren Stand ohne exklusiven Gerätezugriff. Im Kontext elektronischer
Signaturen, Homebanking oder Online-Abstimmungen wird eine bewusste Bestätigung
des Benutzers für von ihm ausgelöste Aktionen benötigt. Kann die Integrität und
Authentizität der Eingabe und Ausgabe nicht garantiert werden, besteht ein
Sicherheitsproblem. Nichtvertrauenswürdige Programme, z.B. Viren oder Trojanische
Pferde ([Ce99]), könnten Benutzereingaben simulieren oder den Benutzer durch
Täuschung zu fragwürdigen Aktionen verleiten. Oft wird keine Abwehr angeboten oder
aber auf zusätzliche sichere und teure Hardware verwiesen.

Interessanterweise werden Möglichkeiten direkter Hardwarezugriffe neuerdings aus
ganz anderen Motiven forciert. Spieleentwicklern soll eine attraktive Plattform geboten
werden, auf der sie ihre anspruchsvollen Programme schnell ausführen können. In Bezug
auf die weitverbreiteten Microsoft Windows-Systeme hat sich die DirectX-Schnittstelle
durchgesetzt.

Nicht nur Spiele profitieren von einem direkten Hardwarezugriff. Anwendungen mit
erhöhtem Sicherheitsbedarf haben dadurch ebenfalls Vorteile. Ihnen wird – wie in
früheren Nicht-Multitasking-Umgebungen – Kontrolle über Ressourcen gegeben. Damit
kann auf teure Spezialhardware verzichtet werden. Kurze Reaktionszeiten und bunte
Graphik sind hier keine vordringlichen Ziele. Direkter Zugriff ermöglicht allerdings
Integrität und Authentizität ansonsten gemeinsam genutzter Kanäle. Benutzereingaben
können nicht (mehr) simuliert oder verfälscht werden. Programmausgaben können nicht
(mehr) manipuliert werden. Bei elektronischen Signaturen ist dies unter dem Schlagwort
„What you see is what you sign“ bekannt.

In diesem Beitrag zeigen wir, wie Anwendungsentwickler die Microsoft DirectX-
Schnittstelle nutzen können, um direkten Hardwarezugriff für Sicherheitszwecke zu
erlangen. Wir betrachten Integrität und Authentizität der Benutzereingabe sowie
Integrität der Programmausgabe. Authentizität der Programmausgabe ist in dieser Arbeit
nicht enthalten. Dabei geht es uns um die Sicherheit gegenüber Anwendungen, die im
selben Benutzerkontext ausgeführt werden. Angriffe, bei denen Teile des
Betriebssystems ausgetauscht werden, oder bei denen der Angreifer mit erweiterten
Privilegien agiert, betrachten wir nicht.

Im nächsten Kapitel stellen wir frühere und verwandte Arbeiten vor. Es folgen
Behandlungen der Integrität und Authentizität der Eingabe und Integrität der Ausgabe.
Das fünfte Kapitel stellt überblickshaft eine Beispielimplementierung vor.

                                         228
2 Frühere und verwandte Arbeiten
In mehreren Veröffentlichungen wurde gezeigt, dass Anwendungen unter Microsoft
Windows oder X-Windows anfällig gegenüber Trojanischen Pferden sind. Übliche
Angriffe zielen auf eine Fernsteuerung anderer Programme ab ([Cu03]). Als
Mechanismen kommen dabei in der Regel simulierte Benutzereingaben oder verfälschte
Benutzeroberflächen zum Einsatz, welche den Austausch von Nachrichten zwischen
Programmen bedingen ([SCL01]).

Zur Abwehr solcher Angriffe kann der Austausch von Nachrichten systemweit oder auf
Anwendungsebene eingeschränkt werden. Das X-Windows-System erlaubt
beispielsweise die Unterdrückung von Nachrichten, die vermöge der SendEvents-
Funktion erzeugt werden ([Fi95], [Br98]). Microsoft Windows erlaubt die
Einschränkung bestimmter Nachrichtentypen für einen Desktop. Es gibt allerdings
Situationen, in denen die Fernsteuerung anderer Programme erwünscht ist,
beispielsweise in interaktiven Hilfesystemen. Nur wenige Anwendungen stellen hier eine
gesonderte Schnittstelle zu kontrollierter Fernsteuerung bereit. Fernsteuerung mittels
simulierter Benutzeraktionen bleibt somit eine schnelle und einfache Methode bei der
Erstellung einfacher Hilfsprogramme.

Viele Ansätze zur Schaffung eines sicheren Pfads zwischen sicherheitsrelevanten
Anwendungen und ihren Benutzern konzentrieren sich auf die Abschottung der
Programme voneinander. [Ba01] schlägt getrennte Desktops vor und nimmt dafür eine
eingeschränkte Kooperationsmöglichkeit der eingesetzten Anwendungen in Kauf.
[JO01] fordern, dass ein Benutzer seinen Computer neu starten müsse, um in einen
sicheren Ein-Anwendungs-Modus zu gelangen. [Pf01] möchten ein neues
Betriebssystem installieren, das Anwendungen vollständig voneinander trennt und
Zusammenarbeit nur mittels weniger verlässlicher Systemprogramme erlaubt.

[TW96] sehen Fenster-Personalisierung durch den Benutzer als eine geeignete Methode
um festzustellen, dass ein Benutzer mit der korrekten Anwendung arbeitet. [We98],
[FHW00], [MM02], [Fr03] argumentieren, dass nur spezielle Hardware unter Kontrolle
des Benutzers (z.B. PDAs) frei von nichtvertrauenswürdigen Programmen seien und für
sichere Eingabe und Ausgabe genutzt werden könnten.

                                         229
2.1 Windows Eingabemodell

Microsoft Windows verwendet ein internes
Nachrichtenmodell zur Steuerung der
Kommunikation          mit         Windows-
Anwendungen. Nachrichten werden erzeugt,
wenn ein Ereignis eintritt. Drückt ein
Benutzer eine Taste oder lässt er sie los oder
bewegt er die Maus, wird eine Nachricht
erzeugt. Das Betriebssystem stellt die
Nachricht in die Nachrichtenwarteschlange
des entsprechenden Programms (bzw. des
Threads) ein. Eine Anwendung prüft
regelmäßg ihre Nachrichtenwarteschlange
und holt an sie adressierte Nachrichten ab
([Mi98]).

Eingaben für eine Anwendung werden vom Betriebssystem an das entsprechende
Fenster geleitet, für das sie bestimmt sind. Jedes Fenster hat dafür eine Schnittstelle, die
sogenannte Window Procedure. Die Window Procedure verarbeitet die Nachricht und
gibt die Kontrolle an das Betriebssystem zurück. Aussehen und Verhalten eines Fensters
werden durch die Window Procedure als Reaktion auf Nachrichten bestimmt.

Im Windows-Nachrichtenmodell ist es nicht möglich, zwischen Nachrichten zu
unterscheiden, die vom Betriebssystem oder von anderen Anwendungen in die
Nachrichtenwarteschlange eingefügt wurden. Es steht sogar eine Funktion SendInput zur
Verfügung (bzw. keybd_event, mouse_event vor Windows NT4 SP3), über die beliebige
Programme Benutzereingaben komfortabel simulieren können. Diese simulierten
Eingaben werden vom Betriebssystem dann in Nachrichten an die aktuelle Anwendung
umgesetzt. Ursprünglich waren diese Mechanismen dafür gedacht, spezielle
Eingabegeräte abwärtskompatibel zu integrieren. Für Viren, Würmer und Trojaner sind
sie ebenfalls geeignet.

                                            230
2.2 DirectX

Microsoft DirectX ist eine Zusammenfassung verschiedener Techniken und
Schnittstellen mit dem Ziel, Microsoft Windows zu einer von Spieleentwicklern
bevorzugten Plattform zu machen. Es ist in die neueren Versionen Windows 98, Me
sowie 2000, XP fest integriert.

DirectX gibt Spieleentwicklern über standardisierte Schnittstellen schnellen und direkten
Zugriff auf Hardware. Diese Schnittstellen steuern u.a. Graphikspeicher und -darstellung
sowie Eingabegeräte wie Tastatur, Maus oder Joystick. Sie sind gruppiert in
verschiedene Teilgebiete, die zusammen als DirectX bezeichnet werden: Direct3D,
DirectDraw, DirectInput usw. Auch Netzwerk- und Musikgeräte werden unterstützt,
werden aber für Sicherheitszwecke hier nicht betrachtet. Für unsere Zwecke genügen
DirectInput und DirectDraw.

DirectInput stellt Informationen über Eingabeereignisse bereit, bevor diese vom
Betriebssystem zu Nachrichten verarbeitet werden. Simulierte Nachrichten in der
Nachrichtenwarteschlange einer Anwendung können damit erkannt und ignoriert
werden.

DirectDraw erlaubt die Ansteuerung der Ausgabehardware in einem exklusiven Modus,
sodass andere Programme an der Verfälschung der Ausgabe gehindert werden.

                                            In der Skizze ist dargestellt, welche
                                            Komponenten bei der Darstellung von
                                            Daten einer Anwendung auf dem
                                            Bildschirm beteiligt sind. Ohne DirectX
                                            wird das GDI (Graphical Device Interface)
                                            und das DDI (Display Driver Interface)
                                            verwendet. Mit DirectX – genauer
                                            DirectDraw – wird statt des DDI der HAL
                                            (Hardware Abstraction Layer) genutzt. Ist
                                            keine    direkte    Hardwareunterstützung
                                            vorhanden, wird statt des HAL ein HEL
                                            (Hardware Emulation Layer) verwendet
                                            ([Mi01]). Die Umgehung des GDI
                                            ermöglicht den exklusiven Zugriff.

                                          231
3 Integrität und Authentizität der Eingabe
DirectInput erlaubt den Zugriff auf Eingabedaten, noch bevor diese in Windows-
Nachrichten umgewandelt werden. Hierfür werden keine besonderen Privilegien
benötigt. Aus Entwicklersicht ist diese Zugriffsmethode weniger komfortabel als mit den
angesprochenen Nachrichten. Es muss fortlaufend geprüft werden, ob neue Daten
vorhanden sind. Die üblichen Windows-Dialogkomponenten sind auf die Verarbeitung
von Nachrichten vorbereitet. Bei der Nutzung von DirectInput muss das Verhalten bei
Eingaben individuell programmiert werden. Es ist daher vorteilhaft, zuerst die
sicherheitsrelevanten Teile einer Applikation zu identifizieren und anschließend die
Eingabebehandlung von Windows-Nachrichten auf DirectInput umzustellen.

Ein Angreifer könnte nicht nur Windows-Nachrichten verfälschen, sondern auch
Eingaben mittels der SendInput API (bzw. keybd_event/mouse_event) simulieren. Diese
Eingaben würden im System erscheinen als wären sie von einem vertrauenswürdigen
Gerätetreiber erzeugt worden. Es funktioniert auch bei der Verwendung von DirectInput,
was Microsofts Bezeichnung „Direct“ relativiert.

Man könnte geneigt sein, einen Gerätetreiber zu verwenden, der seine an das System
übermittelten Eingabedaten signiert, um reale von verfälschten zu unterscheiden. Ein
weiterer Weg wäre die Eröffnung eines separaten Kommunikationskanals zwischen
Treiber und Anwendung mittels Inter-Prozess-Kommunikation. Wir stehen der Idee
eines separaten Kanals skeptisch gegenüber, da dies eine weitere proprietäre
Schnittstelle bedeuten würde, die zudem vom Gerätetreiber abhängig wäre. Ein
Filtertreiber könnte zu jedem Eingabeereignis Zusatzinformationen weitergeben, die
beispielsweise eine digitale Signatur der Daten beinhalteten. Empfangende Programme
könnten auf diese Informationen mittels GetMessageExtraInfo zugreifen und die
Gültigkeit des vorgeblichen Eingabeereignisses prüfen. Allerdings birgt auch dies
Probleme. Anwendung und Gerätetreiber müssten sich auf kryptographische Schlüssel
einigen, das Verfahren müsste gegen das Wiedereinspielen alter Nachrichten resistent
sein, und die Nutzung des ExtraInfo-Parameters könnte Konflikte mit bestehenden
Projekten hervorrufen, die diesen Parameter bereits für andere Zwecke nutzen.

Wir halten es für besser, andere Programme daran zu hindern, verfälschte Ereignisse
mittels SendInput einzuspielen. Verfälschungen können dann nur noch über Windows-
Nachrichten erfolgen, und solche können bei Nutzung von DirectInput erkannt und
ignoriert werden. Hierzu verwenden wir sogenannte Low-Level-Keyboard-Hooks, die
injizierte Eingaben unterdrücken. Diese Hooks müssen bei der Anmeldung eines
Benutzers aktiviert werden und verlangen eine Anpassung der Zugriffsrechte für den
Windows-Desktop des Benutzers.

                                         232
4 Integrität der Ausgabe
Sicherheitsrelevante Information wie beispielsweise Inhalte eines Vertragsentwurfs, für
den eine elektronische Signatur erstellt werden soll, sollte hinreichend korrekt sein zur
Zeit ihrer Verwendung für den gewünschten Zweck. Bei der herkömmlichen GDI-
Schnittstelle, die Windows-Anwendungen zur Ausgabe verwenden, kann ein Programm
nicht davon ausgehen, dass von ihm auf Ausgabegeräte geschriebene Information
unverändert durch andere Programme bleibt. DirectDraw erlaubt einer Applikation, den
Bildschirm in exklusivem Vollbildmodus zu nutzen – für Computerspiele der
Normalfall.

Ein Programm kann seine eigene exklusive Oberfläche erzeugen, um darauf Daten zu
schreiben. Inhalte dieser Oberfläche können von Angreifern nicht verändert werden und
erreichen den Benutzer daher unverfälscht. Die exklusive Oberfläche ist allerdings
unabhängig vom GDI und es können daher die GDI-Funktionen nicht verwendet werden.
Für den Anwendungsentwickler ist mehr Arbeit bei der Programmierung der Ausgabe
gefordert. Sicherheitskritische Bereiche einer Anwendung sollten identifiziert werden,
um den Aufwand dieser alternativen Ausgabemethode zu minimieren. Die starke
Nutzung von DirectDraw im Spielebereich zeigt, dass der Aufwand handhabbar ist.

Die Verwendung einer exklusiven Ansteuerung des Bildschirms ist ein weiterer Schritt,
Alternativen zu teuren Hardwarelösungen wie z.B. PDAs im Sicherheitsumfeld
aufzuzeigen.

Exklusive Ansteuerung des Bildschirms hindert andere Anwendungen nicht daran, selbst
im Vordergrund tätig zu sein. Die Integrität der Ausgabe wird mittels DirectDraw
gewahrt, nicht aber die Authentizität. Hier kann die Nutzung von Fenster-
Personalisierung (vgl. [TW96]) einen möglichen Angriff erschweren. Der Wechsel von
einer Anwendung zu einer anderen könnte auch detektiert und der Benutzer auf anderem
Wege, beispielsweise akustisch, gewarnt werden.

5 Implementierung
Wir zeigen an einem Beispiel die Nutzung der Mechanismen unter Microsoft Windows
2000/XP. Das erste Beispiel zeigt die Auswertung von Tastatureingaben, das zweite die
Darstellung eines Fensters auf einer sicheren Oberfläche.

Für unsere Tests verwenden wir DirectX Version 8.1. Die verwendete DirectDraw-
Schnittstelle trägt die Version 7. Quellkode ist in Borland Delphi geschrieben, die
DirectX-Header-Dateien sind dem Delphi-Jedi-Projekt entnommen ([De02]).

5.1 Eingabe

Im Beispiel prüfen wir, ob der Benutzer „j“ für „ja“ oder „n“ für „nein“ als Reaktion auf
eine Bestätigungsaufforderung eingegeben hat.
                                          233
SetCooperativeLevel auf Vordergrund
        Stelle Verbindung zu Eingabegerät her
        Warte auf Eingabedaten
        Prüfe Gerätezustand
        Prüfe Eingabedaten

Um andere, möglicherweise nichtvertrauenswürdige, Anwendungen daran zu hindern,
durch Aufruf von SendInput Benutzereingaben zu simulieren, ergänzen wir einen
sogenannten Low-Level-Keyboard-Hook. Dieser ermöglicht die Filterung von Eingaben.
Ist bei einem Tastaturereignis das Flag "LLKHF_INJECTED" gesetzt ([Mi03]), so wird
diese Eingabe verworfen und nicht weiter verarbeitet.

5.2 Ausgabe

DirectDraw wird in unserem Beispiel genutzt, um den Inhalt eines bestehenden Fensters
auf eine sichere Oberfläche zu zeichnen, die nicht manipuliert werden kann. Zunächst
fordern wir einen exklusiven Vollbildzugang zum Bildschirm an und erzeugen die
sichere Oberfläche. Wird die sichere Oberfläche nicht mehr benötigt, beispielsweise weil
eine sicherheitskritische Transaktion abgeschlossen wurde, geben wir den Bildschirm
wieder frei und kehren zur herkömmlichen GDI-Schnittstelle zurück.

Der Quellkode zeigt den grundsätzlichen Ansatz. In einer kommerziellen Anwendung
wären zusätzliche Routinen zur Behandlung von Fehlerereignissen angezeigt und es
sollte auf die aktuelle Auflösung und Farbtiefe Rücksicht genommen werden. Eine
Anwendung kann den Zugriff auf den Bildschirm auch verlieren, wenn mittels Alt+Tab
zu einer anderen Anwendung gewechselt wird.

In der ersten Prozedur aktivieren wir DirectDraw für unser Programm und schalten den
Vollbildmodus ein. Es werden zwei Oberflächen erzeugt, eine primäre und eine
sekundäre, welche wir als sichere Oberfläche nutzen.

        Erzeuge DirectDraw-Objekt
        SetCooperativeLevel Vollbild+Exklusiv
        Erzeuge primäre Oberfläche
        Erzeuge sekundäre Oberfläche (als sichere Oberfläche)

Nun wird der Inhalt eines bestehenden Fensters auf die sekundäre Oberfläche
gezeichnet. Die Oberflächen werden gewechselt, sodass die sichere sekundäre
Oberfläche sichtbar wird. Im Beispiel wird das Fenster zentriert auf schwarzem
Hintergrund angezeigt.

        Ermittle Gerätekontext für sichere Oberfläche
        Zeichne Fensterinhalt auf sichere Oberfläche
        Wechsle sichtbare Oberfläche

                                          234
Schließlich stellen wir die GDI-Oberfläche wieder her und erlauben anderen
Programmen wieder die Nutzung des Bildschirms.

        Wechsle sichtbare Oberfläche zur GDI-Oberfläche
        SetCooperativeLevel Normal

6 Zusammenfassung
Trojanische Pferde, Programme mit einer zusätzlichen Funktionalität, die gegen die
Interessen des Benutzers gerichtet ist, sind zunehmend beliebtere Formen von Angriffen
auf Rechensysteme. Anwendungen, die in einer solchen unsicheren Umgebung
ausgeführt werden, sollten die Kontrolle über ihre Kommunikation mit dem Benutzer
haben.

Wir haben einen Weg gezeigt, mit dem Applikationen existierende Schnittstellen für die
Spieleprogrammierung nutzen können, um Eingabe- und Ausgabegeräte direkt
anzusteuern. Im Vergleich mit spezieller Hardware oder der Entwicklung neuer sicherer
Betriebssysteme bietet unsere Lösung handhabbare und kostensparende Mittel, ein
höheres Schutzniveau in sicherheitskritischen Anwendungen zu schaffen.

Diese Arbeit betrachtet Integrität und Authentizität. Vertraulichkeit der Benutzereingabe
oder der Programmausgabe werden nicht diskutiert.

Derzeit arbeiten wir daran, Anwendungsentwicklern Komponenten bereitzustellen, um
bestehende Anwendungen nachträglich mit einer sicheren Benutzerschnittstelle
auszustatten. Oft benötigen nur wenige Teile einer Anwendung erhöhte Sicherheit. Um
die Modifikation bestehenden Programmkodes gering zu halten, könnten auch Schichten
in Frage kommen, die Ausgabeintegrität um eine Anwendung herum gewährleisten.
Eingabeintegrität scheint als externe Schicht problematisch. Für die Authentizität der
Programmausgabe untersuchen wir Fenster-Personalisierung und den Ersatz der
bestehenden Windows-Shell.

Literaturverzeichnis
[Ba01] Balfanz, D.: Access Control for Ad-hoc Collaboration. Dissertation, Princeton
       University, 2001.
[Br98] Bråthen, R.: Crash Course in X Windows Security. In: GridLock 1.
       http://www.hackphreak.org/gridlock/issues/issue.1/xwin.html, 1998.
[Ce99] CERT Coordination Center. CERT Advisory CA-99-02-Trojan-Horses.
       http://www.cert.org/advisories/CA-1999-02.html, 1999.
[Cu03] Cult of the Dead Cow. Back Orifice 2000. http://bo2k.sourceforge.net, 2003.
[De02] Delphi-Jedi Project. DirectX headers and samples. http://www.delphi-jedi.org,
       2002.

                                          235
[Fi95]  Fisher, J. Securing X Windows. UCRL-MA-121788. CIAC-2316 R.0.
        http://ciac.llnl.gov/ciac/documents/ciac2316.html, 1995.
[Fr03] Fraunhofer-Institut für Sichere Telekooperation SIT. TruPoSign. Trusted
        Pocket                            Signer.                         Projektflyer.
        http://www.sit.fhg.de/german/SICA/sica_projects/project_pdfs/trupos.pdf,
        2003.
[FHW00]Freudenthal, M., Heiberg, S., Willemson, J. Personal Security Environment on
        Palm PDA. In: Proceedings of 16th Annual Computer Security Applications
        Conference (ACSAC ’00), 2000. S. 366-372.
[JO01]                             
        Proceedings of IFIP Working Conference on Security and Control of IT in
        Society II, 2001. S. 63-74.
[MM02] Maña, A., Matamoros, S. Practical Mobile Digital Signatures. In: Bauknecht,
        K., Min Tjoa, A., Quirchmayr, G. (Hrsg.) E-Commerce and Web Technologies.
        LNCS 2455, 2002. S. 224-233.
[Mi98] Microsoft. Microsoft Windows Architecture for Developers Training Kit.
[Mi01] Microsoft. DirectDraw Architecture, System Integration. In: Microsoft
        Developer Network Library, 2001.
[Mi03a] Microsoft. Microsoft Developer Network Library, 2003.
[Mi03b] Microsoft. KBDLLHOOKSTRUCT Structure. In: Microsoft Developer
        Network Library, 2003.
[Pf01] Pfitzmann, B., Riordan, J., Stüble, C., Waidner, M., Weber, A. The PERSEUS
        System Architecture. IBM Research Report RZ 3335 (#93381) 04/09/01, IBM
        Research Division, Zürich, 2001. http://www-krypt.cs.uni-sb.de/~perseus/
[SCL01] Spalka, A., Cremers, A.B., Langweg, H. The Fairy Tale of »What You See Is
        What You Sign«. Trojan Horse Attacks on Software for Digital Signatures. In:
        Proceedings of IFIP Working Conference on Security and Control of IT in
        Society II, 2001. S. 75-86.
[TW96] Tygar, J.D., Whitten, A. WWW Electronic Commerce and Java Trojan Horses.
        Proceedings of Second USENIX Workshop on Electronic Commerce, 1996.
[We98] Weber, A. See What You Sign: Secure Implementations of Digital Signatures.
        5th International Conference on Intelligence in Services and Networks.
        IS&N’98. LNCS 1430, 1998. S. 509-520.

                                         236
Sie können auch lesen