Prof. Dr. Gunter Schlageter et al. Prof. Dr. Matthias Hemmje Prof. Dr. Christoph Beierle, Prof. Dr. Gabriele Kern-Isberner Dr. Stefan Wohlfeil Modul 31241 Einführung in die InternetTechnologien und Informationssysteme 01671 Datenbanken I 01873 Daten- und Dokumentenmanagement im Internet 01843 Einführung in wissensbasierte Systeme 01866 Sicherheit im Internet I LESEPROBE RR mathematik und informatik Der Inhalt dieses Dokumentes darf ohne vorherige schriftliche Erlaubnis durch die FernUniversität in Hagen nicht (ganz oder teilweise) reproduziert, benutzt oder veröffentlicht werden. Das Copyright gilt für alle Formen der Speicherung und Reproduktion, in denen die vorliegenden Informationen eingeflossen sind, einschließlich und zwar ohne Begrenzung Magnetspeicher, Computerausdrucke und visuelle Anzeigen. Alle in diesem Dokument genannten Gebrauchsnamen, Handelsnamen und Warenbezeichnungen sind zumeist eingetragene Warenzeichen und urheberrechtlich geschützt. Warenzeichen, Patente oder Copyrights gelten gleich ohne ausdrückliche Nennung. In dieser Publikation enthaltene Informationen können ohne vorherige Ankündigung geändert werden. Prof. Dr. Gunter Schlageter et al. Kurs 01671 Datenbanken I LESEPROBE mathematik und informatik Leseprobe zum Kurs 1671, entnommen aus KE2 3.3 SQL – eine relationale Abfragesprache In diesem Abschnitt werden wir die Abfragesprache mit der weitesten Verbreitung vorstellen: SQL. 3.3.1 Grundlegende Sprachelemente von SQL Nachdem E.F. Codd 1970 den bahnbrechenden Artikel „A Relational Model of Data for Large Shared Data Banks“ /COD70/ veröffentlicht hatte, begann man im IBM San Jose Research Laboratory über eine Sprache zu forschen, die dazu geeignet wäre dieses Modell zu implementieren. Die Sprache wurde SEQUEL genannt, ein Akronym für Structured English QUEry Language. Innerhalb eines Forschungsprojektes mit Namen System R entwickelte man ein Datenbanksystem desselben Namens zu Forschungszwecken. SEQUEL war das Programmierinterface zu diesem Datenbanksystem. Zwischen 1974 und 1975 wurde diese Sprache in einem Prototypen implementiert, der wiederum den Namen SEQUEL erhielt. In den nächsten Jahren wurde eine überarbeitete Version SEQUEL/2 entwickelt Diese Version der Sprache wurde in SQL umbenannt. 1 Das Projekt System R lief in der Zeit von 1971 bis 1979 und mündete in einem verteilten Datenbankprojekt mit dem Namen System R* (englisch ausgesprochen „are star“). In den späten 70er Jahren wurde allgemein bekannt, dass IBM dabei war, ein kommerzielles DBMS zu entwickeln, das SQL als Sprache benutzen sollte. Als Konsequenz daraus wurde die Konkurrenz aktiv. Tatsächlich schlug eine kleine Firma mit dem Namen „Relational Software Inc.“ die große IBM in dem Rennen um die erste Markteinführung eines solchen Systems. Diese Firma heißt übrigens inzwischen ORACLE und ist seitdem geringfügig gewachsen. IBM brachte 1981 sein erstes relationales DBMS auf den Markt, damals SQL/DS genannt. Die erste Version des bekannten DB2 erschien 1983. Einen rechtlichen Status als Standard erhielt SQL 1986 durch die Veröffentlichung eines ANSI Standards der Sprache. Bekannt wurde dieser Standard unter dem Kürzel SQL-86. Eine Überarbeitung erschien 1989 (SQL-89). Größere Änderungen erfolgten 1992 (SQL-92). Viele Schwachstellen von SQL-86 und SQL-89 wurden in diesem Standard beseitigt. SQL:1999, die neueste Revision geht weit über die bisherigen Standards hinaus und ist eine Annäherung an die Möglichkeiten, die neue Datenbanksysteme bieten (können) und die Bedürfnissen ihrer Benutzer. In der Zeit von 1992 bis 1999 wurden einzelne Aspekte des zukünftigen Standards SQL:1999 gesondert veröffentlicht. Die erste dieser Veröffentlichungen war der Standard zu SQL/CLI (Call Level Interface), bekannt als CLI-95. Wahrscheinlich die bekannteste Implementierung dieses Standards ist ODBC, Open Database Connectivity. 1 Aus dieser Umbenennung rührt der Glaube her, SQL stünde für 'Structured Query Language' und würde "sequel" ausgesprochen. Laut Standard ist SQL jedoch kein Akronym. 1996 wurde SQL/PSM (Persistent Stored Modules) veröffentlicht. PSM-96, wie der Standard genannt wurde, legt die Syntax der prozeduralen Logik fest, die auf Serverseite in DBMS implementiert wird. Dieser Standard war nötig geworden, weil viele kommerzielle DBMS „Stored Procedures“ anboten, deren Syntax allerdings voneinander abwich. 1998 erfolgte die Veröffentlichung von SQL/OLB (Object Language Bindings), der beschreibt, wie SQL Statements in JAVA eingebettet werden können. Er basiert auf dem JDBC Modell und wurde bekannt unter dem Namen OLB-98. 1999 wurde der neue Sprachstandard für SQL angenommen und als SQL:1999 veröffentlicht. Der Bindestrich ist verschwunden und die Jahreszahl wurde um das Jahrhundert und Jahrtausend erweitert. Die Verwendung der vierstelligen Jahreszahl entspringt der Y2KUmstellung, die Änderung des Bindestriches in einen Doppelpunkt ist von weitreichenderer Bedeutung: Sie bezieht sich auf die Normen der ISO, die die Namen der Standards von den Jahreszahlen der Veröffentlichung durch einen Doppelpunkt trennt, im Gegensatz zur ANSI, die hierzu eben den Bindestrich benutzt. Dies deutet auf die zunehmende Internationalisierung des Standardisierungsprozesses hin und die Marginalisierung der ANSI Norm außerhalb der USA durch das Aufgehen ihrer Normung in der ISO. 2 SQL basiert auf dem relationalen Modell, ist aber keineswegs eine perfekte Abbildung desselben auf eine Sprache. SQL weicht in einigen Aspekten vom relationalen Modell und relational vollständigen Sprachen, wie in den vorangegangenen Abschnitten erklärt, ab. Die meisten Unterschiede stellen Erweiterungen dar, auf die wir später noch eingehen. Der wichtigste Unterschied betrifft allerdings das grundlegende Objekt relationaler Datenbanken und des relationalen Modells. SQL arbeitet mit Tabellen, die Duplikate von Zeilen enthalten können. Dies entspräche Tupeln, die in allen Attributen übereinstimmen, was in Relationen nicht möglich ist. Um den Unterschieden zwischen der Sprachregelung in SQL und dem relationalen Modell Rechnung zu tragen, werden wir in diesem Kapitel folgendermaßen unterscheiden: Relationales Modell Relation Tupel Attribut SQL Tabelle Zeile Spalte (SQL englisch) (Table) (Row) (Column) An den Stellen, an denen wir uns explizit auf das relationale Modell als Grundlage für SQL beziehen, werden wir die Sprachregelung des Modells anwenden und dort, wo es um die Umsetzung in SQL geht, diejenige, die im SQL:1999 Standard benutzt wird. Neben den Aggregierungsfunktionen, die wir später in diesem Kapitel behandeln werden, bietet SQL noch eine wichtige Ergänzung gegenüber dem vorgestellten Relationenmodell und „bloß“ relational vollständigen Sprachen an: sogenannte NULL-Werte. Prinzipiell kann jedes 2 Eine genaue Darstellung der Geschichte der SQL-Normung (die für Entwickler durchaus interessant sein mag, wenn Sie gezwungen sind mit verschiedenen Implementierungen parallel zu arbeiten) finden Sie in /MELT02/ im Anhang F. Die Darstellung in diesem Kapitel lehnt sich an die in /MELT02/ an. Attribut für ein Tupel den Wert NULL annehmen, was (ohne weitere Vereinbarungen) bedeutet, dass dieser Wert zwar vorgesehen, aber (noch) nicht festgelegt ist. Die Definition verschiedener Operatoren wurde für NULL-Werte verändert. Es ergibt sich eine ternäre Logik mit den Werte WAHR (TRUE), FALSCH (FALSE) und UNBEKANNT (UNKNOWN) bzw. NULL. Wir werden mit den folgenden Beispielen einen Einblick in die umfassenden Möglichkeiten der SELECT-Anweisung geben und daran anschließend einige weitere DML- und DDLAnweisungen in SQL vorstellen. 3 Die SELECT-Anweisung Eine SQL-Abfrage (Query) hat folgende Grundstruktur: SELECT A1, ..., An FROM R1, ..., Rn WHERE Prädikat(R1, ..., Rn). Die Bedeutung einer solchen Query kann man sich so veranschaulichen: selektiere aus dem Kreuzprodukt der Relationen R1, ..., Rn alle Tupel, die die Bedingung Prädikat(R1, ..., Rn) erfüllen, und projiziere die so entstehende Relation auf die Attribute A1, ..., An. Dabei ist Ai ein Attribut einer der Relationen R1, ..., Rn. Prädikat(R1, ..., Rn) ist eine Bedingung, die Attributwerte mit Konstanten oder zwei Attributwerte eines Tupels miteinander vergleicht oder andere Operatoren auf die Attributwerte anwendet; solche Teilbedingungen können durch die Booleschen Operatoren (AND) und (OR) miteinander verknüpft und mit ¬ (NOT) negiert werden. Als Operanden können in den Prädikaten auch Mengen auftreten, insbesondere Ergebnismengen, die über andere SQL-Abfragen konstruiert werden. Beispiel 3.1: (Gerüst der SELECT-Anweisung) FINDE DIE BERUFE DER ANGESTELLTEN IN ABTEILUNG 3. SELECT BERUF FROM ANGEST WHERE ABTNR = 3 Hier werden in der Tabelle ANGEST die Tupel mit ABTNR = 3 ermittelt und von diesen dann die Werte des Attributs BERUF ausgegeben. Die Ergebnismenge des obigen Beispiels kann doppelte Elemente enthalten. Zum Aussortieren doppelter Zeilen muss in der SELECT-Klausel das Schlüsselwort Duplikate in SQL DISTINCT angegeben werden. Der Grund hierfür liegt darin, dass es zusätzlichen Rechenaufwand kostet, aus jeder Ergebnistabelle Duplikate zu eliminieren, während viele praktische Anwendungen (insbesondere aber auch die Berechnung von Zwischenergebnissen) diese Anforderung gar nicht stellen. 3 Traditionell wird SQL häufig in DML (Data Manipulation Language) und DDL (Data Definition Language) aufgeteilt. Diese Aufteilung findet sich so im Standard nicht wieder. Laut Standard müsste man eher von SDL (Schema Definition Language), SML (Schema Manipulation Language) und DML sprechen. Beispiel 3.2: (Aussortieren doppelter Tupel) Die Abfrage: FINDE ALLE WOHNORTE DER ANGESTELLTEN. ... lautet in SQL: SELECT DISTINCT WOHNORT FROM ANGEST Die WHERE-Klausel kann hier entfallen, da lediglich die Projektion auf die Spalte WOHNORT durchgeführt wird und dazu keine Bedingung an die einzelnen Zeilen der Tabelle ANGEST gestellt werden muss. Es soll jedoch in diesem Beispiel um den Einsatz des Schlüsselwortes DISTINCT gehen: Das Ergebnis dieser Abfrage enthält erwartungsgemäß drei Zeilen. Ohne die Angabe von DISTINCT jedoch wäre die Zeile (Karlsruhe) zweimal enthalten gewesen, also insgesamt vier Zeilen im Ergebnis (vgl. Beispieldaten aus Beispiel 3.4): mit DISTINCT Hagen ohne DISTINCT Karlsruhe Karlsruhe Hagen Marburg Marburg Karlsruhe Das zweifache Auftauchen von „Karlsruhe“ widerspricht der Frage nach allen Wohnorten, die Query ohne DISTINCT entspricht also auch semantisch nicht der Anforderung. Um Beziehungen zwischen mehreren Relationen zu betrachten, können in der FROM-Klausel der Abfrage mehrere Tabellen angegeben werden. Über diese Möglichkeit werden in SQL JOINS realisiert. In der WHERE-Klausel wird deren Verknüpfung untereinander bestimmt. Beispiel 3.3: (Einfache SELECT-Anweisung I) FINDE FÜR JEDES PROJEKT DIE PROJEKTNUMMER UND DEN NAMEN DES PROJEKTLEITERS SELECT PNR, NAME FROM PROJEKT, ANGEST WHERE PROJEKT.P_LEITER = ANGEST.ANGNR In diesem Beispiel werden Werte aus verschiedenen Tabellen verlangt. Die angegebene Anweisung wird folgendermaßen ausgeführt: - Erst Bildung eines Kreuzproduktes der Tabellen PROJEKT und ANGEST, - Auswertung der WHERE Bedingung und Selektion der Zeilen, die die Bedingung erfüllen, - dann Projektion auf die in der SELECT-Klausel angegebenen Spalten. Man beachte bei diesem Beispiel, dass man die Spalten nicht mit den Namen der Tabellen qualifizieren muss, weil die Namen der Spalten auch bezogen auf zwei Tabellen eindeutig sind. Es ist jedoch sinnvoll, die Namen der Tabellen immer mitzuführen. Beispiel 3.4: (Einfache SELECT-Anweisung II) Erinnern wir uns an die letzte Abfrage aus Beispiel 3.4: (siehe auch Beispiel 3.9) FINDE DIE NAMEN ALLER ANGESTELLTEN, DIE AM PROJEKT MIT DER NUMMER 17 MITARBEITEN Als SQL-Abfrage lautet sie: SELECT ANGEST.NAME FROM ANG_PRO, ANGEST WHERE ANG_PRO.PNR = 17 AND ANG_PRO.ANGNR = ANGEST.ANGNR In der Tabelle, die sich nach Bildung des JOINS aus ANGEST und ANG_PRO ergibt, kommt die Spalte ANGNR zweimal vor, weil sie sowohl in ANGEST als auch in ANG_PRO enthalten ist. In dem WHERE-Teil der Abfrage muss daher jeweils der Tabellenname vorangestellt werden, um das Attribut eindeutig zu qualifizieren. In komplizierteren Abfragen wird es in SQL unter Umständen notwendig, Tupelvariablen (im Standard: 'Correlation Names') einzuführen. Tupelvariablen sind vor allem dann nötig, wenn in einer Abfrage mehrere verschiedene Tupel derselben Relation gleichzeitig betrachtet werden sollen. Oder anders ausgedrückt: Tupelvariablen sind immer dann erforderlich, wenn der JOIN einer Tabelle mit sich selbst gebildet werden soll. Einen solchen Fall demonstriert das folgende Beispiel: Beispiel 3.5: (Tupelvariablen in SQL) Die Abfrage (siehe auch Übung 3.4) ... GIB DIE NAMEN ALLER PERSONEN AUS, DIE MEHRERE PROJEKTE LEITEN. ... kann in SQL folgendermaßen dargestellt werden: SELECT DISTINCT ANGEST.NAME FROM ANGEST, PROJEKT AS P1, PROJEKT AS P2 WHERE ANGEST.ANGNR = P1.P_LEITER AND ANGEST.ANGNR = P2.P_LEITER AND P1.PNR != P2.PNR 4 In dieser Abfrage werden durch FROM ... PROJEKT AS P1, PROJEKT AS P2 zwei Tupelvariablen für die Tabelle PROJEKT definiert 5. Gemäß der WHERE-Klausel wird ein Angestellter mit zwei Zeilen (P1 und P2) verbunden, die verschiedene Projekte repräsentieren (P1.PNR != P2.PNR), wobei der Angestellte aber in beiden Projektleiter ist (ANGEST.ANGNR= P1.P_LEITER und ANGEST.ANGNR= P2.P1_LEITER). 4 5 '!=' steht in SQL für den mathematischen Vergleichoperator 'z'(„ungleich“) und ist synonym zu '<>'. Das Schlüsselwort AS ist optional. Übung 3.1: Formulieren Sie die Abfrage aus Beispiel 3.23 mit nur einer Tupelvariable. Übung 3.2: Formulieren Sie die Abfragen a) bis c) aus Übung 3.4 als SQL-Anweisungen. Übung 3.3: Geben Sie an, ob die SQL-SELECT-Anweisung eher Ausdrücken der Relationenalgebra oder des Relationenkalküls entspricht und begründen Sie dies. Der SQL-Standard sieht vor, dass JOIN-Operatoren in der FROM-Klausel angegeben werden. U.a. kann dadurch die Lesbarkeit einer SELECT-Anweisung verbessert werden, weil sich im Idealfall die Angaben in der WHERE-Klausel auf die gewünschten Eigenschaften der einzelnen Entitäten (repräsentiert durch die Tupel der Relationen) konzentrieren. Beispiel 3.6: (JOIN-Operator) Die Abfrage aus Beispiel 3.21 lautet mit SQL-JOIN-Operator: SELECT PNR, NAME FROM PROJEKT JOIN ANGEST ON P_LEITER = ANGNR Durch diese Schreibweise wird klar, dass nur der JOIN von PROJEKT und ANGEST gefragt ist. Bedingungen an die einzelnen Tabellen (etwa: BERUF = 'PROGRAMMIERER') werden nicht gestellt. Die Abfrage aus Beispiel 3.22 lautet mit SQL-JOIN-Operator: SELECT NAME FROM ANGEST NATURAL JOIN ANG_PRO WHERE PNR = 17 Hier wird deutlicher: Alle Angestellten mit Arbeitsanteilen (NATURAL JOIN) am Projekt Nummer 17 (WHERE-Klausel) gesucht. Eine weitere Möglichkeit einen NATURAL JOIN in SQL zu schreiben ist: SELECT NAME FROM ANGEST JOIN ANG_PRO USING ANGNR WHERE PNR = 17 Das Schlüsselwort USING kann benutzt werden, um ein Attribut für den NATURAL JOIN explizit anzugeben z.B. wenn mehrere gleichnamige Spalten vorhanden sind. Die ON bzw. USING Klausel wurde eingeführt, um die JOIN Bedingungen syntaktisch von den Selektionsbedingungen in der WHERE Klausel zu trennen 6. 6 Wenn Sie ON oder USING benutzen, müssen Sie das Schlüsselwort JOIN zum verbinden der Tabellennamen verwenden. Die Abfrage aus Beispiel 3.23 lautet mit JOIN...ON: SELECT FROM DISTINCT NAME ANGEST JOIN PROJEKT AS P1 ON ANGNR = P1.P_LEITER JOIN PROJEKT AS P2 ON ANGNR = P2.P_LEITER WHERE P1.PNR != P2.PNR Wiederum werden die verschiedenen JOIN Bedingungen in das JOIN-Statement mit einbezogen (siehe auch Lösung zu Übung 3.4). Die WHERE-Klausel wird auf den Vergleich der beiden PNRs reduziert. 7 Beispiel 3.24a: (OUTER JOINS) Wir erweitern für dieses Beispiel die Tabelle PROJEKT um eine Zeile: PROJEKT P_NAME PNR P_BESCHR P_LEITER DATAWAREHOUSE 12 ... 205 INTRANET 18 ... 117 PROJEKT 2000 17 ... 198 VU 33 ... 198 SQL KURS 34 ... NULL Die Firma in unserem Beispiel hat demnach ein neues Projekt mit dem Namen 'SQL_KURS' initiiert. Das Projekt hat momentan noch keinen Leiter, außerdem sind ihm noch keine Mitarbeiter zugeordnet. Folgende Anfrage kann mit den bislang betrachteten JOINS nicht realisiert werden: FINDE ALLE PROJEKTNAMEN UND DIE NUMMERN DER ZUGEORDNETEN ANGESTELLTEN Die QUERY SELECT PROJEKT.P_NAME, ANG_PRO.ANGNR FROM PROJEKT NATURAL JOIN ANG_PRO liefert das Ergebnis DATAWAREHOUSE INTRANET INTRANET PROJEKT 2000 PROJEKT 2000 VU 205 117 198 112 198 117 Somit geht die Information über das Projekt SQL KURS nicht in das Ergebnis der Abfrage ein. Um ein korrektes Ergebnis zu erhalten, müssen die Zeilen der Tabelle 7 Bei manchen DBMS müssen Sie die einzelnen JOINs verschachteln ...FROM (JOIN PROJEKT AS P1 ON ANGNR =P1.LEITER) JOIN PROJEKT AS P2.... Projekt, die nicht der JOIN Bedingung entsprechen erhalten bleiben. Hierzu dienen die OUTER JOINS 8. x LEFT OUTER JOIN: Es bleiben die nicht der JOIN-Bedingung entsprechenden Zeilen der Tabelle erhalten, die links (vom Schlüsselbegriff OUTER JOIN) steht. x RIGHT OUTER JOIN: Es bleiben die nicht der JOIN-Bedingung entsprechenden Zeilen der Tabelle erhalten, die rechts steht. x FULL OUTER JOIN: Es bleiben die nicht der JOIN-Bedingung entsprechenden Zeilen der Tabellen erhalten, die links und rechts stehen. Zur Verdeutlichung benutzen wir folgende Tabellen 9: EINS ZWEI DREI a b b c c d a1 b1 b1 c1 c1 d1 a2 b2 b2 c2 c2 d2 a3 NULL b3 NULL c3 NULL Ein INNER JOIN über die Tabellen EINS und ZWEI SELECT * FROM EINS JOIN ZWEI ON EINS.B = ZWEI.B liefert das Ergebnis: a1 b1 b1 c1 a2 b2 b2 c2 Ein LEFT OUTER JOIN über die Tabellen EINS und ZWEI SELECT * FROM EINS LEFT OUTER JOIN ZWEI ON EINS.B = ZWEI.B liefert das Ergebnis a1 b1 b1 c1 a2 b2 b2 c2 a3 NULL NULL NULL Entsprechend RIGHT OUTER JOIN und FULL OUTER JOIN: 8 9 Im Gegensatz dazu werden die bislang behandelten JOINS als 'INNER JOIN' bezeichnet. Es ist möglich INNER JOIN explizit in der Query anzugeben (FROM TABELLE1 INNER JOIN TABELLE2). Die Namen der Tabellen und Spalten sind grau, die eigentlichen Inhalte weiß hinterlegt. RIGHT OUTER JOIN FULL OUTER JOIN a1 b1 b1 c1 a1 b1 b1 c1 a2 b2 b2 c2 a2 b2 b2 c2 NULL NULL b3 NULL a3 NULL NULL NULL NULL NULL b3 NULL OUTER JOINS über mehrere Tabellen muss man in Abweichung von der INNER JOIN Syntax verschachteln und klammern: SELECT * FROM EINS LEFT OUTER JOIN ZWEI ON EINS.B = ZWEI.B LEFT OUTER JOIN DREI ON ZWEI.C = DREI.C Das Ergebnis der Query ist wie folgt: a1 b1 b1 c1 c1 d1 a2 b2 b2 c2 c2 d2 a3 NULL NULL NULL NULL NULL Eine Query, die das richtige Ergebnis zur Frage nach den Projekten und den Angestellten liefert, ist demnach: SELECT PROJEKT.P_NAME, ANG_PRO.ANGNR FROM PROJEKT LEFT OUTER JOIN ANG_PRO ON PROJEKT.PNR = ANG_PRO.PNR Sie liefert folgendes Ergebnis: DATAWAREHOUSE INTRANET INTRANET PROJEKT 2000 PROJEKT 2000 VU SQL KURS 205 117 198 112 198 117 NULL Übung 3.11a: Formulieren Sie eine Query, die die Namen der Projekte und die Namen und Nummern von evtl. zugeordneten Mitarbeitern ausgibt. Die Grundidee hinter dem Outer Join besteht darin, Informationen zu erhalten, die bei einem Inner Join verloren gehen. Dies passiert weil in einer der beiden Tabellen Zeilen vorhanden sind, die nach der Join-Bedingung keiner Zeile in der anderen Tabelle entsprechen. Ein Outer Join bezieht diese Zeilen mit ein und setzt in die Zeilenpositionen einen NULL-Wert, in der Werte einer passenden Zeile der anderen Tabelle auftauchen würden – wenn es eine passende Zeile gäbe. Ein Outer Join beinhaltet Zeilen, die ein Inner Join herausfiltert. Sie sollten Outer Joins benutzen, wenn Sie meinen, dass Informationen sonst verloren gehen könnten. Prof. Dr. Matthias Hemmje Kurs 01873 Daten- und Dokumentenmanagement im Internet LESEPROBE mathematik und informatik LG: Multimedia und Internetanwendungen Autoren: Anne Brüggemann-Klein, Jörg Keller, Dominic Heutelbeck, Matthias L. Hemmje 1873 Daten- und Dokumentenmanagement im Internet Kurseinheit 1: Das Modell der strukturierten Dokumente Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere das Recht der Vervielfältigung und Ver-breitung sowie der Übersetzung und des Nachdrucks, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder ein anderes Verfahren) ohne schriftliche Genehmigung der FernUniversität reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Inhalt I Inhalt Kurseinheit 1 Das Modell der strukturierten Dokumente Motivation und Einführung ........................................................................................... 3 1 Das Modell der strukturierten Dokumente .................................................................................5 1.1 Der Dokumentenbegriff ........................................................................................................5 1.2 Der Modellbegriff................................................................................................................. 6 1.3 Realisierung des Dokumentenmodells .................................................................................. 7 1.3.1 Dokumente näher betrachtet ....................................................................................... 8 1.3.2 Moderne Textdokumente ............................................................................................ 11 1.3.3 Dokumentenbestandteile ............................................................................................ 13 1.3.4 Dokumente strukturieren ............................................................................................ 15 1.3.5 Vorteile des Dokumentenmodells................................................................................ 16 1.3.6 Verfeinerungen des Dokumentenmodells ................................................................... 17 1.3.7 Strukturdarstellungen ................................................................................................. 18 1.3.8 Diskussion des Dokumentenmodells ........................................................................... 19 1.3.9 Umsetzungen des Dokumentenmodells ...................................................................... 21 1.4 Zeichenkodierungen .......................................................................................................... 26 1.4.1 Übersicht .................................................................................................................... 26 1.4.2 Was gehört zu einer Zeichenkodierung? ......................................................................28 1.4.3 Abstrakter Zeichensatz................................................................................................ 30 1.4.4 Codetabelle ................................................................................................................. 32 1.4.5 Kodierungsformat ....................................................................................................... 37 1.4.6 Kodierungsschema ...................................................................................................... 41 1.4.7 Jenseits von glattem Text – eine Übertragungssyntax .................................................42 1.4.8 Unicode-Werkzeuge ................................................................................................... 44 1.5 Zusammenfassung und Ausblick ........................................................................................ 44 1.6 Anhang: Formate am Beispiel ............................................................................................ 46 1.6.1 Fertig formatiertes Dokument für ein Journal ............................................................. 46 1.6.2 Unformatiertes Dokument mit reinem Text ............................................................... 48 1.6.3 Dokumentdarstellung mit optischer Gliederung ..........................................................50 1.6.4 Struktursicht mithilfe von eingebettetem Markup .......................................................52 1.6.5 Das Dokument im LaTeX-Format ................................................................................56 1.6.6 Prinzipien aus der Informatik .......................................................................................58 1.7 Literatur ............................................................................................................................. 60 1.8 Lösungen der Selbsttestaufgaben...................................................................................... 62 1.9 Index .................................................................................................................................. 66 Kurseinheit 2 – Dokumentbeschreibungssprachen Inhalt II Kurseinheit 3 – Konzepte von XML Kurseinheit 4 – Transformation, Ontologie und Standard Das Modell der strukturierten Dokumente Einleitung Dies ist die erste Kurseinheit des Kurses 1873 „Daten und Dokumentenmanagement im Internet“. Der Kurs ersetzt den Kurs 1865 „Datenformate im Internet“ vollständig, baut auf dessen Struktur und Inhalten, die von den Autoren A. Brüggemann-Klein und J. Keller in vielen Bereichen übernommen wurden, auf und erweitert und aktualisiert diesen um wesentliche Inhalte aus dem Bereich der XML-basierten Sprachfamilien. Dank gilt an dieser Stelle dem Fernstudenten Hartwig Massen für wertvolle Kommentare und Korrekturen zur vorliegenden Überarbeitung. Motivation und Einführung Die adäquate Repräsentation und Präsentation von Daten und Dokumenten bildet eine wichtige Grundlage für deren effektive Erfassung, Verwaltung, Austausch, Vermittlung und Nutzung. Die Verwendung geeigneter Standards erleichtert dabei den Austausch von Daten und Dokumenten zwischen Menschen, zwischen Menschen und Maschinen sowie zwischen Maschinen. Solche Standards stellen ein gemeinsames Grundverständnis unabhängig von einer individuellen Aushandlung von Formaten sicher und ermöglichen damit auch dynamische und wechselnde Kooperationsbeziehungen, die in unserer durch das Internet global vernetzten und sich kontinuierlich veränderten Welt an Bedeutung gewinnen. Der Schwerpunkt dieses Kurses Ein wichtiges Ziel des Kurses ist es, in die Anwendung und aktuelle Entwicklung von verteilten Faktendatenbanken und Dokumentdatenbanken einzuführen sowie Kenntnisse zu allgemein strukturierten Dokumentenkollektionen für das Internet unter Nutzung des World Wide Web zu vermitteln. Zunächst werden allgemeine Formate für Dokumente sowie für strukturierte Dokumente, die im Internet verfügbar sind vorgestellt. Der Dokumentenbegriff wird erläutert und das Modell der strukturierten Dokumente eingeführt. Als übergreifendes Format, das die Definition konkreter Websprachen wie XHTML erlaubt, nimmt die Extensible Markup Language zusammen mit Dokumententypdefinitionen und den „Satelliten“-Standards XML-Schema, XPath, XPointer, XLink und XQuery eine zentrale Stellung ein. Ihre Darstellung bildet einen weiteren Kern des Kurses. Der Kurs beinhaltet auch eine Einführung in die Praxis dynamischer Webdokumente. Als Stichworte seien hier XSLT genannt und für spätere Versionen des Kurses evtl. noch CGI, Dynamic HTML, JavaScript, SAX und Dom, sowie eher Service-orientierte Ansätze auf Basis der gerade entstehenden Web 3 4 2.0-Technologien wobei auch näher auf HTML und CSS sowie auf Ontologie eingegangen werden wird. Lernziele Das hauptsächliche Lernziel dieses Kurses ist der Erwerb von praktischer Kompetenz und Handlungsfähigkeit im Bereich der aktuellen Daten- und Dokumentenmanagementtechnologien im Internet. Nach Bearbeitung des Kurses sollten die besprochenen Formate gründlich bekannt sein. Dokumente in diesen Formaten sollten erstellt werden können. Eine Übersicht über die zur Verfügung stehenden Werkzeuge sollte bekannt sein und mit einigen von diesen Werkzeugen sollte auch praktische Erfahrung gesammelt werden. Der Kurs soll dazu befähigen, Projekte mit zu konzipieren, technisch zu betreuen und durchzuführen, die die Erstellung und Verwaltung von Daten- und Dokumentenbeständen im Internet zum Ziel haben. Ein weiteres sehr wichtiges Lernziel dieses Kurses betrifft das Modell der strukturierten Dokumente. Das Modell soll verinnerlicht und seine Bedeutung im Kontext der Informationsgesellschaft beurteilt werden können. Nach dem Durcharbeiten des Kurses sollten Sie wissen, dass strukturierte Dokumente wie gewöhnliche Daten von und mit Anwendungssystemen bearbeitet werden können. Es soll darüber hinaus vermittelt werden, wie Internetformate das Potential, welches in dem Modell der strukturierten Dokumente steckt, realisieren und wie diese Erkenntnisse von Ihnen auch praxisbezogen angewendet werden können. Schließlich soll der Kurs auch einen Ausblick auf mögliche künftige Entwicklungen eröffnen und insbesondere auch den Anschluss an den Kurs 1874 „Informations- und Wissensmanagement im Internet“ erleichtern. Hier lauten die wichtigen Fragen: Was leisten die gegenwärtig verwendeten Formate? Wo sind ihre Grenzen? Welche Weiterentwicklungen wären wünschenswert? Welche Entwicklungstrends sind insbesondere mit Blick auf das Semantic Web und auf das Web 2.0 absehbar? Zu den vorgestellten Formaten ist jeweils eine systematische und grundlegende Darstellung vorgesehen, die bei besonders zentralen Formaten um Übersichtstabellen ergänzt wird. Daneben wird auf die Originalspezifikationen des W3C sowie auf reichlich vorhandenes tutorielles Material im Internet selbst verwiesen. Die im Kurs eingeführten Daten- und Dokument-Formate werden im Text ausführlich durch Beispiele illustriert. Jedes Beispiel ist für sich lauffähig. Der Code wird in elektronischer Form zur Verfügung gestellt, sodass dieser ausprobiert und auch selbst modifiziert werden kann. Darüber hinaus kann der Der Dokumentenbegriff Das Modell der strukturierten Dokumente 5 Lernfortschritt fortlaufend anhand von in den Text eingestreuten Selbsttestaufgaben überprüft werden. Formalia Um die Praxisteile dieses Kurses bearbeiten zu können, wird ein Arbeitsplatzrechner mit Internetzugang benötigt. Darüber hinaus benötigen Sie Grundkenntnisse im Umgang mit einem Betriebssystem und Sie sollten die Möglichkeit haben, mit einem Texteditor einfache Textdokumente im ASCIIFormat zu erstellen bzw. zu bearbeiten und abzuspeichern. Als Texteditoren kommen Programme wie Notepad, vi, Edit oder Emacs in Frage. Bitte aktualisieren Sie auch Ihren Internetbrowser. Der Umgang mit Navigation und Suche im Internet wird als bekannt vorausgesetzt. Sollten dennoch Schwierigkeiten mit der Nutzung des WWW und dem Internet im Allgemeinen bestehen, hilft eventuell ein Blick in die Broschüre [5] der Fernuniversität Hagen weiter. 1 Das Modell der strukturierten Dokumente In der ersten Kurseinheit des Kurses 1873 wird zunächst der Dokumentenbegriff eingeführt und näher erläutert. Die Erläuterung verdient ein besonderes Augenmerk, denn der Dokumentenbegriff spielt eine zentrale Rolle in der hier dargelegten Thematik. 1.1 Der Dokumentenbegriff Für statisch-passive Dokumente wurde bereits in den achtziger Jahren das Modell der strukturierten Dokumente entwickelt. Durch dieses Modell wird eine Unterteilung in textuellem Inhalt, logischer Struktur und grafischem Format möglich. Die Quellrepräsentation des Dokuments bezieht sich auf den textuellen Inhalt und logische Struktur. Gesteuert von unabhängigen Formatvorgaben, so genannten Stylesheets, lässt sich daraus das graphische Format generieren. Quellrepräsentation Moderne Systeme zur Erstellung und Verwaltung von Dokumenten und großen Dokumentenbeständen profitieren vom Modell der strukturierten Dokumente, da es ein hohes Maß an Flexibilität bietet. Die logische Strukturierung unterstützt Anwendungen der Dokumentenverwaltung wie die automatische Generierung von Katalogeinträgen und Verzeichnissen oder das Information Retrieval nach bestimmten logischen Kriterien und erlaubt es ganz allgemein, Dokumente als Daten zu betrachten, die mithilfe von Computersystemen verwaltet und manipuliert werden können. Stylesheets 6 Die Unabhängigkeit der Stylesheets von den Dokumenten ermöglicht auf der einen Seite, dass ein- und dasselbe Dokument durch Kombination mit verschiedenen Stylesheets passend zum Anwendungszweck formatiert werden kann; auf der anderen Seite kann man verschiedene Dokumente durch Kombination mit ein- und demselben Stylesheet einheitlich formatieren. Auch lässt sich die Struktur beim Erstellen und Lesen von Dokumenten nutzen, etwa zur Navigation und zur Definition von Sichten etwa von Outline-Sichten. 1.2 Der Modellbegriff Modelle sind ein wichtiges, methodisches Mittel. Die Modellierung ist eine vereinfachte und auf das im aktuellen Kontext Wesentliche reduzierte und unter geeigneten Gesichtspunkten - systematisierte Darstellung. Modelle sind aus vielen Bereichen bekannt wie etwa aus der Architektur, der Biologie oder der Physik. Modelle können physikalischer oder gedanklicher Art sein; letztere können umgangssprachlich oder formal definiert sein. Gegenstandsbereich einer Modellierung können Konzepte, Vorgänge oder Erscheinungen und ihre Wechselwirkungen sein. In der Softwareentwicklung spielen Modelle bei der Anforderungsdefinition und im Design eine zentrale Rolle. Sie dienen der Kommunikation zwischen Ingenieuren und ihren Kunden und als Ausgangspunkt der weiteren Entwicklung. Die Softwaretechnik entwickelt Vorgehensmodelle auf verschiedenen Ebenen für den Prozess der Softwareentwicklung wie etwa das zwischenzeitlich veraltete Wasserfallmodell, das aktuellere Spiralmodell und neuerdings Verfeinerungen rund um die Modellierungssprache UML. Grundlage relationaler Datenbanksysteme ist das Tabellenmodell für Daten. Datenbankanwendungen selbst basieren auf einer Modellierung der Anwendungsdaten, meistens einem Entity-RelationshipModell. Der Modellbegriff Das Modell der strukturierten Dokumente Abb.: 1.1 Das Spiralmodell in der Softwareentwicklung nach Böhm [2] Modelle können unterschiedlichen Zwecken dienen: etwa der Entwicklung einer gemeinsamen Sicht und Terminologie, der Vermittlung erprobter Vorgehensweisen und Techniken, dem rationalen Beweisen oder Widerlegen von Hypothesen oder der Ableitung von Handlungsempfehlungen. Zwei zentrale und umgangssprachlich erläuterte Modelle werden in dieser Kurseinheit eingeführt und näher erläutert: das Modell der strukturierten Dokumente und ein Modell für Zeichenkodierungen. Die Dokumentenformate, die im weiteren Verlauf des gesamten Kurses hinzukommen, basieren ebenfalls auf Modellen. Bei der Definition von Datenund Dokumentformaten im Internet könnte eine Konzentration auf die Modellierung kürzere, genauere, verständlichere und leichter handhabbare Sprachdefinitionen hervorbringen als es derzeit der Fall ist. In diesem Kurs werden deshalb Modelle im Mittelpunkt und konkrete Instanzen dieser Modelle im zweiten Rang stehen, um dadurch ein vertieftes Verständnis zu ermöglichen. 1.3 Realisierung des Dokumentenmodells Hier wird anhand verschiedener Beispiele und Systeme erläutert, wie das Modell der strukturierten Dokumente mit Zeichenkodierungen, eingebettetem Markup, Dokumentengrammatiken und Stylesheets in der Praxis umgesetzt wird. Es 7 8 Realisierung des Dokumentenmodells folgen einige Beispiele für Sprachen und Formate sowie für Editier- und Formatiersysteme. Darüber hinaus folgt ein Überblick über weitere, im Internet einsetzbare Dokumentenmodelle und Formate. Auf der technischen Seite wird das Thema der Zeichenkodierungen vertieft. Dazu wird der Unicode-Standard vorgestellt. In den nachfolgenden Kurseinheiten wird das Thema der strukturierten Dokumente anhand gängiger Internetformate beleuchtet. Dazu gehören XML und die zugehörigen weiteren XML-basierten Sprachfamilien. 1.3.1 Dokumente näher betrachtet Historisch gesehen findet sich beispielsweise in Brockhaus’ Konversationslexikon in der vierzehnten Auflage von 1894 folgendes unter dem Begriff „Dokument“: „Im weiteren Sinne jeder Gegenstand, welcher dazu dient, die Wahrheit einer zu erweisenden Tatsache, besonders einer für ein Rechtsverhältnis erheblichen Tatsache, zu bestätigen. Im engeren Sinne versteht man darunter Urkunden oder Schriftstücke, im Gegensatz zu anderen körperlichen Beweisstücken, wie Grenzsteinen, Wappen, beschädigten Sachen.“ Historische Dokumentendefinition Ursprünglich waren Dokumente also tatsächlich physische Objekte, Gegenstände, die als einmalige Träger eines in menschliche Sprache gekleideten und schriftlich festgehaltenen Gedankens oder Sachverhalts fungierten. Ein Dokument neuerer Art, etwa ein sauber getippter Bogen Papier mit Name, Adresse, Personalausweisnummer und weiterer Information zur Person erfüllt einfach nicht denselben Zweck, auch wenn er dieselbe sprachliche Information enthält. Die Dauerhaftigkeit der Schriftform gegenüber der gesprochenen Sprache, die Kommunikation unabhängig von Zeit und Raum ermöglicht, und die Authentizität des Trägermediums, die durch Wasserzeichen, Stempel, Siegel, Barcode oder ähnliches erreicht werden kann, machen das Wesen von Dokumenten in diesem ursprünglichen Sinne aus. In der Brockhaus Enzyklopädie in der siebzehnten Auflage von 1968 findet sich dagegen unter dem Stichwort „Dokument“: „Als Dokumente können alle Unterlagen betrachtet werden, die Informationen beinhalten, also nicht nur publiziertes Wissen, sondern auch Briefe, Akten, Urkunden, Bildsammlungen, Filme u.v.a.“ Die Dokumente neuerer Art sind also Informationsträger. Die Schriftform ist immer noch wesentlich, aber das Trägermedium und die Art, wie die Information auf das Trägermedium aufgebracht ist, sind nebensächlich. Auf den sprachlichen Ausdruck kommt es an. Definition des Begriffes „Dokument“ Das Modell der strukturierten Dokumente 9 Den Unterschied zwischen dem ursprünglichen und dem neueren Dokumentenbegriff kann an zwei Arten von Delikten klargemacht werden. Das Fälschen eines Personalausweises oder einer Banknote beinhaltet immer auch eine Fälschung des Trägermediums und betrifft Dokumente im ursprünglichen Sinne. Kopieren hingegen – sei es Fotokopieren oder Abschreiben – generiert immer ein zweites Exemplar des Dokuments, selbst wenn sich die Erscheinungsform dabei total ändert. Die Umstände, unter denen ein solches Kopieren zulässig ist, regelt das Urhebergesetz. Das Gemeinsame an Dokumenten ursprünglicher und neuerer Art ist, dass sie durch ihre Schriftform eine ursprünglich sprachliche Mitteilung von der auditiven in die visuelle Übertragungsform und von der Flüchtigkeit der mündlichen Erzählung in die Dauerhaftigkeit des geschriebenen Wortes umsetzen. Somit werden die Grenzen von Zeit und Raum, die sonst der Senderin und dem Empfänger flüchtiger sprachlicher Mitteilungen gesetzt sind, überschritten. Dokumente ursprünglicher und neuerer Art unterscheiden sich auch dadurch, wie viele Exemplare es von einem Dokument geben kann und wie viele Leserinnen und Leser gleichzeitig Gebrauch von so einem Dokument machen können. Eine weitere und wichtige Unterscheidung, die zu einem dritten, dem modernen Begriff des digitalen Dokuments führt, hängt an der Idee vom Dokument als Informationsträger. Sprachlich formulierte Gedankengänge, Ideen, Fakten oder Aussagen werden erst dann zu Information, wenn sie von jemandem aufgenommen und verarbeitet werden. „Information ist Wissen in Aktion“ lautet die Kurzformel der Informationswissenschaft. Nur wie ist „jemand“ eigentlich definiert? In der Natur der Dinge liegt es dabei, zunächst an ein menschliches Gegenüber zu denken. Wie verhält es sich jedoch mit Computern, die ja dazu gedacht sind Informationen entgegen zu nehmen, weiterzuverarbeiten und anschließend verändert wieder auszugeben, wie dies ja bereits durch das EVA Prinzip definiert wird. Informationsverarbeitung mithilfe von Computerprogrammen führt demnach unmittelbar zum modernen Dokumentenbegriff. Wesentliche Tätigkeiten, die per Computer dazu beitragen den modernen Dokumentenbegriff zu prägen: x Gedankengänge organisieren und Dokumente planen x Gedanken verbalisieren und Dokumente erfassen x Dokumente editieren, formatieren und publizieren, also der Öffentlichkeit zugänglich machen Wissen in Aktion, ist Information 10 Realisierung des Dokumentenmodells x Dokumente ablegen, verwalten, abfragen, zusammenfassen, kombinieren, transformieren, extrahieren x Dokumente lesen, verstehen, memorieren, aus ihnen lernen und über sie nachdenken. Moderne Dokumente sind Informationsträger, die alle diese Funktionen effizient unterstützen. Moderne Dokumente müssen deshalb in ihrer Urform elektronisch gespeichert sein und je nach Anwendungszweck unterschiedliche Präsentationsmedien unterstützen. Selbsttestaufgabe 1.1 Überlegen Sie, ob auf die folgenden Dokumente eher der ursprüngliche, der neuere oder der moderne Dokumentenbegriff passt oder ob es sich vielleicht gar nicht um Dokumente handelt: • Personalausweis • Geldschein • Gemälde • Veranstaltungsplakat • Privatbrief • E-Mail-Nachricht • Memo an die Geschäftsleitung • Gedichtband • Roman • Bestellung • Produktbeschreibung • Fragebogen • Nachricht in einem Protokoll zum digitalen Zahlungsverkehr (Electronic Banking) Nicht alle Beispiele lassen sich eindeutig einordnen. Machen Sie sich klar, welche Argumente für oder gegen eine bestimmte Einordnung sprechen. Vorangehend wurde eine Übersicht über die wesentlichen Kategorien von Dokument bezogenen Begrifflichkeiten gegeben. Im weiteren Verlauf werden in diesem Kurs jedoch nur noch Dokumente der modernen Art besprochen. Dokumente sind also nachfolgend immer elektronisch gespeicherte Informationsträger, deren schriftsprachlich festgehaltene Inhalte sowohl von menschlichen Leserinnen und Lesern als auch von Computerprogrammen aufgenommen und weiterverarbeitet werden können. Im nächsten Abschnitt wird analysiert, welche Anforderungen sich daraus für Dokumentenformate Der moderne Dokumentenbegriff Das Modell der strukturierten Dokumente 11 ergeben und wie diese Anforderungen durch das Modell der strukturierten Dokumente erfüllt werden. 1.3.2 Moderne Textdokumente Unter diesem Begriff werden Textdokumente verstanden die in weltweit verteilten Systemen wie dem Internet und dem World Wide Web, für die unterschiedlichen Nutzungsarten und Anwendungszwecke bereitgestellt werden. Einige Fragen die sich aus diesem Kontext ergeben sind: x Welche Anforderungen ergeben sich für die Dokumentenformate? x Welche Formate sind in der Praxis bereits jetzt verfügbar, welche werden sich kurzfristig durchsetzen? x Welche Werkzeuge stehen zur Verfügung, um die Dokumente zu bearbeiten? x Was können etablierende und etablierte Disziplinen wie Document Engineering, Content Management und Elektronisches Publizieren beitragen? Haben Sie während des Lesens versucht diese Fragen zu beantworten? Die Fragestellungen sind dazu gedacht Ihnen ein Gespür für die Thematik, um die es in diesem Kurs geht, zu bekommen. Ausführlichere Antworten erfolgen im Kursverlauf. Noch vor wenigen Jahren gab es nur ein relevantes Dokumentenformat im Web, nämlich die Hypertext Markup Language. Einführungen in das Erstellen von HTML-Dokumenten umfassten einschließlich Darstellungen zur Geschichte des Internet und anderer historischer Anmerkungen gut hundert Buchseiten. Die erste konsolidierte und von der Internet Engineering Task Force verabschiedete HTML-Version 2.0 umfasste ca. 150 Sprachelemente, wobei mit Sprachelementen sowohl die Elemente als auch die Attribute gemeint sind. Die besagte HTML-Version wurde im November 1995als RFC 18661 eingeführt. Elektronisch arbeitende Produzenten und Verleger von Inhalten so genannte Content Provider konnten mit einer Handvoll von HTML-Befehlen auskommen, um eine dem aktuellen Stand der Technik entsprechende Webseite zu erstellen. _________________________________________________ 1http://rfc-ref.org/RFC-TEXTS/1866/index.html HTML IETF RFC 12 Realisierung des Dokumentenmodells Abb.: 1.2 Webseitengestaltung von 1995 Die HTML-Version 4.0, welche am 24. April 1998 vom World Wide Web Consortium verabschiedet wurde, umfasste dann bereits ca. 1.600 Sprachelemente; an für Textdokumente relevanten Formaten sind zu HTML die Sprachen: x Extensible Markup Language x Cascading Style Sheets x Extensible Style Language x XML Schema x XML Linking Language x XML Path Language x XML Pointer Language W3C hinzugekommen und es erschien das einschlägige Handbuch von Danny Goodman1 zu der nun programmierbaren HTML-Erweiterung Dynamic HTML. Mittlerweile erfordert es über 1.000 Buchseiten, um alle systemspezifischen Varianten und Strategien und deren Handhabung in einem weltweiten Publikationsmedium darzustellen. Neben den statisch-passiven Textdokumenten, die klassischen auf Papier gedruckten Dokumenten ähnlich sind, gewinnen im Internet in zunehmendem _________________________________________________ 1http://www.dannyg.com/pubs/index.html dHTML Das Modell der strukturierten Dokumente Maße dynamisch-aktive Textdokumente an Bedeutung. Sie enthalten aktive Komponenten, mit denen Leserinnen und Leser interagieren können. Es können sich auch der Inhalt und das Format dynamisch ändern. Beispiele für aktive Komponenten sind mathematische Formeln, die mittels eines ComputerAlgebra-Pakets auf Knopfdruck evaluiert werden können. Auch Visualisierungen von Algorithmen sind so möglich, wie etwa in diesem Beispiel1. Weitere Beispiele für dynamische Dokumente sind sich regelmäßig aktualisierende Börsenkurse oder auf Knopfdruck expandierbare Outline- Sichten. Zahl, Umfang und Funktionsbereich der relevanten Empfehlungen des W3C2 und deren Implementierungen haben bis heute derart zugenommen, dass eine systematische Einführung in die Sprachen selbst und in erprobte Praktiken der professionellen und systematischen Dokumenterstellung und Verarbeitung einen organisierten Einstieg in die Internetpraxis sehr erleichtert. Die neuen Dokumentenformate für statisch-passive Dokumente im Internet folgen ebenfalls dem Modell der strukturierten Dokumente. Neben HTML hat im Internet die Entwicklung im Kontext mit XML in den vergangenen Jahren immer mehr an Bedeutung gewonnen. 1.3.3 Dokumentenbestandteile Dokumente moderner Art sind als Informationsträger zu sehen. Wie aber kommen die Leserinnen und Leser an die in einem Dokument enthaltene Information? Als Einstieg in Beantwortung dieser Frage kann zunächst einmal ein konkretes Dokument betrachtet werden: Die Journalseite in Abschnitt 1.6.1 im Anhang. Es handelt sich hierbei um eine beispielhafte Annonce der Frauenbeauftragten der Technischen Universität München zu einem Computer-Propädeutikum. Bei der Lektüre dieses Dokumentes lässt sich feststellen, dass eine Reihe von Themen vorgeschlagen werden, die in einem Kurs des ComputerPropädeutikums behandelt werden können. Wie genau aber wurde diese Information im Dokument kodiert, vom Leser wahrgenommen und gedanklich verarbeitet? Die Ausgangsbasis sind die in dem Dokument enthaltenen Buchstaben und Interpunktionszeichen, die beim Lesen vom Menschen wie auch von Maschinen zu Wörtern und Sätzen zusammengesetzt werden. Darüber hinaus werden diese _________________________________________________ 1http://www.cs.auckland.ac.nz/software/AlgAnim/heapsort.html 2http://www.w3.org/ 13 14 Realisierung des Dokumentenmodells von Menschen aber auch intellektuell verarbeitet und mit Bedeutung versehen. Die Belegung von Symbolen mit Bedeutungen wird Semantik genannt. Der informationelle Inhalt des Dokuments wird also vom Leser erfasst. Dies ist eine Fähigkeit, die der Mensch den Maschinen zunächst voraus hat. In der letzten Phase der Erfassung gibt es also wesentliche Unterschiede zwischen der Art und Weise wie ein Mensch und wie eine Maschine Inhalte wahrnimmt, deren informationellen Gehalt erfasst und verarbeitet. Es sind also zunächst nicht nur die Buchstaben und Interpunktionszeichen alleine, die den Erfassungsprozess ermöglichen. Zu dieser Einsicht verhilft folgender Gegentest: Betrachtet ein menschlicher Leser die unformatierte Version des gleichen Dokumentes, die sich unter 1.6.2 im Anhang befindet, und versucht aus dieser Version die Gliederung des Konzepts herauszulesen, so stellt sich dies als mühsam bis unmöglich heraus. Offenbar unterstützt also die Formatierung des Dokuments – etwa die Wahl der Schriften (groß oder klein, fett oder kursiv), die Ausrichtung von Textpassagen (linksbündig, rechtsbündig oder zentriert) und die Abstände zwischen einzelnen Textpassagen – die visuelle Aufnahme und Verarbeitung der Information durch den Menschen. Geht man zurück zur zuerst betrachteten formatierten Version des Konzepts, so wird einem menschlichen Leser deshalb sofort die Gliederung in die Abschnitte „Hintergrund und Ziele“, „Das Kursangebot des ComputerPropädeutikums“ usw. klar. Die visuelle Formatierung der Überschriften in Fettschrift und mit deutlichen Abständen zum umgebenden Text geben ausreichende Hinweise um die Gliederungselemente zu erkennen. Die Buchstaben, Interpunktionszeichen und sonstigen Symbole, die in einem Dokument enthalten sind, zusammen mit dem Format, also der typografischen, sprich visuellen Ausprägung der Symbole und der geometrischen Anordnung oder dem Layout, ermöglichen es also den menschlichen Leserinnen und Lesern, den Informationsgehalt eines Dokumentes leichter, d. h. kognitiv effizienter zu erfassen. Was aber ist genau das Ergebnis dieses menschlichen Verarbeitungsprozesses? Zunächst einmal werden die Aussagen wörtlich erfasst und verstanden. Hinzu kommt jedoch auch das Erfassen der einzelnen Textpassagen und deren Rolle im Gesamttext. So identifiziert ein menschlicher Leser wahrscheinlich beim Betrachten der formatierten Version des Konzepts das Textstück „Ein Computer-Propädeutikum von Studentinnen für Studentinnen“ als Überschrift des gesamten Dokuments und das Textstück „Hintergrund und Ziele“ als Überschrift eines Abschnitts, der bis zur nächsten Überschrift reicht. Zusätzlich zur Aussage eines Dokuments erkennen menschliche Leserinnen und Leser also aufgrund des Inhalts und des Formats eine Strukturierung in logische Einheiten. In dem Konzept zum Computer-Propädeutikum ließen sich Das Modell der strukturierten Dokumente beispielsweise die folgenden Strukturelemente identifizieren: Briefkopf mit Namen der Autorinnen und Angaben zur Institution, Hauptüberschrift, Nebenüberschrift mit Datums- und Versionsangaben, Abschnitte mit Überschriften, Absätzen und Listen, Geldbeträge, Namen der Organisatorinnen und Datumsangaben. Die von den Leserinnen und Lesern erkannte Struktur ist nicht eindeutig. Hinweise auf die Struktur ergeben sich aus Inhalt und Format aufgrund von dem semantischen Verständnis der Textpassagen und der kulturellen, durch den Umgang mit zahlreichen Dokumenten ähnlicher Art gewonnenen Erfahrung. Für menschliche Leserinnen und Leser stellt sich also der Prozess der Informationsaufnahme und -verarbeitung folgendermaßen dar: Das Dokument wird mit Inhalt und Format präsentiert. Menschliche Leserinnen und Leser extrahieren daraus die Aussage des Dokumentes und konstruieren eine Struktur für die einzelnen Textelemente. Durch visuelle Wahrnehmung und gedankliche Arbeit unter Rückgriff auf das Sprachverständnis und das kulturelle Wissen wird die Bedeutung der Aussage interpretiert. Die Verwendung von Formatmerkmalen, Aussage und Struktur bilden die Grundlage für die weitere intellektuelle Informationsverarbeitung. Ein Dokument kann in ganz unterschiedlichen grafischen Aufmachungen dargestellt werden. Die Darstellung hängt auch vom Präsentationsmedium und der Lesesituation ab. Beispielsweise kann ein Dokument für das ermüdungsfreie Lesen am Bildschirm mit einer anderen Farbpalette und mit anderen Schriften formatiert sein als für das Lesen von einem Papierausdruck; oder Querverweise können für die Onlineversion als Hypertextlinks und für die Druckversion als Hinweise auf Seitenzahlen realisiert werden. Entscheidend für die „Identität“ eines Dokumentes ist, dass aus den verschiedenen Formaten immer noch dieselbe Aussage und im Wesentlichen dieselbe Struktur erkannt wird. 1.3.4 Dokumente strukturieren Bisher wurde das Erfassen der in einem Dokument enthaltenen Information von der Warte der menschlichen Leserinnen und Leser aus betrachtet. Was ist aber, wenn Computerprogramme zur Informationsverarbeitung herangezogen werden sollen? Wollte man den menschlichen Prozess des Textverstehens nachbilden, der bei einer formatierten und für das menschliche Wahrnehmungssystem „Auge“ realisierten Version des Dokuments startet, so müsste man Computerprogramme mit intelligenten Fähigkeiten ausstatten, die Zeichenerkennung, Sprachverstehen und Strukturerkennung einschließen. Von 15 16 Realisierung des Dokumentenmodells diesen Möglichkeiten ist man heute jedoch noch relativ weit entfernt, sie sind allerdings bereits Gegenstand intensiver Forschung. Der Ansatz der strukturierten Dokumente sieht folgenden Ausgangspunkt für die computergestützte Informationsverarbeitung vor: eine explizite Repräsentation von Inhalt und vor allem auch Struktur des Dokumentes im Sinne eines Repräsentationsmediums. Autorin oder Autor eines strukturierten Dokumentes editieren den eigentlichen Inhalt des Dokumentes und markieren die notwendigen Strukturelemente. Das zu den Textelementen passende Format kann aus einer separaten, vom Dokument unabhängigen und bei Bedarf auswechselbaren Formatvorlage, auch Stylesheet genannt, berechnet werden. Das Stylesheet enthält allgemeine Regeln, wie die einzelnen Strukturelemente zu formatieren sind. Durch eine Regel kann beispielsweise festgelegt werden, dass Überschriften in einer fetten Kursivschrift mit einem gewissen Abstand zum umgebenden Text formatiert werden sollen. Ein so genannter Formatierer bringt das mit Strukturmarkierungen versehene Quelldokument mit dem Stylesheet zusammen und formatiert das Dokument entsprechend der Vorgaben in dem Stylesheet. 1.3.5 Vorteile des Dokumentenmodells Ein solches Vorgehen hat als entscheidenden Vorteil die Flexibilität, mit welcher die Formatierung der Texte immer wieder geändert werden kann. Die logische Strukturierung unterstützt aber auch Anwendungen der Dokumentenverwaltung, sodass etwa die automatische Generierung von Katalogeinträgen und Verzeichnissen möglich wird oder das Wiederfinden von Information nach bestimmten logischen Kriterien. Die eigentliche Informationsverarbeitung kann sich also direkt auf die logische Struktur stützen. Die Unabhängigkeit der Stylesheets von den Dokumenten ermöglicht, dass ein Dokument durch Kombination mit verschiedenen Stylesheets passend zum Anwendungszweck formatiert werden kann. Außerdem können verschiedene Dokumente durch Kombination mit ein- und demselben Stylesheet einheitlich formatiert werden. Auch lässt sich die Struktur beim Erstellen und Lesen von Dokumenten nutzen, etwa zur Navigation und zur Definition von Sichten etwa Outline-Sichten. Von diesen Vorteilen profitieren besonders die Anwendungen, die große Dokumentenbestände erstellen und verwalten müssen. Eine umfangreiche Sammlung von Projektvorschlägen, die alle nach dem gleichen Muster logisch strukturiert und markiert sind, kann systematisch nach anwendungsnahen Kriterien abgefragt werden. Auch etwa die im letzten halben Jahr neu hinzugekommenen Vorschläge können mit Titel und Datum ausgegeben werden. Eine weitere Anwendung wäre, automatisch nach allen Projekten zu suchen, die ein bestimmtes gemeinsames Ziel verfolgen. Auch für die Verwaltung des Dokumentenbestandes bietet das Modell der strukturierten Formatvorlagen zur automatischen LayoutGenerierung Das Modell der strukturierten Dokumente 17 Dokumente Vorteile. Die mit der Verwaltung befassten Personen brauchen für den gesamten Bestand nur einmal die zu verwendenden Strukturelemente festzulegen. Für jedes Präsentationsmedium ist nur ein einziges Stylesheet nötig, welches dann auf alle Dokumente des Bestandes anwendbar ist. Für das Beispiel der Projektvorschläge würden zwei Stylesheets ausreichen, eines für das Lesen am Bildschirm und eines für das Steuern eines Ausdrucks. Das Modell der strukturierten Dokumente wurde in den achtziger Jahren entwickelt [1, 5, 9]; seine Wurzeln gehen sogar bis in die sechziger Jahre zurück [4]. Alle modernen Textverarbeitungssysteme unterstützen das Modell zumindest in Ansätzen. 1.3.6 Verfeinerungen des Dokumentenmodells Zum vollen Modell der strukturierten Dokumente gehört wesentlich dazu, dass die Namen der Strukturelemente frei wählbar sind. Wenn man beispielsweise ein Aufgabenblatt logisch strukturieren möchte, dann müssen die Strukturelemente wie Aufgabe, Abgabedatum, Punktezahl, Lösungshinweis oder Schwierigkeitsgrad angegeben werden können. Ist der Sprachvorrat, aus dem Strukturelemente gewählt werden können, fest vorgegeben und beschränkt, kann er nicht alle sich im Laufe der Zeit ergebenden Anwendungen abdecken. Dies verwässert allerdings die Vorteile der strukturierten Dokumente für die computergestützte Informationsverarbeitung, da semantische Information über die Rollen der Strukturelemente durch eventuelle Mehrfachbelegung verloren geht. Historisch ist übrigens anzumerken, dass es u. a. im Verlagswesen mehrere Bestrebungen gegeben hat, einen universell einsetzbaren Vorrat an Strukturelementen zu definieren. Für einige Spezialgebiete konnte auch tatsächlich eine Einigung über einen solchen Vorrat erzielt werden. Das bekannteste Beispiel ist die Sprachdefinition der Text Encoding Initiative (TEI) für den Bereich der textkritischen Apparate im geisteswissenschaftlichen Bereich; der Sprachvorrat, der hier definiert wurde, ist allerdings sehr umfangreich. In der Regel sind solche Versuche jedoch gescheitert und zugunsten von frei wählbaren Strukturelementen aufgegeben worden. Eine weitere Überlegung zum Modell der strukturierten Dokumente ist, ob der zugrunde liegende Vorrat an Strukturelementen formal definiert werden soll. Eine Strukturvorgabe ist eine mit formalen Methoden festgelegte Definition des Vorrats an Strukturelementen, die auch Einschränkungen zur Verwendung der Elemente beinhalten kann. Eine Strukturvorgabe hat Vorteile. Beispielsweise können Dokumente automatisch auf ihre strukturelle Korrektheit überprüft werden oder Editierhilfen können solche Vorgaben auswerten und zur Unterstützung der Autorin oder des Autors einsetzen. Schließlich wird durch Freie und vordefinierte Strukturelemente 18 eine formale Strukturvorgabe Dokumentenanwendung dokumentiert. Realisierung des Dokumentenmodells auch das Vokabular einer 1.3.7 Strukturdarstellungen Zur Markierung der Strukturelemente gibt es im Wesentlichen zwei schon lange etablierte Konzepte. Bei beiden Konzepten wird davon ausgegangen, dass die logische Strukturierung streng hierarchisch angelegt ist. Strukturelemente können also andere Strukturelemente vollständig enthalten, sich aber nicht mit ihnen überlappen. Die Strukturelemente, die im Beispiel der Annonce zu dem Computer-Propädeutikums in Abbildung unter 1.6.1 eingeführt worden sind, gehorchen dem Gesetz der hierarchischen Schachtelung. Bei dem ersten Konzept bzw. bei der ersten Methode wird die hierarchische Struktur graphisch dargestellt. Hier können zunächst drei Varianten vorgestellt werden. Abbildungen zu allen drei Varianten befinden sich im Anhang im Abschnitt 1.6.3. Bei der ersten Variante werden ineinander geschachtelte Rechtecke oder Boxen, die mit dem Namen des jeweiligen Elementes gekennzeichnet sind, genutzt. Die zweite – dynamische - Variante, bei der mit Einrückungen und Ikonen gearbeitet wird, könnte aus Dateibrowsern bereits bekannt sein. Eine dritte – ebenfalls dynamische – Variante besteht darin, die logische Struktur als einen Baum darzustellen. Die grafischen Möglichkeiten stellen hohe Anforderungen an die Formatierungsmöglichkeiten des darstellenden und ja auch möglichst noch Interaktionen zulassenden Systems. Eine nicht so anspruchsvolle Möglichkeit besteht darin, die hierarchische Struktur mittels einer Klammerstruktur zu linearisieren. Zu diesem Zweck wird jeder Textbereich, der Inhalt eines logischen Elementes ist, an seinem Anfang und an seinem Ende mit einer öffnenden und einer schließenden Klammer versehen, die den Namen des entsprechenden Strukturelementes enthält. Eine solche Klammer ist einfach so genannter Klartext, der sich durch syntaktische Konventionen vom eigentlichen Inhalt abhebt. Der Inhalt ist unformatiert. Bei der XML-Konvention wird der Anfang eines Tags durch den Begriff der in spitzen Klammern steht signalisiert <XXX>. Soll das Tag nicht mehr gelten, wird der Schrägstrich eingesetzt: </XXX>. Der Klartext für die öffnende oder schließende Klammer heißt Tag, was Auszeichnung bedeutet. Der Oberbegriff zu Tags und eventuellen weiteren Möglichkeiten, nicht zum Inhalt zählende Zeichen in einen Text einzustreuen, ist Markup. Eine grafische Verfeinerung dieser Darstellung wird erreicht, wenn mit Einrückungen und mit typografischer Differenzierung von Text und Markup gearbeitet wird. Embedded Markup Das Modell der strukturierten Dokumente Da der Markup mit im Text enthalten ist, wenn auch über syntaktische Konventionen vom eigentlichen Inhalt getrennt, spricht man auch von einem eingebetteten Markup. Von einem prinzipiellen Standpunkt aus gesehen, sind alle Darstellungsformen für strukturierte Dokumente äquivalent. Die Repräsentation der hierarchischen Struktur durch eingebetteten Markup ist technisch am einfachsten zu handhaben und ist deshalb derzeit noch die gängigste. Sie hat den Vorteil, dass Dokumente mit eingebettetem Markup mit jedem einfachen ASCII-Texteditor angesehen und bearbeitet werden können. Die Darstellungsweise ist allerdings unübersichtlich und nicht sehr eingängig. Die anderen Darstellungsformen stoßen an ihre Grenzen, wenn die Schachtelungstiefe sehr groß wird oder die Granularität der Struktur sehr fein. Probleme tauchen unter anderem schnell bei der logischen Beschreibung mathematischer Formeln auf. 1.3.8 Diskussion des Dokumentenmodells Das Modell der strukturierten Dokumente wird eingesetzt, um Dokumente für die Computerverarbeitung vorzubereiten. Die zentrale Idee ist, die Kerndaten des Dokuments redundanzfrei in einer Art Reinform vorzuhalten, wie man es auch beim Design relationaler Faktendatenbanken mit Normalformen verfolgt. Faktendaten, die sich aus dieser Quellform berechnen lassen oder die variabel gehalten werden sollen, werden nicht in der Quellform mit kodiert sondern bei Bedarf berechnet und gegebenenfalls als Sichten generiert. Verarbeitungsfunktionen können auf dieser Reinform der Daten aufsetzen und werden nicht belastet durch Idiosynkrasien im Datenbestand, die durch einzelne Anwendungen begründet sind. Im Datenbankbereich dient diese Methode gleichzeitig der logischen Datenunabhängigkeit. Änderungen an der Struktur der Quelldaten können vor Endsystemen, die über Sichten mit der Datenbasis zu tun haben, verborgen bleiben. Das Potential der Datenunabhängigkeit ist durch das Modell der strukturierten Dokumente und seine Umsetzung mit XML auch im Bereich der Webdokumente gegeben. Allerdings ist die Technik noch nicht so weit fortgeschritten wie im Datenbankbereich, sodass etwa mit entsprechenden Zugangsvoraussetzungen ausgestattete Personen einen Bestand von XMLDokumenten über mit XSLT-generierten Sichten bearbeiten könnten. In diesem Bereich sind noch interessante Forschungsarbeiten zu erledigen. Auch eine Theorie der Normalformen, wie sie im Datenbankbereich etabliert ist, gibt es für den Bereich der strukturierten Dokumente noch nicht. Das Modell der strukturierten Dokumente dient dazu, Inhalt und Struktur eines Dokumentes, auf denen die automatische Verarbeitung basieren soll, zu repräsentieren. Dabei ist es wichtig, die Strukturelemente je nach Anwendungsfall frei definieren und die entsprechenden Definitionen auch formal 19 20 Realisierung des Dokumentenmodells festschreiben zu können. Auf dieser Basis können Verarbeitungsfunktionen aufgesetzt und Sichten generiert werden, wobei die Basis je nach Anwendungsfall durch zusätzliche und separate Steuerungsdaten ergänzt werden kann. Historisch stammt das Modell aus dem Bereich der Dokumentenverarbeitung und Dokumentenverwaltung. Ein wichtiger Anwendungsfall in diesem Bereich ist die Formatierung. Vorgaben für die Formatierung werden in separaten und auswechselbaren Stylesheets vorgehalten und Formate aus beiden Beschreibungen zusammen berechnet. Über die Generierung formatierter Sichten hinaus sind Systeme des Document Management typischerweise in der Lage, Nummerierungen, Verzeichnisse und Querverweise aus der expliziten Repräsentation von Inhalt und Struktur zu erzeugen. Dies geschieht unter Hinzunahme von oft ebenfalls in Stylesheets enthaltenen Steuerungsdaten. Document Management Das Modell unterstützt jedoch nicht nur Anwendungsfälle des Document Management im engeren Sinne, sondern trägt auch Anwendungen im weiteren Bereich des Wissensmanagements. Das Modell der strukturierten Dokumente dient als Stütze, den Schritt Texte zu gut zu verwaltenden Texten weiterzuentwickeln und die maschinelle Lesbarkeit zu ermöglichen. Knowledge Management Zudem sollen Bereiche im Inhalt eines Dokuments mit zusätzlicher semantischer Information markiert und die Rolle des entsprechenden Textstücks benannt werden. Das Modell platziert sich damit in einem Spektrum, das von einer rein grafischen Repräsentation eines Dokuments, etwa als Pixelmuster oder als PostScript-Dokument, bis zu einer expliziten Repräsentation der Semantik, etwa als semantisches Netz reicht. Die rein grafische Repräsentation erfordert zur computergestützten Verarbeitung intelligente Software, die derzeit noch nicht in ausreichendem Umfang zur Verfügung steht. Eine ausgefeilte Repräsentation der Semantik erfordert einen hohen Overhead beim Erstellen und Bearbeiten der Dokumente. In der Praxis hat sich der Kompromiss, der bei der Konzeption des Modells eingegangen ist, seit langem bewährt. Bei Dokumentensystemen, die das Modell der strukturierten Dokumente implementieren, werden die Strukturelemente in der Regel mit eingebettetem Markup kodiert. Das ist der zweite pragmatische Kompromiss im Bereich des Modells, der sich jetzt auf die Umsetzung des Modells bezieht. Zwar erscheinen immer wieder Positionspapiere mit Titeln wie „Embedded Markup Considered Harmful“ [10, 11], aber auch hier scheint der Kompromiss den Test der Zeit zu bestehen. Was in diesem Kurs „Modell“ genannt wird, heißt in der älteren Literatur auch manchmal Dokumentenarchitektur. Der Begriff der Architektur macht klarer deutlich, worum es in einer ersten Annäherung an Dokumente und ihre Formate Das Modell der strukturierten Dokumente geht: relevante Aspekte von Dokumenten sollen identifizierbar und das Zusammenwirken transparent gemacht werden Es werden Überlegungen dazu angestellt werden, welche abstrakten Modelle den sich im Internet manifestierenden Formaten zugrunde liegen. Es steht dabei nicht immer für jede Ebene der Modellierung eine separate Begrifflichkeit – etwa wie hier „Architektur“ – zur Verfügung. Bei dem noch folgenden Modell für die Zeichenkodierung wird klar, warum in diesem Kurs der Begriff Modell eingeführt wird und wir die Thematik nicht mit „Architektur“ der strukturierten Dokumente erläutern. 1.3.9 Umsetzungen des Dokumentenmodells Anhand der meisten modernen Textverarbeitungssysteme wird das Modell der strukturierten Dokumente in irgendeiner Form umgesetzt. Die beiden Systeme LaTeX und MS-Word decken vom Typ her zusammen das Spektrum von Textsystemen ab, die in akademischen und technischen Dokumentierungen sowie im Büro zu finden sind. Die folgende Einführung der beiden Beispielsysteme soll dabei aufzeigen, in welcher Weise Verarbeitungssoftware für Dokumente heute das Modell der strukturierten Dokumente erfüllt. Die Diskussion soll darüber hinaus auch dafür sensibilisieren, bei der Erstellung von neuen eigenen Dokumenten die angebotenen Mechanismen eines Dokumentensystems zur Unterstützung des Modells der strukturierten Dokumente möglichst weitgehend auszunutzen. Dies ist im Interesse eines effizienteren Document Management und einer flexibleren Weiterverwendung der daraus resultierenden Dokument- und Datensammlungen. Umsetzung des Modells mit LaTeX Das Beispiel des Konzeptes zum Computer-Propädeutikum befindet sich im LaTeX-Format im Anhang unter 1.6.5. Der textliche Inhalt ist gleich dem in der Anzeige unter 1.6.1 und dem im XML-Format unter 1.6.4. Es ist auch eine gewisse Übereinstimmung bei den markierten Strukturen festzustellen. Die in der LaTeX-Version explizit markierten logischen Elemente sind die Angaben über die Autorinnen \author{...}, die Hauptüberschrift \title{...}, die Abschnittüberschriften \section{...}, die Liste \begin{itemize} ... \end{itemize}}, die Aufzählungspunkte \item, das Dokument als Ganzes \begin{document} ... \end{document}, das Datum \Datum und die Versionsnummer \Version{...}. Die syntaktischen Formen des Markup in LaTeX sind vielfältiger als in XML, auch wenn es gewisse Ähnlichkeiten gibt. Eine direkte Entsprechung zu XMLs Konstrukt <XXX>...</XXX>, um ein logisches Element XXX zu markieren, ist 21 22 Realisierung des Dokumentenmodells \begin{XXX} ... \end{XXX}, aber es existieren auch die Formen \XXX{...} und sogar \XXX ... ohne explizite Markierung des Elementes. Die Funktionsbedeutung ergibt sich aus der Anfangsmarkierung eines Elements zusammen mit der Metainformation, ob dieses nächste Element im Element XXX enthalten sein kann. Einen Sonderfall stellt die implizite Abgrenzung von Absätzen durch Leerzeilen dar. Das zur Verfügung stehende Repertoire von logischen Elementen ist aus der zugrunde liegenden Dokumentenklasse \documentclass{...} und den hinzugeladenen Paketen \usepackage[...]{...} ersichtlich. Hier werden externe Dateien referenziert, die systemweit zur Verfügung stehen können. Es werden die Sprachelemente definiert, die im Dokument vorkommen. Am Anfang der LaTeX-Version befinden sich außerdem auch intern definierte Elemente, nämlich \Datum und \Version. Bei LaTeX ist also vorgesehen, dass die Autoren ihr eigenes Vokabular von Elementen definieren und dass eine Gruppe von Autoren ein gemeinsames Vokabular benutzt. Dieses wird dann nur einmal definiert und kann von verschiedenen Dokumenten aus referenziert werden. Das Vokabular selbst ist formal definiert und weitere syntaktische Einschränkungen sind implizit. Mit LaTeX wird somit die erste Anforderung des Modells der strukturierten Dokumente erfüllt: Der Inhalt und die logische Struktur eines Dokumentes werden explizit repräsentiert. Die Strukturelemente können je nach Anwendungsfall frei definiert werden. Ansatzweise ist es auch möglich, die Strukturelemente formal festzulegen. Wie sieht es mit der zweiten Anforderung aus, dass Vorgaben für die Formatierung in separaten und auswechselbaren Stylesheets vorzuhalten sind? Hier kommen wieder die Konstrukte \documentclass{...} und \usepackage[...]{...} ins Spiel, die schon bei der Definition der Strukturelemente herangezogen worden sind. Die hier referenzierten externen Dateien erfüllen demnach eine Doppelfunktion: Die Festlegung darauf, welche Strukturelemente im Dokument vorkommen können und die Vorgabe, wie die Strukturelemente formatiert werden sollen. Sie können diese Doppelfunktion nachvollziehen, wenn Sie sich die interne Definition von \Datum und \Version anschauen. Die Definition von \Version besagt beispielsweise, dass das nach der Markierung in geschweifte Klammern eingeschlossene Argument, also die Versionsnummer, fett gesetzt werden soll: fett=boldface und wird abgekürzt zu bf. Die Definition von \Datum impliziert, dass die Systemfunktion \today aufgerufen wird, die dann das aktuelle Datum einsetzt. Das Modell der strukturierten Dokumente Die Forderung nach Stylesheets ist erfüllt. Im Falle von LaTeX sind diese extern und somit auswechselbar, oder intern und an das Dokument gebunden. Die Schwachstellen, die es in der Umsetzung des Modells der strukturierten Dokumente bei LaTeX gibt, werden bei einer genaueren Analyse offensichtlich. Die Vorgehensweise, mit der bei LaTeX die logische Markierung mit der Formatvorgabe verbunden wird, und wie das Format selber definiert ist weist einige Schwächen auf. In LaTeX wird die Markierung als Kommando einer so genannten Makroprogrammiersprache behandelt und die Formatdefinition als Programm in dieser Programmiersprache. Mit dieser Makroprogrammierung kann mehr erreicht werden als nur die Formatierung festzulegen. So speichern die Programme für \author und \title ihre Argumente nur intern. Erst das Kommando \maketitle im Eingabedokument, das gar keine offensichtliche logische Funktion hat, platziert die entsprechenden Angaben auf der Seite und legt ihre grafische Erscheinungsform fest. Im Extremfall können Makroprogramme sogar andere Kommandos umdefinieren. Beispielsweise könnten die Leerzeilen, die Absatzgrenzen markieren, so umdefiniert werden, dass das jeweils erste Wort eines Absatzes als Schlüsselwort fett gedruckt wird. Ebenso bewirkt das Klammerpaar \begin{verbatim} und \end{verbatim}, dass dazwischen eingeschlossenes Markup im Klartext ausgegeben und nicht interpretiert wird. In einer reinen Markupsprache werden nur die Markierungen bereitgestellt, die im Dokument verwendet werden. Bei LaTeX wird die Funktion von Markupsprache, Formatdefinition und Programmierung untrennbar aneinander gekoppelt. Dies muss nicht unbedingt problematisch sein – allerdings widerspricht es dem allgemeinen und wohlbegründeten Informatik-Prinzip, der Trennung von konzeptuellen Dimensionen. In der Praxis bedeutet das, dass eine Person, die ein Stylefile für LaTeX erstellen möchte, über ein ganzes Spektrum von Fertigkeiten verfügen muss. Die gewünschte logische Struktur muss geplant und organisiert werden, das grafische Design muss entworfen und die so entwickelten Vorstellungen sollten dann auch durch Computerprogramme realisiert werden. Die Einstiegshürde für einen kreativen Gebrauch von LaTeX ist also hoch. Im Gegenzug ist LaTeX durch seine Programmierbarkeit ein mächtiges und in seiner Funktionalität bei Bedarf beträchtlich erweiterbares System. LaTeX ist ursprünglich als Textsatzsystem entwickelt worden. Die Funktionen beschränken sich also im Wesentlichen auf den Bereich des Document Management. Da jedoch bei LaTeX die Technik des eingebetteten Markups zur Repräsentation von Strukturelementen zur Verfügung steht, können mithilfe von weiteren Programmen sowie entsprechenden Schnittstellen die LaTeX- 23 24 Realisierung des Dokumentenmodells Quelldokumente als Text eingelesen und automatisch weiterverarbeitet werden. Die LaTeX-Software ist frei verfügbar. Die deutsche TeX Users Group DANTE e.V. stellt LaTeX für verschiedene Plattformen unter http://www.dante.de zur Verfügung. Zusammenfassend lässt sich also feststellen, dass LaTeX das Modell der strukturierten Dokumente weitgehend erfüllt. Die Markupsprache besteht jedoch nicht aus einfach deklarativen Markierungen, sondern ist eine Programmiersprache ist. Umsetzung mit Microsoft Word Das System Microsoft Word, das nun näher betrachtet wird, steht LaTeX in seinen grundlegenden Eigenschaften fast diametral entgegen. Einfachheit der Benutzung als Bürosystem ist oberstes Ziel, für das Abstriche bei der Mächtigkeit, Flexibilität und Erweiterbarkeit in Kauf genommen werden. Ein Word-Dokument wird in einer bereits formatierten Sicht editiert. Markup wird in der Grundeinstellung nicht angezeigt. Die zugeordnete Formatierung wird gleich umgesetzt und am Bildschirm angezeigt. Das WYSIWYG Prinzip ist somit so gut wie perfekt umgesetzt wie die Abbildung unter 1.6.1 zeigt. Der Anhang enthält bei Abb.: 1.11 ein Bildschirmfoto des Beispiel-Dokuments mit struktureller Unterteilung. Wer ein Word-System installiert hat, kann vielleicht nachvollziehen, welche Strukturelemente im vorliegenden Beispiel verwendet wurden: Autorin, Titel, Hauptüberschrift, Nebenüberschrift, Datum, Version, Abschnittüberschrift, Absatz und Aufzählungspunkt. Autoren können mit Word Zeichenketten oder ganzen Absätzen eine Formatierung zuzuweisen. Die unterschiedlichen Formatierungen werden als Satz von Formatier-Parametern mit den jeweiligen Werten unter einem individuellen Bezeichner abgespeichert. Vom Modell der strukturierten Dokumente aus gesehen entsprechen die Namen der Formatvorlagen dem Vokabular an Strukturelementen, die Formatvorlage selber entspricht einer Regel im Stylesheet und die Zuweisungen der Formatvorlagen an die Absätze und Zeichenketten im Dokument entsprechen der Markierung mit logischen Strukturelementen. Mit Word wird damit die explizite Repräsentation von Inhalt und logischer Struktur eines Dokumentes ermöglicht. Die Strukturelemente können je nach Anwendungsfall frei definiert werden und ansatzweise ist es möglich, die Strukturelemente formal festzulegen. Word und Stylesheets What you see is what you get Das Modell der strukturierten Dokumente Darüber hinaus ist es in Word möglich in so genannten Document Templates, die als Stylesheets fungieren, Sammlungen von Formatvorlagen anzulegen, sie zu verwalten und sie Dokumenten zuzuordnen. Stylesheets in Word sind auf diese Weise auswechselbar. Mit Word wird das Modell der strukturierten Dokumente nicht in zufrieden stellendem Maße erfüllt. Der Grund liegt darin, dass außer für Absätze und darin enthaltene Zeichenketten keine logischen Markierungen im Dokument angebracht werden können. Beispielsweise können die einzelnen Aufzählungspunkte der Liste nicht zu einem logischen Element Liste zusammengefasst werden. Die Abschnittüberschrift mit den zugehörigen Absätzen kann nicht zu einem Abschnitt gebündelt und entsprechend markiert werden. Die Schachtelungstiefe von Strukturelementen in Word ist limitiert. Selbsttestaufgabe 1.2 Zählen Sie einige Beispiele auf, in denen Sie eine tiefere Schachtelung von Strukturelementen für sinnvoll halten als Word sie zulässt. Bei Word wird kein eingebettetes Markup für die Repräsentation von Strukturelementen im Dokument verwendet. Word-Dokumente liegen vielmehr in einem proprietären, nicht dokumentierten und sich häufig ändernden Format vor. Soll ein Word-Dokument automatisch weiterverarbeitet werden und dabei auch die Struktur der Formatvorlage ausgewertet werden, gibt es zwei Möglichkeiten: 1. Microsoft hat eine stabile Zugangsschnittstelle - die API - für Fremdanwendungen definiert. So können die Word-Dokumente programmgesteuert verarbeitet werden. Diese API ist von einigen Programmiersprachen wie Visual Basic oder C++ aus nutzbar. 2. Das Word- Dokument wird in das stabile und dokumentierte Format RTF exportiert. Anschließend kann auf die RTF-Daten zugegriffen werden. Der Haken bei diesem Ansatz ist allerdings, dass die Abbildung der Strukturelemente aus Word nach RTF instabil und mit Informationsverlust behaftet ist. Bei Word sind also erheblich höhere Hürden damit verbunden, die Dokumentdaten einer Fremdanwendung zugänglich zu machen als bei LaTeX. Nach ähnlichen Prinzipien wie Word operieren Word Perfect, FrameMaker, Microstar Office und Quark Express. Selbsttestaufgabe 1.3 25 26 Zeichenkodierungen Welches Textsystem benutzen Sie im Alltag oder im Beruf? Analysieren Sie, inwieweit Ihr Textsystem das Modell der strukturierten Dokumente unterstützt. Selbsttestaufgabe 1.4 Nehmen Sie sich ein Dokument vor, das Sie vor kurzem geschrieben haben. Analysieren Sie, welche Strukturelemente darin vorkommen. Nehmen Sie eine logische Markierung dieses Dokuments vor, zunächst auf Papier und dann mit Ihrem Textsystem. Definieren Sie zwei verschiedene Formate für Ihr Dokument und erstellen Sie entsprechende Stylesheets. Erstellen Sie ein zweites Dokument vom selben Typ wie Ihr Ausgangsdokument mit den gleichen Strukturelementen und mit anderem Inhalt. Wenden Sie Ihre beiden Stylesheets auf das neue Dokument an. 1.4 Zeichenkodierungen Der Inhalt ist ein grundlegender Bestandteil eines strukturierten Dokuments. Die Repräsentation im Computer, also die kodierte Datei, spielt somit auch eine wichtige Rolle. Es wird dabei davon ausgegangen, dass der Inhalt aus „glattem“ Text besteht. Dies ist eine Folge von elementaren Texteinheiten wie Buchstaben, Ziffern, Interpunktionszeichen und anderen Zeichen. Diese Zeichen müssen letztendlich in Bits und Bytes kodiert werden. Eine Zeichenkodierung gibt dazu eine Vorschrift an. 1.4.1 Übersicht Die bekannteste Zeichenkodierung ist US-ASCII, standardisiert als ANSI X3.4 im Jahre 1968. Sie ist eine die Variante zu ISO 646-US und somit von ISO 646 aus dem Jahre 1972. Der Zeichensatz von US-ASCII bei Abb.: 1.3 reicht lediglich um lateinische und US-amerikanische Texte sowie Texte in einigen wenigen weiteren Sprachen zu kodieren. Für das Deutsche, das Dänische und vierzehn weitere Sprachen sieht ISO 646 deshalb nationale Varianten vor, welche die US-ASCII-Zeichen „#“ (Hash), „$“ (Dollar), „@“ (At), „[“ (eckige Klammer auf), „\“ (Backslash), „]“ (eckige Klammer zu), „ˆ“ (Caret), „`“ (Grave), „{“ (geschweifte Klammer auf), „|“ (Strich), „}“ (geschweifte Klammer zu) und „˜“ (Tilde) durch nationale Zeichen ersetzen. Die deutsche Variante ISO 646-DE bei Abb.: 1.4 nimmt beispielsweise die in Tab.: 1.1 aufgeführten Ersetzungen vor. ISO 646-US [ \ ISO 646-DE Ä Ö Glatter Text Das Modell der strukturierten Dokumente 27 ] { Ü ä | } ~ @ ö ü ß § Tab.: 1.1 Die Ersetzungen der deutschen Variante von ISO 646 Aus diesem Grund erscheint ein Absender „Technische Universität München, Arcisstraße 21“ gelegentlich auch heute noch in amerikanischen E-MailProgrammen in der Form „Technische Universit{t M}nchen, Arcisstra˜e 21“. Die ursprünglich mit ISO 646-DE angelegte Kodierung der Adresse wird mithilfe von ISO 646-US ausgegeben. Abb.: 1.3: Der Zeichensatz ISO 646-US (US-ASCII) Abb.: 1.4: Die deutsche Variante ISO 646-DE von ISO 646 28 Zeichenkodierungen Abb.: 1.5: Der Zeichensatz ISO 8859-1 (ISO Latin-1) Mitte der achtziger Jahre erweiterte die European Computer Manufacturer’s Association den Zeichensatz US-ASCII zu einer Familie von Zeichensätzen, mit denen die alphabetischen Schriftsysteme kodiert werden können. Die inzwischen von der ISO unter dem Namen ISO 8859i1 kodierte Zeichensatzfamilie besteht aus den Zeichensätzen ISO 8859-1 bis ISO 8859-15. Jeder Zeichensatz ISO 8859-X umfasst die 128 US-ASCII-Zeichen und ergänzt sie um weitere 128 Zeichen. Für die meisten westeuropäischen Sprachen wie das Deutsche, Dänische oder Französische, ist ISO 8859-1, auch ISO Latin-1 (siehe Abb.: 1.5: Der Zeichensatz ISO 8859-1 (ISO Latin-1)) genannt ISO 8859-7 deckt das griechische Alphabet ab und ISO-8859-15 ersetzt im Wesentlichen das internationale Währungssymbol mit dem Eurozeichen. Die so genannte Code Page 12522 von Microsoft Windows ist in weiten Teilen identisch mit ISO 8859-1, ersetzt aber einige Kontrollzeichen von ISO 8859-1 durch druckbare Zeichen. So ist u. a. das Eurozeichen € vorhanden. Anfang der neunziger Jahre kamen Unicode und ISO/IEC 10646 heraus. Das Ziel dieser beiden in einem Sinne, den wir noch genauer kennen lernen werden, äquivalenten Zeichenkodierungen ist Universalität, also Texte aus sämtlichen Sprachen der Welt eindeutig zu kodieren. Die aktuellen Versionen Unicode 3.0 und ISO/IEC 10646-1:2000 kodieren 49.194 Zeichen, die alle modernen und viele klassische Sprachen abdecken. Unicode und ISO/IEC 10646 werden laufend um weitere historisch bedeutsame Zeichen und Sprachen ergänzt. 1.4.2 Was gehört zu einer Zeichenkodierung? Die Kodierungen ISO 8859 und Unicode sind von zentraler Bedeutung für die Internetformate HTML und XML. Ohne internationale Standards für die _________________________________________________ 1http://www.cs.tut.fi/~jkorpela/iso8859/ 2http://msdn.microsoft.com/en-us/goglobal/cc305145.aspx ECMA Das Modell der strukturierten Dokumente Kodierung universeller Zeichensätze wäre der grenzüberschreitende Dokumentenaustausch im Internet und im Web zum Scheitern verurteilt. Abb.: 1.6 Der Windows-Zeichensatz 1252 Im Folgenden werden diese Kodierungen genauer vorgestellt, und zwar im Rahmen eines abstrakten Kodierungsmodells für Zeichen [3, 6, 13]. Das Kodierungsmodell stellt einen konzeptuellen Rahmen dar, innerhalb dessen man die Kodierung von potentiell einigen Milliarden Zeichen in Bitmuster strukturieren und so besser verstehen kann. Die einzelnen Bestandteile des Kodierungsmodells sind: x ein abstrakter Zeichensatz x eine Codetabelle x ein Kodierungsformat x ein Kodierungsschema x eine Übertragungssyntax, die über so genannten „glatten Text“ hinaus geht Die einzelnen Bestandteile des Kodierungsmodells entsprechen zunehmend konkreten Repräsentationen von Zeichen, von einem abstrakten Begriff hin zu Bitmustern. Zwischen einer abstrakten Repräsentationsebene und der nächstliegenden konkreteren Repräsentationsebene besteht eine Abbil- 29 30 Zeichenkodierungen dungsvorschrift im mathematischen Sinne. Um über mehrere Ebenen hinweg von einer Zeichenposition in einer Codetabelle direkt zu seiner Kodierung in einem Kodierungsschema zu gelangen, können die verschiedenen Abbildungsvorschriften konkateniert werden. Daraus entsteht eine so genannte Zeichenkarte. 1.4.3 Abstrakter Zeichensatz Die obere abstrakte Ebene des Kodierungsmodells ist der abstrakte Zeichensatz. Dieser besteht aus einer Menge so genannter abstrakter Zeichen. Ein abstraktes Zeichen ist eine Informationseinheit, die zur Repräsentation, Organisation oder Kontrolle von Text dient. Es handelt sich hierbei also um Buchstaben, Ziffern, Interpunktionszeichen, Akzente, grafische Symbole, ideografische Zeichen, Leerzeichen, Tabulatoren, Zeilenweiterschaltung und vorschub und Kontrollkodes für Auswahl-Markierungen. Der Zeichensatz ISO 646-US (US-ASCII) beispielsweise besteht aus 33 Kontrollzeichen und 95 druckbaren Zeichen. Ein abstrakter Zeichensatz beinhaltet jedoch noch keine Ordnung oder Nummerierung der im Zeichensatz enthaltenen Zeichen. Dieser Aspekt kommt in der nächsten Stufe des Kodierungsmodells in Form einer Codetabelle hinzu. Abstrakte Zeichensätze wurden in der Regel festgelegt, um alle Texte einer bestimmten Sprache oder Sprachfamilie angemessen zu kodieren. Der Anspruch, alle lebenden und alle historisch bedeutsamen Sprachen mit einem einzigen Zeichensatz kodieren zu können, führte zu den (identischen) Zeichensätzen von Unicode und ISO/IEC 10646, dem so genannten Universal Character Set kurz UCS genannt. Zur visuellen Präsentation von Text dienen abstrakte graphische Einheiten, die Glyphen genannt werden. Glyphen entsprechen auf der Präsentationsebene den Zeichen auf der Kodierungsebene. Die Liste A, A, A, A, A, A List.: 1.1 Typographie und Auswirkungen enthält grafische Ausprägungen der Glyphen für den Buchstaben „A“, so genannte Glyphenbilder. Nach Design und anderen Charakteristika zusammengehörige Glyphenbilder bilden einen Font. Die Beziehung zwischen abstrakten Zeichen und Glyphen ist komplex. In Tab.: 1.2 gibt es eine beispielhafte Gegenüberstellung. Im einfachsten Fall präsentiert sich ein einzelnes Zeichen als genau eine Glyphe. Einzelne Glyphen können jedoch auch ganze Folgen von abstrakten Zeichen darstellen, wie etwa bei den Ligaturen „fi“, „fl“, „ff“ oder „ffl“. Ein einzelnes abstraktes Zeichen mit Akzent, Das Modell der strukturierten Dokumente 31 wie das Zeichen „ö“, kann durch zwei Glyphen dargestellt sein, nämlich die Glyphe für das Basiszeichen „o“ und die darüber positionierte Glyphe für den Akzent. Im Tamilischen gibt es Buchstaben, die durch ein Paar von Glyphen repräsentiert werden. Dieses Glyphenpaar umrahmt dann in der formatierten Sicht einen weiteren Glyphen, der den Nachbarbuchstaben im Text darstellt. Im Arabischen schließlich gibt es kontextuelle Formen: ein Zeichen wird je nach dem Kontext seiner Nachbarzeichen durch Glyphen ganz verschiedener grafischer Form dargestellt. Ähnliche Phänomene sind aus der mittelalterlichen Satztechnik bekannt. Gutenberg verwendete bereits für ein- und denselben Buchstaben verschieden breite Glyphen. Er verfügte auch bereits über abkürzende Symbole für Wörter oder Silben, um einen gleichmäßigen rechten Rand zu erzeugen. Hier gibt also die Formatierung den Kontext für die Wahl einer bzw. mehrerer Glyphen. In vielen Fällen sind die elementaren Texteinheiten, die als abstrakte Zeichen Eingang in einen Zeichensatz finden sollen, nicht offensichtlich. Sowohl aus den verschiedenen Sprachen, deren Texte kodierbar sein sollen, als auch aus den verschiedenen Verarbeitungsfunktionen, die auf die Texte Anwendung finden sollen, können Anforderungen und somit Konflikte erwachsen. Abstrakte Zeichen A f+i f+f+l ö → Glyphen A Fi Ffl o+¨ oder → Tab.: 1.2 Das Verhältnis von abstrakten Zeichen und Glyphen Im Schwedischen beispielsweise sind „ä“ und „ö“ Buchstaben für sich, die hinter „z“ im Alphabet angeordnet sind. Im Französischen dagegen gibt die Diaräse über einem Vokal lediglich einen Hinweis, dass der Vokal separat zu sprechen ist, etwa in „duët“. Anstelle eines einzigen abstrakten Zeichens „ë“ wären also die beiden abstrakten Zeichen „e“ und „¨“ mit zwei kombinierbaren Glyphen natürlicher. Für die Darstellung eines deutschen Textes in gedruckter Form ist die Unterscheidung von Groß- und Kleinbuchstaben im Zeichensatz äußerst bequem. Bei der Nutzung einer Sortierfunktion stellt sie jedoch ein kleines Hindernis dar. Im Spanischen gilt „ll“ hinsichtlich des alphabetische Sortieren als 32 Zeichenkodierungen ein einziger Buchstabe, für die Formatierung wird „ll“ jedoch als Folge von zwei Buchstaben behandelt. Die Festlegung eines abstrakten Zeichensatzes erfordert also eine sorgfältige Abwägung von verschiedenen Alternativen, wobei Sprachen, Schriften und Bearbeitungsfunktionen zu berücksichtigen sind. Das zugegebenermaßen sehr allgemein formulierte Ziel bei der Entwicklung des Unicode-Zeichensatzes und der gesamten Unicode-Kodierung war es, die Implementierung nützlicher Verarbeitungsprozesse für Textdaten zu ermöglichen. Unicode 3.0 formuliert zehn Designprinzipien für den Unicode-Standard. Zwei davon lassen sich bereits mit den Begriffen auf der Ebene des Zeichensatzes formulieren: x x Unicode kodiert Zeichen, nicht Glyphen. Unicode kodiert glatten Text, keine Formatinformation. Glyphen spielen bei der Formatierung von Texten eine Rolle und sind auch bei der automatischen Texterkennung interessant. Für die computerisierte Weiterverarbeitung von Inhalten sind sie naturgemäß nicht besonders wichtig. 1.4.4 Codetabelle Auf der nächsten Stufe des Kodierungsmodells steht die Codetabelle, die den abstrakten Zeichen im Zeichensatz eine Codeposition zuweist. Eine Codeposition ist immer eine natürliche Zahl, also größer oder gleich 01. Der Code-Raum einer Zeichenkodierung ist immer ein Abschnitt der natürlichen Zahlen, der alle Codepositionen enthält. Der Code-Raum kann jedoch auch Zahlen enthalten, die keine zulässigen Codepositionen sind. Codepositionen werden üblicherweise in Hexadezimalnotation angegeben, wodurch eine natürliche Beziehung zu Bitmustern hergestellt wird. Diese Beziehung kommt auf der nächsten Stufe des Kodierungsmodells – dem Kodierungsformat – zum Tragen. Ein Bit dient zur Darstellung oder Speicherung von 2 Zuständen, die durch die Ziffern 1 und 0 repräsentiert werden. Die sechzehn möglichen Sequenzen von vier Bits werden üblicherweise mit den Ziffern 0,...,9 und den Buchstaben A,...,F, auch Hexadezimal-Ziffern genannt, bezeichnet. _________________________________________________ 1 Für diesen Kurs ist die Menge der natürlichen Zahlen so definiert, dass sie die 0 enthält: Es gilt demzufolge IN entspricht IN+0 Das Modell der strukturierten Dokumente 33 Die Hexadezimal-Ziffern 0,...,9 und A,...,F stehen für die Dezimalzahlen von 0 bis 15. Jede Hexadezimalzahl stellt also eine natürliche Zahl dar. Eine Sequenz von Hexadezimal-Ziffern hn...h0 kann in eine Dezimalzahl umgewandelt werden mit folgender Summationsregel: h0 + h116d + h2162d + ... + hn16nd Die Zahl 16 ist hierbei in Dezimalschreibweise – erkennbar durch das Zeichen „d“. Die Tabelle Tab.: 1.3 zeigt eine Beziehung zwischen dezimaler, hex- und binärer Schreibweise. Die Dezimal-Zahlen von 0 bis 255 können somit durch Sequenzen von zwei Hexadezimal-Ziffern dargestellt werden und Zahlen von 0 bis 65.535 durch Sequenzen von vier Hexadezimal-Ziffern und damit durch 16 Bit. Sequenzen mit einer Länge von 16 Bit werden auch Word genannt. Selbsttestaufgabe 1.5 Erstellen Sie eine Additions- und eine Multiplikationstabelle für Hex-Ziffern. Wie in Abb.: 1.3 gezeigt, umfasst der Code-Raum für US-ASCII 128 Positionen. In hexadezimaler Schreibweise geht der Code-Raum also von 0 bis 7F. Hex-Ziffer 0 1 2 3 4 5 6 7 8 9 A B C D E F Bitmuster 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Dezimalschreibweise 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Tab.: 1.3 Die sechzehn Hex-Ziffern und ihre Repräsentationen als Bitmuster Der Code-Raum für ISO 8859-X umfasst die 256d Positionen von 0 bis FFh, der für Unicode die 65.536d Positionen von 0 bis FFFFh plus die 1.048.576d 34 Zeichenkodierungen Positionen von 10000h bis 10FFFFh und der für ISO/IEC 10646 die 2.147.483.648d Positionen von 0 bis 7FFFFFFFh. Kodierung US-ASCII ISO 8859-X Unicode ISO / IEC 10646 Code-Raum 0-7F 0-FF 0-10FFFF 0-7FFFFFFF Zahl der Codeposition 128 256 65.536+1.048.576 2.147.483.648 Tab.: 1.4 Code-Räume für verschiedene Kodierungen Die Code-Räume können weiter strukturiert sein: Abb.: 1.7 Unicode-Code-Raum mit Surrogatpositionen und privatem Bereich Die Positionen von 0 bis 1Fh und die Position 7Fh von US-ASCII sind Kontrollzwecken vorbehalten, ebenso die Positionen 80h bis 9Fh von ISO 8859-X. Beide Code-Räume können durch ein Byte repräsentiert werden. Der Unicode-Code-Raum in Abb.: 1.7 enthält Lücken an den 2.048d Surrogatpositionen von D800h bis DFFFh und an den Positionen FFFEh sowie FFFFh. Diese Positionen sind für spezielle Funktionen vorgesehen und es werden ihnen auch künftig keine Unicode-Zeichen zugeordnet werden. Die 6.400 Unicode-Codepositionen von E000h bis F8FFh – also knapp 10 Prozent des Code-Raums von 0 bis FFFFh – sind für private Zwecke reserviert. Die Positionen sind etwa für Logos, für Icons oder für in speziellen Notationen benötigte Zeichen etwa wie bei Musik und Tanz außerhalb des UnicodeZeichensatzes freigegeben. Die Codepositionen in diesem Bereich werden auch in späteren Unicode-Ergänzungen für private Verwendung freigehalten. Selbsttestaufgabe 1.6 Berechnen Sie den prozentualen Anteil der Codepositionen von E000h bis F8FFh am Code-Raum von 0 bis FFFFh. Von den übrigen 57.086d Unicode-Positionen im Bereich von 0 bis FFFFh sind 65d mit Kontrollzeichen belegt, ist 49.194d Positionen ein druckbares Zeichen zugeordnet und sind 7.827d Positionen noch frei für Erweiterungen von Unicode. Im nächsten Abschnitt bei der Diskussion von Kodierungsformaten wird Das Modell der strukturierten Dokumente 35 erläutert, wie der Unicode-Code-Raum im Bereich von 0 bis FFFFh durch zwei Bytes und im Bereich von 10000h bis 10FFFFh durch vier Bytes repräsentiert wird. Derzeit, d. h. bis zur Version 3.0, enthält die Unicode-Kodetabelle nur Werte im Bereich von 0 h bis FFFFh. Der Code-Raum von ISO/IEC 10646 ist konzeptuell unterteilt in 128 Gruppen von 256 Ebenen, wobei jede Ebene 256 Spalten mit je 256 Seiten, also insgesamt 65.536 Zeichen, enthält. Derzeit weist ISO/IEC 10646-1:2000 nur den Codepositionen von 0 bis FFFFh, die in Ebene 0 von Gruppe 0 liegen Werte zu. Diese Ebene heißt auch Basic Multilingual Plane. Die Kodetabellen von Unicode Version 3.0 und ISO/IEC 10646-1:2000 sind Position für Position identisch. Das Unicode-Konsortium und die ISO haben sich verpflichtet, diese Übereinstimmung auch bei späteren Ergänzungen der Kodetabelle aufrechtzuerhalten; sie haben eine Organisationsform wechselseitiger Liaisonen geschaffen, die dies garantieren kann. Unicode beinhaltet für jedes in seiner Codetabelle kodierte Zeichen die folgenden Daten: • die Codeposition des Zeichens • ein typisches Glyphenbild für das Zeichen • einen Namen • semantische Information Die semantische Information ist eine Spezialität bei Unicode. ISO/IEC 10646 stellt diese Information nicht zur Verfügung. Für die Codeposition 00AFh steht in Unicode die folgende Information zur Verfügung: Das Zeichen hat (1) den Unicode-Namen „Macron“, (2) alternative Namen „Overline“ und „APL Overline“ und ist (3) grafisch ein hochgestellter waagerechter Strich. Das Macron bewirkt (4) einen horizontalen Vorschub (Spacing Character) und steht (5) in Beziehung zu weiteren Unicode-Zeichen, u. a. dem Zeichen 0304 „Combining Macron“, das genauso aussieht wie das Macron selbst, aber beim Formatieren keinen Vorschub bewirkt (Nonspacing Character), sondern sich über das vorangehende Basiszeichen positioniert. Das Makron kann (6) zerlegt werden in das Leerzeichen 0020, gefolgt von dem Combining Macron 0304. Das Macron 00AF ist (7) im Unterschied zum Combining Macron kein Kombinationszeichen sondern ein Basiszeichen. Das Macron wurde, wie viele andere Unicode-Zeichen, aus Kompatibilitätsgründen in die Codetabelle aufgenommen. Hier wirkt sich das Designziel der Konvertierbarkeit von existierenden Standards nach Unicode und zurück aus. Ein Zeichen, das nur aus Kompatibilitätsgründen in der Codetabelle steht, lässt sich gemäß einer Unicode-Vorgabe immer zerlegen in eine Sequenz aus so genannten Primärzeichen. BMP 36 Zeichenkodierungen Für Basiszeichen, die von Kombinationszeichen gefolgt sind, wird bei Unicode ein Äquivalenzbegriff definiert. Kombinationszeichen, die grafisch an unterschiedlichen Stellen am Basiszeichen positioniert werden, können miteinander ausgetauscht werden. Beispielsweise können für die beiden Kombinationszeichen 0307h „Combining Dot Above“ und 0323h „Combining Dot Below“ die Plätze getauscht werden, sodass die beiden Kodierungen 006F:0307:0323h und 006F:0323:0307h für ein „o“ mit einem Punkt über sich und einem Punkt unter sich miteinander äquivalent sind. Auf dem Äquivalenzbegriff für Zeichenfolgen und der Zerlegung von Kompatibilitätszeichen in Folgen von Primärzeichen und der Komposition von Kompatibilitätszeichen aus Folgen von Primärzeichen beruhen auch zwei Normalisierungen von Unicode Zeichenketten, nämlich die Precomposed Form und die Decomposed Form. Bei Web-Texten sollten stets Zeichen benutzt werden, die schon so weit wie möglich zusammengesetzt sind. Verbleibende Kombinationszeichen sollten in normierter Reihenfolge angegeben werden. Web-Anwendungen sollten bei Texten, die eingelesen werden so liberal wie möglich programmiert sein. Im Gegenzug dazu sollten sie so konservativ filtern bei Texten, die sie ausgeben. Dies soll Kompatibilitätsprobleme weitgehend vermeiden. Von den zehn Designprinzipien, die Unicode anführt, lassen sich fünf auf der Ebene der Codetabelle erklären: Kodierung/Kodierungsformat Code-Raum/Code-Einheit/Länge US-ASCII / kanonisch ISO 8859-X / kanonisch ISO / IEC 10646, Ebene 0 / UCS-2 ISO / IEC 10646 / UCS-4 Unicode 3.0 / UTF8 Unicode 3.0 / UTF16 0-7F / 1Byte / fest (1) 0-FF / 1 Byte / fest (1) 0-FFFF / 1 Word / fest (1) 0-7FFFFFFF / 2 Word / fest (1) 0-10FFFF / 1 Byte / variabel (1-4) 0-10FFFF / 1 Word / variabel (1-2) Tab.: 1.5 Kodierungsformate für verschiedene Kodierungen 1. Unifikation: Unicode repräsentiert Zeichen, die in verschiedenen Alphabeten vorkommen, aber vom Aussehen her ähnlich sind, nur einmal. 2. Konvertierbarkeit zwischen etablierten Standards: Eine eineindeutige Abbildung aus einem etablierten Standard nach Unicode soll ermöglicht werden. Zeichenpositionen aus einem einzelnen international verbreiteten Zeichensatz, die nach dem Designprinzip der Unifikation eigentlich miteinander identifiziert werden müssten, erhalten trotzdem getrennte Unicode-Codepositionen. Äquivalenz von Zeichen Das Modell der strukturierten Dokumente 3. Semantik: Unicode definiert semantische Eigenschaften für Zeichen. 4. Dynamische Komposition: Jedes Basiszeichen kann mit beliebig vielen Kombinationszeichen gleichzeitig gepaart werden. 5. Charakterisierung äquivalenter Kodierungen: Für die verschiedenen Kodierungen eines Basiszeichens mit Kombinationszeichen oder eines primären und eines aus Kompatibilitätsgründen in den Zeichensatz aufgenommenen Zeichens kann eine normalisierte Kodierung gefunden werden. 1.4.5 Kodierungsformat Mithilfe des Kodierungsformats für eine Codetabelle werden die Bitrepräsentationen für die Codeposition festgelegt. Dazu gibt es eine Code-Einheit, die in der Regel aus acht oder sechzehn Bits besteht. Durch das Kodierungsformat werden dann die Positionen eines Code-Raums in Sequenzen von CodeEinheiten und somit in Bitmuster abgebildet. Wird jede Codeposition einer Codetabelle auf die gleiche Anzahl von Code-Einheiten abgebildet, sprechen wir von einem Kodierungsformat fester Länge; andernfalls hat das Kodierungsformat variable Länge. Ein kanonisches Kodierungsformat fester Länge ergibt sich aus der Dualzahldarstellung von Codepositionen. Die Anzahl der jeweils benötigten CodeEinheiten ergibt sich aus der Größe des Code-Raum und der Zahl der Bits in einer Code-Einheit. In Tab.: 1.5 gibt es eine Übersicht über die verschiedenen Kodierungsformate. Für US-ASCII bzw. seine ISO 646-Varianten sowie für die ISO 8859XKodetabellen ist das kanonische Kodierungsformat das einzig gebräuchliche. Für die höchstens 256d vielen Positionen genügen eine Code-Einheit von acht Bits sowie eine Code-Einheit pro Zeichenposition. Die beiden kanonischen Kodierungsformate für die Code-Räume von 0 bis FFFFh bzw. von 0 bis 7FFFFFFFh heißen UCS2 und UCS4. Beide Kodierungsformate repräsentieren eine Codeposition mit genau einer Code-Einheit. Im Falle von UCS2 ist die Code-Einheit 16 Bit lang und im Falle von UCS4 ist sie 32 Bits lang. Prinzipiell kann eine Kodierung mehrere Kodierungsformate definieren und das kanonische Kodierungsformat muss nicht darunter sein. Unicode 3.0 beispielsweise definiert nur zwei Kodierungsformate, nämlich UTF8 und UTF16, wobei UTF für Unicode Transfer Format steht. UTF8 hat eine Code-Einheit von 8 Bits Länge und repräsentiert Codepositionen mit einer bis vier Code-Einheiten. 37 38 Zeichenkodierungen UTF16 hat eine Code-Einheit von 16 Bits Länge und repräsentiert Codepositionen mit einer bis zwei Code-Einheiten. Ursprünglich war Unicode für einen Code-Raum von 0 bis FFFFh ausgelegt, sodass sechzehn Bits genügt hätten, um Codepositionen darzustellen. Tatsächlich hätte dieser Code-Raum ja auch mindestens bis Version 3.0 ausgereicht. Als jedoch klar wurde, dass zumindest für alle historisch interessanten Sprachen und Alphabete der Code-Raum nicht ausreichen würde und weil man mit ISO/IEC 10646 und seinem größeren Code-Raum kompatibel bleiben wollte, wurde das Konzept der Surrogat-Codepositionen eingeführt und der Code-Raum von Unicode bis zur Position 10FFFFh erweitert. Das Kodierungsformat UTF16 benutzt jeweils ein Paar von Surrogatpositionen, um Positionen jenseits von FFFF darzustellen. UTF16 stellt wie die kanonische Kodierung jede gültige Codeposition im Bereich von 0 bis FFFFhdar. Die ungültigen Codepositionen in dem so genannten hohen Surrogatbereich von D800h bis DBFFh und in dem niedrigen Surrogatbereich von DC00 bis DFFF entsprechen den hohen und niedrigen Surrogat-Bitfolgen der Form 110110xxxxxxxxxxb und 110111xxxxxxxxxxb, in denen jeweils zehn Bitpositionen für 210 verschiedene Werte frei wählbar sind. Die Gegenrechnungen: DBFFh +1-D800h =DC00h-D800h=400h=4x162d=210d DFFFh +1-DC00h=E000h-DC00h=400h=210d bestätigen, dass in jedem der beiden Surrogatbereiche 210, also 1024d ungültige Codepositionen liegen. Ein Paar von Surrogatpositionen, von denen die erste im hohen und die zweite im niedrigen Bereich liegt, ist somit eindeutig charakterisiert durch zwanzig Bits, die wiederum die 220 Werte von 10000h bis 10FFFFh repräsentieren können: 10FFFF h+1-10000h=110000h-10000h=100000h=165d=220d Es ist deshalb stimmig, wenn bei UTF16 eine Codeposition P im Bereich von 10000h bis 10FFFFh durch die kanonische Bitdarstellung der beiden hohen und niedrigen Surrogatpositionen H und L repräsentiert, wobei sich H und L wie folgt berechnen: H = (P – 10000h)DIV400h + D800h L = (P – 10000h)MOD400h + DC00h Das Modell der strukturierten Dokumente Einheiten 1 2 3 4 5 6 Darstellungsform 0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx (10xxxxxx)2 11110xxx (10xxxxxx)3 111110xx (10xxxxxx)4 1111110x (10xxxxxx)5 39 freie Bits 7 11 16 21 26 31 Maximum 7F 7FF FFFF 1FFFFF 3FFFFFF 7FFFFFFF Tab. 1.6: Grunddaten zu Kodierungseinheiten Umgekehrt bestimmen eine hohe und eine niedrige Surrogatposition H und L eine Unicode-Position P im Bereich von 10000 bis 10FFFF wie folgt: P = (H − D800h) · 400h + (L − DC00h) + 10000h Selbsttestaufgabe 1.7 Wie wird die Unicode-Position F0000 unter UTF16 dargestellt? Selbsttestaufgabe 1.8 Welche Unicode-Position wird unter UTF16 durch die beiden Surrogat-Words DAFF und DEFF dargestellt? Das zweite Unicode-Kodierungsformat, nämlich UTF8, hat die besondere Eigenschaft, die ersten 128 Codepositionen kanonisch mit einem Byte darzustellen. UTF8 ist damit US-ASCII-transparent. Die Kodierungseinheit von UTF8 ist 8 Bits lang. UTF8 stellt jede Position im Bereich von 0 bis FFFFh mit ein bis drei Kodierungseinheiten, im Bereich von 0 bis 10FFFFh mit ein bis vier Kodierungseinheiten und im Bereich von 0 bis 7FFFFFFFh mit ein bis sechs Kodierungseinheiten dar. Die UTF8-Darstellung einer Position mit einer einzigen Kodierungseinheit hat die Form 0xxxxxxxb mit einer führenden 0 und beliebigen Bits, die anstelle des Platzhalters x stehen. Die UTF8-Darstellung einer Position mit n Kodierungseinheiten hat die Form 1n0x7−nb gefolgt von n − 1 Kodierungseinheiten der Form 10xxxxxxb. Bei drei Kodierungseinheiten sind also genau sechzehn Bits frei wählbar, sodass mit drei Kodierungseinheiten unter UTF8 Code-Positionen bis FFFF darstellbar sind. 40 Die mit n Kodierungseinheiten darstellbaren Positionsbereiche lassen sich aus der Tab. 1.6: Grunddaten zu Kodierungseinheiten entnehmen. Für die Darstellung einer Codeposition unter UTF8 muss immer die kleinste Zahl von Kodierungseinheiten gewählt werden. Eine Codeposition im Bereich von 800h bis FFFFh muss also mit drei Kodierungseinheiten und darf nicht –obwohl das technisch möglich wäre – mit vier Kodierungseinheiten dargestellt werden. Die Umkehrfunktion von UTF8, die aus einer Folge von Code-Einheiten eine Codeposition berechnet, darf jedoch auch zu lange Darstellungen korrekt umrechnen. Die zwei Bytes C1BFh dürfen also unter UTF8 in die Position 7Fh zurückgerechnet werden, obwohl die UTF8-Darstellung der Position 7Fh das Byte 7Fh ist. Das Unicode-Designprinzip der Effizienz lässt sich auf Ebene von Kodierungsformaten erläutern. Für jedes der beiden Unicode-Kodierungsformate UTF8 und UTF16 lässt sich in einem Strom von Positionsdarstellungen von jeder Kodierungseinheit aus der Anfang der zugehörigen Positionsdarstellung mit beschränktem Backup finden. Im Falle von UTF16 muss höchstens um eine Kodierungseinheit zurückgegangen werden, im Falle von UTF8 höchstens um drei Positionen. Selbsttestaufgabe 1.9 Kodieren Sie die ASCII-Zeichenfolge „<?xml“ ohne die Anführungsstriche unter UTF8 und UTF16. Selbsttestaufgabe 1.10 Zeigen Sie, dass unter UTF8 die Kodierungen der Positionen 192 bis 255 alle dasselbe führende Byte haben und zwar C3h. Selbsttestaufgabe 1.11 Ein Textsystem stellt das Zeichen „ü“ als Kombination zweier Glyphen à und 1/4 dar. Überlegen Sie, in welchem Kodierungsformat der Textstrom vorliegen könnte und welche Annahmen das Textsystem über das Kodierungsformat macht. Zeichenkodierungen Das Modell der strukturierten Dokumente 41 1.4.6 Kodierungsschema Damit Daten über Netzwerke zuverlässig ausgetauscht werden können, müssen sie in eine lineare Folge von Bytes gebracht werden. Dieser Vorgang wird auch Serialisierung genannt. Mithilfe eines Kodierungsformats wird der Text als Folge von Kodierungseinheiten dargestellt. Ein Kodierungsschema wird nun dazu genutzt zu einem Kodierungsformat zusätzlich festzulegen, wie die Kodierungseinheiten in Bytefolgen zu serialisieren sind. Ist die Kodierungseinheit eines Kodierungsformats selbst acht Bits lang, so ist nichts mehr festzulegen und das Kodierungsschema ist mit dem Kodierungsformat identisch. So kann also UTF8 sowohl als Kodierungsformat als auch als Kodierungsschema bezeichnet werden. Ist die Kodierungseinheit ein Word, wie bei UTF16, so gibt es zwei Möglichkeiten der Serialisierung: Big Endian1und Little Endian. Dementsprechend gibt es zu UTF16 zwei Kodierungsschemata: UTF16-BE und UTF16-LE. Analoges gilt für UCS2 und UCS4. Mit dem Byte Order Mark an Position FEFFh kann bei einem UTF16repräsentierten Datenstrom signalisiert werden, welche der beiden Serialisierungen, Big Endian oder Little Endian, vorliegt. Da FFFEh keine zulässige Codeposition bei Unicode ist, lässt sich schließen, dass das Kodierungsschema UTF16-LE vorliegt. Dies funktioniert jedoch nur dann, wenn als die ersten zwei Bytes FFh und FEh gelesen werden. Ein BOM am Anfang eines UTF16-kodierten Datenstroms ist nicht Bestandteil der Daten und wird – abgesehen von seiner Signalwirkung für die Serialisierung – ignoriert. Tritt die Codeposition FEFFh dagegen an anderer Stelle im Datenstrom auf, so wird sie als das entsprechende Unicode-Zeichen Zero Width No-Break Space interpretiert, das dieser Position zugewiesen ist. Generell darf ein Unicode-Zeichenstrom am Anfang mit dem zusätzlichen Zeichen BOM versehen werden. Anwendungen, die über keine Metainformation über die Natur des Datenstroms verfügen, erhalten so das Signal, dass es sich im Folgenden um Unicode-Daten, die in einem bestimmten Kodierungsschema vorliegen, handelt. Das erste BOM eines Zeichenstroms bildet also keinen Teil der eigentlichen Daten. Selbsttestaufgabe 1.12 Was ist die Kodierung des BOM FEFF unter dem Kodierungsschema UTF8? Überprüfen Sie, ob das Vorausschicken eines BOM _________________________________________________ 1 Das höherwertige Bit kommt zuerst BOM 42 ausreicht, um zwischen den bisher besprochenen Kodierungsschemata zu differenzieren. 1.4.7 Jenseits von glattem Text – eine Übertragungssyntax Mit glattem Text, der als Folge von Unicode-Zeichen kodiert ist, kann der reine Inhalt von strukturierten Dokumenten gehandhabt werden. Da auch eingebettetes Markup – wie etwa bei den in Abschnitt 1.3.7 eingeführten Tags der Form <XXX> und </XXX> – eine Folge von Zeichen ist, scheint es auf den ersten Blick als wäre das Problem, strukturierte Dokumente zu kodieren, bereits vollständig gelöst. Es ergibt sich jedoch eine zusätzliche Komplikation dadurch, dass der Markuptext vom Inhaltstext syntaktisch voneinander unterscheidbar sein muss. Zur Abgrenzung von Markup und Inhalt werden bestimmte Funktionszeichen eingesetzt, die dann außerhalb ihrer syntaktischen Rolle weder im Markup selbst noch im Inhalt des Klartextes vorkommen dürfen. In XML ist „<“ ein solches Funktionszeichen, das den Anfang eines Tags charakterisiert. Das Zeichen „<“ darf deswegen im Inhaltstext eines XML-Dokuments nicht vorkommen. Die klassische Methode Funktionszeichen in glattem Text unterzubringen, ist die Verwendung von so genannten Escape-Zeichen. Diese werden nicht selbst als Bestandteil des Textes interpretiert sondern signalisieren die Präsenz eines Zeichens, das eigentlich nicht im Text vorkommen darf. Im Falle von XML bezeichnet die Formel &#<<Hexziffern>>; oder als &<<Dezimalziffern>>; im Inhaltstext das Unicode- Zeichen an Position <<Hexziffern>> bzw. an Position <<Dezimalziffern>>. Wir können ein „<“ im Inhaltstext als z. B. als &#x3C; notieren und das zusätzliche Funktionszeichen „&“ durch &#x26;. Im Allgemeinen wird glatter Text nicht direkt als Folge von Zeichen auftreten. Vielmehr wird die Zeichenfolge, die einen Text ausmacht, konstruiert aus einer weiteren Folge von so genannten Eingabezeichen, von denen ganze Teilsequenzen einzelne Zeichen des Textes repräsentieren. In der Praxis existiert also eine zweistufige Kodierung von Texten. Zeichen entweder durch sich selbst oder durch spezielle Zeichenfolgen wie &#<<Hexziffern>>; zu kodieren, löst insgesamt drei bekannte Probleme: 1 In glattem Text lassen sich Funktionszeichen an Stellen unterbringen, an denen sie nicht im Klartext vorkommen dürfen. 2 Es können Zeichen in einen Text eingefügt werden, die das verwendete Eingabewerkzeug nicht unterstützt. So kann also in ein XML-Dokument Zeichenkodierungen Das Modell der strukturierten Dokumente 43 auch mithilfe einer amerikanischen Tastatur etwa der Umlaut „ä“ als &#xE4; eingegeben werden. 3 Die Paare aus den beiden ASCII-Steuerzeichen linefeed bzw. newline und carriage return können als ein- und dasselbe Zeilenendezeichen interpretiert werden. Auf diese Weise werden die beiden gängigen verschiedenen Konventionen im Text ein Zeilenende zu signalisieren vereinheitlicht. Werkzeuge mit denen die Texte verarbeitet werden, verfügen damit über eine plattformunabhängige Methode zur Zeilen-Nummerierung. Die Technik, Zeichen durch Zeichenfolgen spezieller Syntax zu kodieren, ist Standard in allen Bereichen, in denen Texte erstellt werden. Insbesondere bei der Erstellung von Programmtexten spielt sie eine wichtige Rolle. Java-Programme etwa dürfen beliebige Unicode-Zeichen der Basic Multilingual Plane enthalten. Dies gilt unter anderem für Namen, Literale für Zeichenketten oder bei Kommentaren. Grundsätzlich kann im Programmtext jedes Zeichen durch sich selbst oder durch eine Sequenz \u<<xxxx>> mit einer ungeraden Anzahl von Zeichen „\“, einer positiven Anzahl von Zeichen „u“ und einer Sequenz <<xxxx>> von genau vier Hexziffern dargestellt werden. Die einzige Ausnahme betrifft das Zeichen „\“, das nur dann für sich selbst stehen darf, wenn es nicht in einer Sequenz der Form \u<<xxxx>> vorkommt. Der Programm-Code in Java zu dem Klassiker “HelloWorld” public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } List.: 1.2 Ein typischer Java Programm-Code dürfte also auch in folgender Form erscheinen: \u0070ublic class HelloWorld { public static void main(String[] args) { System.out.println("\uuuu0048ello World"); \\\u007D } List.: 1.3 Programm-Code mit Escape Zeichen Die Java-Notation macht es also möglich, einen beliebigen Unicode-Text mit Zeichen im Bereich zwischen 0 und FFFF als einen 7-Bit-ASCII-Text zu kodieren. LF und CR 44 Zusammenfassung und Ausblick 1.4.8 Unicode-Werkzeuge Bei der Diskussion von Werkzeugen zur Bearbeitung von Unicode-Texten gibt es den entscheidenden Unterschied zwischen der Eingabe und der Darstellung von Unicode-Zeichen. Wird ein genuiner Unicode-Editor gewünscht, so ist die Auswahl derzeit noch nicht allzu groß. Eine der wenigen Optionen ist ein Forschungsprototyp von der Duke University namens UniEdit,1 der eine Vielzahl von Kodierungsschemata und Eingabeformaten unterstützt. Ansonsten unterstützt jeder beliebige Editor für 7-Bit-ASCII den Unicode. Die so erstellten Texte können als Unicode-Texte in UTF8-Kodierung ausgegeben werden. Damit können auch nur 7-Bit-ASCII-Zeichen in eigenen Texten verwendet werden. Indirekt gibt es eine weitere Kodierungsstufe, über die der Zugriff zu dem vollen Unicode-Zeichenrepertoire gewährleistet ist. Im Falle der Java-Kodierung steht ein Werkzeug zur Verfügung, mit dem die Java-Notation wieder dekodiert werden kann. Sie wird so und in verschiedene Kodierungsformate übersetzt. Das Werkzeug heißt native2ascii und ist Bestandteil des Java Software Development Kit. Selbsttestaufgabe 1.13 Installieren Sie, falls erforderlich, das Werkzeug native2ascii (http://java.sun.com) aus dem Java Software Development Kit. Erstellen Sie eine Textdatei mit Umlauten und anderen Zeichen außerhalb von US-ASCII und übersetzen Sie diese Datei mithilfe von native2ascii nach UTF8. Selbsttestaufgabe 1.14 Erstellen Sie eine Textdatei, in der Sie in Java-Notation die Zeichen außerhalb des Code-Raumes von 0 bis FFh referenzieren. Versuchen Sie, diese Datei mit native2ascii nach ISO Latin-1 bzw. Code Page 1252 zu Übersetzen. Was passiert? 1.5 Zusammenfassung und Ausblick Zwei wichtige Faktoren machen digitale Dokumente zu modernen Informationsträgern, die vielfach verwendbar und der automatischen Verarbeitung zugänglich sind. Die beiden Faktoren sind das Modell der strukturierten Dokumente, dem solche digitalen Dokumente entsprechen sollen, und die Standardisierung der Textkodierung, die Textinhalte austauschbar macht. Beide _________________________________________________ 1http://www.humancomp.org/uniintro.htm Das Modell der strukturierten Dokumente Faktoren wurden in dieser Kurseinheit besprochen. Als dritter Faktor steht die Standardisierung der Strukturinformation noch aus; damit werden die kommenden Kurseinheiten im Zusammenhang mit XML und den verwandten Sprachfamilien zu tun haben. 45 46 Anhang: Formate am Beispiel 1.6 Anhang: Formate am Beispiel 1.6.1 Fertig formatiertes Dokument für ein Journal Prof. Dr. Anne Brüggemann-Klein Dr. Angelika Reiser Prof. Dr. Doris Schmitt-Landsiedel Ein Computer-Propädeutikum von Studentinnen für Studentinnen Konzept vom 12.10.1999, Version 1.3 Hintergrund und Ziele Gerade in technischen Studiengängen spielen Computer als alltägliches Arbeitsmittel eine wichtige Rolle. Es ist wesentlich, daß die Studierenden gleich zu Beginn des Studiums einen vertrauten und sicheren Umgang mit diesem Handwerkszeug haben. Eventuell vorhandene Hemmschwellen müssen sobald wie möglich abgebaut werden; davon ist eine studienzeitverkürzende Wirkung zu erwarten. Es ist bekannt, daß Schülerinnen weniger Zugang zu einem Computer haben als Schüler und weniger häufig einen eigenen Computer besitzen. Das Computer-Propädeutikum richtet sich deshalb primär an Studentinnen, die dadurch eventuell fehlende Vorerfahrungen ausgleichen können. Das Kursangebot des Computer-Propädeutikums Das Computer-Propädeutikum bietet Kurzeinführungen mit praktischen Übungen in für das Studium an der TU München relevante Themen rund um den Computer. Jeder Kurs dauert-als Block angeboten-drei Stunden und beinhaltet eine tutorielle Einführung in das Thema, praktische Übungen am Rechner und eine Abschlußbesprechung zu den Übungen. Kursthemen können sein: x x x x x x x x x x Textverarbeitung mit Word Textverarbeitung mit LaTeX Textverarbeitung mit Star Office E-Mail Browsen und Informationsnutzung im World-Wide Web Erstellen von Informationsangeboten im World-Wide Web (HTML) Betriebssystem, Dateiorganisation Gestaltung des Desktops (Window-Manager) ASCII-Editoren (vi, emacs) Kauf eines PCs Abb.: 1.8 Erste Seite des formatierten Textes Das Modell der strukturierten Dokumente x Datenverbindungen von zu Hause (analog, ISDN) x Fakultätsspezifische Informationsinfrastrukturen Jeder Kurs sollte sich auf ein enges Thema konzentrieren. Die Themenliste ist offen für Ergänzungen. Kriterium ist, daß der Kursinhalt propädeutischer Natur für das Studium an der TU ist und eine Form der Computernutzung zum Inhalt hat. Ein Kurs kann fakultätsübergreifend oder fakultätsspezifisch sein. Die Kurse sind in der Regel auf eine spezielle Rechnerplattform (PC/Windows, Unix) zugeschnitten. Die Zielgruppe des Computer-Propädeutikums Das Kursangebot richtet sich an Studentinnen im ersten Semester. Wird ein Angebot von dieser Zielgruppe nicht ausgeschöpft, steht es auch Studentinnen höherer Semester und, in dritter Priorität, männlichen Studierenden offen. Die Leiterinnen und Leiter des Computer-Propädeutikums Die Kurse werden vorzugsweise von Studentinnen höherer Semester konzipiert und durchgeführt. Zur Ergänzung des Kursangebots können auch Mitarbeiterinnen und Mitarbeiter oder Studenten höherer Semester Kurse anbieten. Nur von Studierenden angebotene Kurse können im Rahmen des Programms finanziert werden. Die Kursleiterinnen und -leiter sind selbst für die Organisation von Seminar- und Rechnerräumen und von Zugangsmöglichkeiten zu den Räumen am Wochenende für ihren Kurs verantwortlich. Wir gehen davon aus, daß die Studiendekaninnen und -dekane sie bei der Organisation unterstützen. Durchführung Das Computer-Propädeutikum ist eine Initiative der Frauenbeauftragten der TU München und wird vom Frauenbüro (Kerstin Hansen, Anja Quindeau) organisiert. Die TU München finanziert das Programm aus dem Tutorienprogramm zur Verkürzung der Studiendauer. Für von Studierenden angebotene Kurse wird ein Werksvertrag abgeschlossen, der die Konzeption, Vorbereitung und Durchführung eines dreistündigen Kurses beinhaltet. Konzeption und Vorbereitung eines Kurses werden mit 200 DM und jede Durchführung mit 100 DM honoriert. Das Frauenbüro erhält Hilfskraftmittel aus dem Tutorienprogramm für die Organisation des Computer-Propädeutikums. Wir rechnen mit folgenden Kosten: 20 Kurse, jeder zweimal durchgeführt, zu 20 mal 200 DM plus 20 mal 2 mal 100 DM, also 8000 DM, plus 1000 DM für die Organisation im Frauenbüro. Eine erste Ausschreibung des Programms ist bereits erfolgt. Interessierte Kursleiterinnen und -leiter können ihr Kursangebot bis zum 5.11.1999 abgeben. Bitte benutzen Sie dazu unser Formular. Die ersten Kurse sollen noch im November 1999 stattfinden. Bei Bedarf erfolgt eine zweite Ausschreibung, zu der neue Kursangebote abgegeben werden können, Anfang Dezember 1999. Die Ausschreibung des Programms, die Gestaltung des Kursangebots sowie die Ankündigung der Kurse erfolgt durch das Frauenbüro in Zusammenarbeit mit den Studierendenvertretungen, den Studiendekanen und den Frauenbeauftragten. Die Verträge werden nach Absprache mit dem Frauenbüro von der Hochschulverwaltung abgeschlossen. Die Kurse sollen zu Randzeiten (Abends, Freitags Nachmittags oder am Wochenende) stattfinden. Abb.: 1.9 Zweite Seite des formatierten Textes 47 48 Anhang: Formate am Beispiel 1.6.2 Unformatiertes Dokument mit reinem Text Prof. Dr. Anne Brueggemann-Klein Dr. Angelika Reiser Prof. Dr. Doris Schmitt-Landsiedel Ein ComputerPropaedeutikum von Studentinnenfuer Studentinnen Konzept vom 12.10.1999, Version 1.3 Hintergrund und Ziele Gerade in technischen Studiengaengen spielen Computer alsalltaegliches Arbeitsmittel eine wichtige Rolle. Es ist wesentlich, dass die Studierenden gleich zu Beginn des Studiums einen vertrauten und sicheren Umgang mit diesem Handwerkszeug haben. Eventuell vorhandene Hemmschwellen muessen sobald wie moeglich abgebaut werden; davon ist eine studienzeitverkuerzende Wirkung zu erwarten. Es ist bekannt, dass Schuelerinnen weniger Zugang zu einem Computer haben als Schueler und weniger haeufig einen eigenen Computer besitzen. Das Computer-Propaedeutikum richtet sich deshalb primaer an Studentinnen, die dadurch eventuell fehlende Vorerfahrungen ausgleichen koennen. Das Kursangebot des Computer-Propaedeutikums Das Computer-Propaedeutikum bietet Kurzeinfuehrungen mit praktischen Uebungen in fuer das Studium an der TU Muenchen relevante Themen rund um den Computer. Jeder Kurs dauert-als Block angeboten-drei Stunden und beinhaltet eine tutorielle Einfuehrung in das Thema, praktische Uebungen am Rechner und eine Abschlussbesprechung zu den Uebungen. Kursthemen koennen sein: Textverarbeitung mit Word Textverarbeitung mit LaTeX Textverarbeitung mit Star Office E-Mail Browsen und Informationsnutzung im WorldWide Web Erstellen von Informationsangeboten im WorldWide Web (HTML) Betriebssystem, Dateiorganisation Gestaltung des Desktops (Window-Manager) ASCII-Editoren (vi, emacs) Kauf eines PCs Datenverbindungen von zu Hause (analog, ISDN) Fakultaetsspezifische Informationsinfrastrukturen Jeder Kurs sollte sich auf ein enges Thema konzentrieren. Die Themenliste ist offen fuer Ergaenzungen. Kriterium ist, dass der Kursinhalt propaedeutischer Natur fuer das Studium an der TU ist und eine Form der Computernutzung zum Inhalt hat. Ein Kurs kann fakultaetsuebergreifend oder fakultaetsspezifisch sein. Die Kurse sind in der Regel auf eine spezielle Rechnerplattform (PC/Windows, Unix) zugeschnitten. Die Zielgruppe des ComputerPropaedeutikums Das Kursangebot richtet sich an Studentinnen im ersten Semester. Wird ein Angebot von Das Modell der strukturierten Dokumente dieser Zielgruppe nicht ausgeschoepft, steht es auch Studentinnen hoeherer Semester und, in dritter Prioritaet, maennlichen Studierenden offen. Die Leiterinnen und Leiter des Computer-Propaedeutikums Die Kurse werden vorzugsweise von Studentinnen hoeherer Semester konzipiert und durchgefuehrt. Zur Ergaenzung des Kursangebots koennen auch Mitarbeiterinnen und Mitarbeiter oder Studenten hoeherer Semester Kurse anbieten. Nur von Studierenden angebotene Kurse koennen im Rahmen des Programms finanziert werden. Die Kursleiterinnen und -leiter sind selbst fuer die Organisation von Seminar- und Rechnerraeumen und von Zugangsmoeglichkeiten zu den Raeumen am Wochenende fuer ihren Kurs verantwortlich. Wir gehen davon aus, dass die Studiendekaninnen und -dekane sie bei der Organisation unterstuetzen. Durchfuehrung Das ComputerPropaedeutikum ist eine Initiative der Frauenbeauftragten der TU Muenchen und wird vom Frauenbuero (Kerstin Hansen, Anja Quindeau) organisiert. Die TU Muenchen finanziert das Programm aus dem Tutorienprogramm zur Verkuerzung der Studiendauer. Fuer von Studierenden angebotene Kurse wird ein Werksvertrag abgeschlossen, der die Konzeption, Vorbereitung und Durchfuehrung eines dreistuendigen Kurses beinhaltet. Konzeption und Vorbereitung eines Kurses werden mit 200 DM und jede Durchfuehrung mit 100 DM honoriert. Das Frauenbuero erhaelt Hilfskraftmittel aus dem Tutorienprogramm fuer die Organisation des Computer-Propaedeutikums. Wir rechnen mit folgenden Kosten: 20 Kurse, jeder zweimal durchgefuehrt, zu 20 mal 200 DM plus 20 mal 2 mal 100 DM, also 8000 DM, plus 1000 DM fuer die Organisation im Frauenbuero. Eine erste Ausschreibung des Programms ist bereits erfolgt. Interessierte Kursleiterinnen und – leiter koennen ihr Kursangebot bis zum 5.11.1999 abgeben. Bitte benutzen Sie dazu unser Formular. Die ersten Kurse sollen noch im November 1999 stattfinden. Bei Bedarf erfolgt eine zweite Ausschreibung, zu der neue Kursangebote abgegeben werden koennen, Anfang Dezember 1999. Die Ausschreibung des Programms, die Gestaltung des Kursangebots sowie die Ankuendigung der Kurse erfolgt durch das Frauenbuero in Zusammenarbeit mit den Studierendenvertretungen, den Studiendekanen 49 50 Anhang: Formate am Beispiel und den Frauenbeauftragten. Die Vertraege werden nach Absprache mit dem Frauenbuero von der Hochschulverwaltung abgeschlossen. Die Kurse sollen zu Randzeiten (Abends, Freitags Nachmittags oder am Wochenende) stattfinden 1.6.3 Dokumentdarstellung mit optischer Gliederung Abb.: 1.10:Dokumentdarstellung mit Ikonen Das Modell der strukturierten Dokumente Abb.: 1.11 Dokumentdarstellung mit verschachtelten Boxen 51 52 Anhang: Formate am Beispiel Abb.: 1.12 Dokumentdarstellung als Baum 1.6.4 Struktursicht mithilfe von eingebettetem Markup <?xml version="1.0"?> <!DOCTYPE Konzept SYSTEM "Konzept.dtd"> <Konzept> <Briefkopf> <Institution Logo="fbLogo"/> <Autorinnen> <Autorin>Prof. Dr. Anne Br&uuml;ggemann-Klein</Autorin> <Autorin>Dr. Angelika Reiser</Autorin> <Autorin>Prof. Dr. Doris Schmitt-Landsiedel</Autorin> </Autorinnen> </Briefkopf> <Hauptueberschrift> Ein Computer-Prop&auml;deutikum von Studentinnen f&uuml;r Studentinnen </Hauptueberschrift> <Nebenueberschrift> Konzept vom <Datum>12.10.1999</Datum> ,Version <Version>1.3</Version> </Nebenueberschrift> <Abschnitt> <Abschnittueberschrift> Hintergrund und Ziele </Abschnittueberschrift> <P> Gerade in technischen Studieng&auml;ngen spielen Computer als allt&auml;gliches Arbeitsmittel eine wichtige Rolle.Es ist wesentlich, da&szlig; die Studierendengleich zu Beginn des Studiums einen vertrauten und sicheren Umgangmit diesem Handwerkszeug haben. Eventuell vorhandene Hemmschwellen m&uuml;ssen sobald wiem&ouml;glich abgebaut werden; davon ist eine studienzeitverk&uuml;rzende Wirkung zu erwarten. Das Modell der strukturierten Dokumente </P> <P> Es ist bekannt, da&szlig; Sch&uuml;lerinnen weniger Zugangzu einem Computer haben als Sch&uuml;ler und weniger h&auml;ufigeinen eigenen Computer besitzen. Das Computer-Prop&auml;deutikum richtet sich deshalb prim&auml;r anStudentinnen, die dadurch eventuell fehlende Vorerfahrungenausgleichen k&ouml;nnen. </P> </Abschnitt> <Abschnitt> <Abschnittueberschrift> Das Kursangebot des Computer Prop&auml;deutikums </Abschnittueberschrift> <P>Das Computer-Prop&auml;deutikum bietet Kurzeinf&uuml;hrungen mit praktischen &Uuml;bungen in f&uuml;r das Studium an der TU M&uuml;nchen relevante Themen rund um den Computer. Jeder Kurs dauert-als Block angeboten-drei Stunden und beinhaltet eine tutorielle Einf&uuml;hrung in das Thema, praktische &Uuml;bungen am Rechner und eine Abschlu&szlig;besprechung zu den &Uuml;bungen. Kursthemen k&ouml;nnen sein:</P> <UL> <LI>Textverarbeitung mit Word</LI> <LI>Textverarbeitung mit LaTeX</LI> <LI>Textverarbeitung mit Star Office</LI> <LI>E-Mail</LI> <LI>Browsen und Informationsnutzung im World-Wide Web</LI> <LI>Erstellen von Informationsangeboten im World-Wide Web (HTML)</LI> <LI>Betriebssystem, Dateiorganisation</LI> <LI>Gestaltung des Desktops (Window-Manager)</LI> <LI>ASCII-Editoren (vi, emacs)</LI> <LI>Kauf eines PCs</LI> <LI>Datenverbindungen von zu Hause (analog, ISDN)</LI> <LI>Fakult&auml;tsspezifische Informationsinfrastrukturen</LI> </UL> <P>Jeder Kurs sollte sich auf ein enges Thema konzentrieren. Die Themenliste ist offen f&uuml;r Erg&auml;nzungen. Kriterium ist, da&szlig; der Kursinhalt prop&auml;deutischer Natur f&uuml;r das Studium an der TU ist und eine Form der Computernutzung zum Inhalt hat. Ein Kurs kann fakult&auml;ts&uuml;bergreifend oder fakult&auml;tsspezifisch sein. Die Kurse sind in der Regel auf eine spezielle Rechnerplattform (PC/Windows, Unix) zugeschnitten.</P> </Abschnitt> <Abschnitt> <Abschnittueberschrift>Die Zielgruppe des Computer-Prop&auml;deutikums</Abschnittueberschrift> <P>Das Kursangebot richtet sich an Studentinnen im ersten Semester. Wird ein Angebot von dieser Zielgruppe nicht ausgesch&ouml;pft, steht es auch Studentinnen h&ouml;herer Semester und, in dritter Priorit&auml;t, m&auml;nnlichen Studierenden offen.</P> </Abschnitt> 53 54 <Abschnitt> <Abschnittueberschrift>Die Leiterinnen und Leiter des Computer-Prop&auml;deutikums</Abschnittueberschrift> <P>Die Kurse werden vorzugsweise von Studentinnen h&ouml;herer Semester konzipiert und durchgef&uuml;hrt. Zur Erg&auml;nzung des Kursangebots k&ouml;nnen auch Mitarbeiterinnen und Mitarbeiter oder Studenten h&ouml;herer Semester Kurse anbieten. Nur von Studierenden angebotene Kurse k&ouml;nnen im Rahmen des Programms finanziert werden.</P> <P>Die Kursleiterinnen und -leiter sind selbst f&uuml;r die Organisation von Seminar- und Rechnerr&auml;umen und von Zugangsm&ouml;glichkeiten zu den R&auml;umen am Wochenende f&uuml;r ihren Kurs verantwortlich. Wir gehen davon aus, da&szlig; die Studiendekaninnen und -dekane sie bei der Organisation unterst&uuml;tzen.</P> </Abschnitt> <Abschnitt> <Abschnittueberschrift>Durchf&uuml;hrung</Abschnittueberschrift> <P>Das Computer-Prop&auml;deutikum ist eine Initiative der Frauenbeauftragten der TU M&uuml;nchen und wird vom Frauenb&uuml;ro (Kerstin Hansen, Anja Quindeau) organisiert. Die TU M&uuml;nchen finanziert das Programm aus dem Tutorienprogramm zur Verk&uuml;rzung der Studiendauer. F&uuml;r von Studierenden angebotene Kurse wird ein Werksvertrag abgeschlossen, der die Konzeption, Vorbereitung und Durchf&uuml;hrung eines dreist&uuml;ndigen Kurses beinhaltet. Konzeption und Vorbereitung eines Kurses werden mit 200 DM und jede Durchf&uuml;hrung mit 100 DM honoriert. Das Frauenb&uuml;ro erh&auml;lt Hilfskraftmittel aus dem Tutorienprogramm f&uuml;r die Organisation des Computer-Prop&auml;deutikums. Wir rechnen mit folgenden Kosten: 20 Kurse, jeder zweimal durchgef&uuml;hrt, zu 20 mal 200 DM plus 20 mal 2 mal 100 DM, also 8000 DM, plus 1000 DM f&uuml;r die Organisation im Frauenb&uuml;ro.</P> <P>Eine erste <A HREF="Ausschreibung.html">Ausschreibung</A> des Programms ist bereits erfolgt. Interessierte Kursleiterinnen und -leiter k&ouml;nnen ihr Kursangebot bis zum 5.11.1999 abgeben. Bitte benutzen Sie dazu unser <A HREF="Formular.html">Formular</A>. Die ersten Kurse sollen noch im November 1999 stattfinden. Bei Bedarf erfolgt eine zweite Ausschreibung, zu der neue Kursangebote abgegeben werden k&ouml;nnen, Anfang Dezember 1999. Die Ausschreibung des Programms, die Gestaltung des Kursangebots sowie die Ank&uuml;ndigung der Kurse erfolgt durch das Frauenb&uuml;ro in Zusammenarbeit mit den Studierendenvertretungen, den Studiendekanen und den Frauenbeauftragten. Die Vertr&auml;ge werden nach Absprache mit dem Frauenb&uuml;ro von der Hochschulverwaltung abgeschlossen.</P> <P>Die Kurse sollen zu Randzeiten (Abends, Freitags Nachmittags oder am Wochenende) stattfinden.</P> </Abschnitt> </Konzept> Anhang: Formate am Beispiel Das Modell der strukturierten Dokumente List.: 1.4 Der Text als XML-Datei 55 56 1.6.5 Das Dokument im LaTeX-Format \documentclass{article} \usepackage[german]{babel} \usepackage{myPage} \def\Datum{\today} \def\Version#1{{\bf #1}} \begin{document} \author{Prof. Dr. Anne Br"uggemann-Klein \and Dr. Angelika Reiser \and Prof. Dr. Doris Schmitt-Landsiedel} \title{Ein Computer-Prop"adeutikum von Studentinnen f"ur Studentinnen (Konzept vom \Datum, Version \Version{1.3})} \maketitle \section{Hintergrund und Ziele} Gerade in technischen Studieng"angen spielen Computer als allt"agliches Arbeitsmittel eine wichtige Rolle. Es ist wesentlich, da"s die Studierenden gleich zu Beginn des Studiums einen vertrauten und sicheren Umgang mit diesem Handwerkszeug haben. Eventuell vorhandene Hemmschwellen m"ussen sobald wie m"oglich abgebaut werden; davon ist eine studienzeitverk"urzende Wirkung zu erwarten. Es ist bekannt, da"s Sch"ulerinnen weniger Zugang zu einem Computer haben als Sch"uler und weniger h"aufig einen eigenen Computer besitzen. Das Computer-Prop"adeutikum richtet sich deshalb prim"ar an Studentinnen, die dadurch eventuell fehlende Vorerfahrungen ausgleichen k"onnen. \section{Das Kursangebot des Computer-Prop"adeutikums} Das Computer-Prop"adeutikum bietet Kurzeinf"uhrungen mit praktischen "Ubungen in f"ur das Studium an der TU M"unchen relevante Themen rund um den Computer. Jeder Kurs dauert-als Block angeboten-drei Stunden und beinhaltet eine tutorielle Einf"uhrung in das Thema, praktische "Ubungen am Rechner und eine Abschlu"sbesprechung zu den "Ubungen. Kursthemen k"onnen sein: \begin{itemize} \item Textverarbeitung mit Word \item Textverarbeitung mit LaTeX \item Textverarbeitung mit Star Office \item E-Mail \item Browsen und Informationsnutzung im World-Wide Web Anhang: Formate am Beispiel Das Modell der strukturierten Dokumente \item Erstellen von Informationsangeboten im World-Wide Web (HTML) \item Betriebssystem, Dateiorganisation \item Gestaltung des Desktops (Window-Manager) \item ASCII-Editoren (vi, emacs) \item Kauf eines PCs \item Datenverbindungen von zu Hause (analog, ISDN) \item Fakult"atsspezifische Informationsinfrastrukturen \end{itemize} Jeder Kurs sollte sich auf ein enges Thema konzentrieren. Die Themenliste ist offen f"ur Erg"anzungen. Kriterium ist, da"s der Kursinhalt prop"adeutischer Natur f"ur das Studium an der TU ist und eine Form der Computernutzung zum Inhalt hat. Ein Kurs kann fakult"ats"ubergreifend oder fakult"atsspezifisch sein. Die Kurse sind in der Regel auf eine spezielle Rechnerplattform (PC/Windows, Unix) zugeschnitten. \section{Die Zielgruppe des Computer-Prop"adeutikums} Das Kursangebot richtet sich an Studentinnen im ersten Semester. Wird ein Angebot von dieser Zielgruppe nicht ausgesch"opft, steht es auch Studentinnen h"oherer Semester und, in dritter Priorit"at, m"annlichen Studierenden offen. \section{Die Leiterinnen und Leiter des Computer-Prop"adeutikums} Die Kurse werden vorzugsweise von Studentinnen h"oherer Semester konzipiert und durchgef"uhrt. Zur Erg"anzung des Kursangebots k"onnen auch Mitarbeiterinnen und Mitarbeiter oder Studenten h"oherer Semester Kurse anbieten. Nur von Studierenden angebotene Kurse k"onnen im Rahmen des Programms finanziert werden. Die Kursleiterinnen und -leiter sind selbst f"ur die Organisation von Seminar- und Rechnerr"aumen und von Zugangsm"oglichkeiten zu den R"aumen am Wochenende f"ur ihren Kurs verantwortlich. Wir gehen davon aus, da"s die Studiendekaninnen und -dekane sie bei der Organisation unterst"utzen. \section{Durchf"uhrung} Das Computer-Prop"adeutikum ist eine Initiative der Frauenbeauftragten der TU M"unchen und wird vom Frauenb"uro (Kerstin Hansen, Anja Quindeau) organisiert. Die TU M"unchen finanziert das Programm aus dem Tutorienprogramm zur Verk"urzung der Studiendauer. F"ur von Studierenden angebotene Kurse wird ein Werksvertrag abgeschlossen, der die Konzeption, Vorbereitung und Durchf"uhrung eines dreist"undigen Kurses beinhaltet. 57 58 Anhang: Formate am Beispiel Konzeption und Vorbereitung eines Kurses werden mit 200 DM und jede Durchf"uhrung mit 100 DM honoriert. Das Frauenb"uro erh"alt Hilfskraftmittel aus dem Tutorienprogramm f"ur die Organisation des Computer-Prop"adeutikums. Wir rechnen mit folgenden Kosten: 20 Kurse, jeder zweimal durchgef"uhrt, zu 20 mal 200 DM plus 20 mal 2 mal 100 DM, also 8000 DM, plus 1000 DM f"ur die Organisation im Frauenb"uro. Eine erste Ausschreibung des Programms ist bereits erfolgt. Interessierte Kursleiterinnen und -leiter k"onnen ihr Kursangebot bis zum 5.11.1999 abgeben. Bitte benutzen Sie dazu unser Formular. Die ersten Kurse sollen noch im November 1999 stattfinden. Bei Bedarf erfolgt eine zweite Ausschreibung, zu der neue Kursangebote abgegeben werden k"onnen, Anfang Dezember 1999. Die Ausschreibung des Programms, die Gestaltung des Kursangebots sowie die Ank"undigung der Kurse erfolgt durch das Frauenb"uro in Zusammenarbeit mit den Studierendenvertretungen, den Studiendekanen und den Frauenbeauftragten. Die Vertr"age werden nach Absprache mit dem Frauenb"uro von der Hochschulverwaltung abgeschlossen. Die Kurse sollen zu Randzeiten (Abends, Freitags Nachmittags oder am Wochenende) stattfinden. \end{document} List.: 1.5Auschnitt aus der LaTex Datei 1.6.6 Prinzipien aus der Informatik Das Studium dieses Kurses setzt nicht voraus, dass andere Kurse aus dem Bereich der Informatik bereits belegt und erfolgreich absolviert wurden. Bei einem so spezialisierten Wissensgebiet wie es das Daten und Dokumentmanagement darstellt, ist es jedoch unumgänglich, einige grundlegende Prinzipien zu verstehen. Die nötigen Basisinformationen folgen diesem Abschnitt. Late Binding Late Binding bedeutet, Entscheidungen so lange hinauszuzögern, bis sie unumgänglich sind. Das Prinzip des Late Binding bringt oft einen Gewinn an Flexibilität und wird in ganz unterschiedlichen Teilgebieten der Informatik angewendet. Polymorphie in objektorientierten Programmiersprachen ist ein Beispiel. Polymorphie bedeutet, dass in einer Klassenhierarchie spezialisierte Klassen die Methoden allgemeinerer Klassen, von denen sie erben, umdefinieren dürfen. Erst zur Laufzeit steht für ein jedes Objekt fest, wie es in Das Modell der strukturierten Dokumente der Klassenhierarchie einzuordnen ist und welche der polymorph definierten Methoden für das Objekt Gültigkeit haben. Im Zusammenhang mit Stylesheets bedeutet der Begriff Late Binding folgendes: Erst wenn ein Dokument präsentiert werden soll, wird ein zum Anwendungszweck passendes Stylesheet zugeschaltet und das grafische Aussehen des Dokuments festgelegt. Abstraktionsebenen Levels of Abstraction einzuführen bedeutet, einen komplexen Sachverhalt ausgehend von einer hohen Abstraktionsstufe auf immer niedrigeren Abstraktionsstufen zu beschreiben und auf diese Weise einen konzeptuellen Rahmen herzustellen, in dem der Sachverhalt verstanden werden kann. Eine typische Anwendung des Prinzips ist die Rechnerarchitektur, in der ein Rechensystem auf den Ebenen Hardware, Maschinensprache, Betriebssystem und Anwendungssystem beschrieben wird. Bei DDM kommt das Prinzip der Levels of Abstraction im Zusammenhang mit Kodierungen zum Tragen, die im Rahmen des Kodierungsmodells auf immer konkreterer Ebene beschrieben werden. Separation of Concerns Die Trennung konzeptueller Dimensionen bedeutet, ein System so zu gestalten, dass unterschiedliche Aufgaben unabhängig voneinander durchgeführt werden können. Separation of Concerns erfordert entsprechende Modelle und Architekturen. Ein klassischer Fall von Separation of Concerns sind Datenbankanwendungen. Durch die Trennung in eine Anwendungsschicht, eine konzeptionelle Schicht und eine physikalische Schicht kann unabhängig voneinander an der Anwendungssoftware und an den Speicher- und Zugriffsstrukturen gearbeitet werden. Dies garantiert Datenunabhängigkeit. Separation of Concerns wird durch das Dokumentenmodell erzielt. Unabhängig voneinander können entsprechende Fachleute an der inhaltlichen Gestaltung eines Dokuments arbeiten. Selbsttestaufgabe 1.15 Überlegen Sie, wo Ihnen die drei erwähnten Informatik- Prinzipien in Ihrem Studium schon einmal begegnet sind. Können Sie weitere grundlegende Prinzipien ausmachen? 59 60 1.7 Literatur [1] J. André, R. Furuta, and V. Quint. Structured Documents. The Cambridge Series on Electronic Publishing. Cambridge University Press, Cambridge, 1989. [2] B. Böhm.A spiral model of software development and enhancement, ACM, SIGSOFT, 1999. M. J. Dürst, F. Yergeau, R. Ishida, M. Wolf, A. Freytag, and T. Texin. Character model for the World Wide Web 1.0. www.w3.org/TR/charmod, February 2002. W3C Working Draft. [3] M. J. Dürst, F. Yergeau, R. Ishida, M. Wolf, A. Freytag, and T. Texin. Character model for the World Wide Web 1.0. www.w3.org/TR/charmod, February 2002. W3C Working Draft. [4] D. Engelbart. A conceptual framework for the augmentation of man’s intellect. In P. W. Howerton and D. C. Weeks, editors, Vistas in Information Handling, volume 1, pages 1–29, Washington, DC, 1963. Spartan Books. [5] T. Feuerstack, A. Hartmann, B. Vogeler, and J. Vieler. Einmal um die Erde und zurück: Unterwegs im Internet. Broschüre A/003/0811, Universitätsrechenzentrum FernUniversität Hagen, August 2011. www.fernunihagen.de/imperia/md/content/zmi_2010/a003_internet.pdf [6] R. Furuta, J. Scofield, and A. Shaw. Document formatting: Survey, concepts, and issues. Computing Surveys, 14(3):417–172, September 1982. [7] J. Korpela. A tutorial on character code issues, January 1999. Looking for a new home on the Internet. [8] L. Lamport. LATEX: A Document Preparation System, User’s Guide & Reference Manual. Addison-Wesley Publishing Company, Reading, MA, 1986. Literatur Das Modell der strukturierten Dokumente [9] N. Meyrowitz and A. van Dam. Interactive editing systems (Parts I and II). Computing Surveys, 14(3):321–415, September 1982. [10] T. H. Nelson. Embedded markup considered harmful, 2000. Published on XML.com http://broadcast.oreilly.com/2009/08/microsoft-and-the-two-xml-pate-1.html [11] D. R. Raymond, F. W. T. Tompa, and D. Wood. Markup reconsidered. Technical Report TR-356, Computer Science Department, University of Western Ontario, May 1993. http://www.csd.uwo.ca/tech-reports/356/tr356.abstract [12] P. Weverka and D. A. Reid. Word 2000: The Complete Reference. Osborne/McGraw-Hill, Berkeley, 1999. [13] K. Whistler and M. Davis. Character encoding model. Unicode Technical Report 17-3.1, Unicode, Inc., August 2000. http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=IWS-Chapter03 [14] J. Wipper. Mathematik Online Kurs LaTeX.Darstellung mathematischer Ausdrücke: Pfeile, Universität Stuttgart, Februar 2009. http://mo.mathematik.uni-stuttgart.de/kurse/kurs44/seite28.html 61 62 Lösungen der Selbsttestaufgaben 1.8 Lösungen der Selbsttestaufgaben Selbsttestaufgabe 1.1 Bei Gemälden handelt es sich wegen des fehlenden sprachlichen Ausdrucks nicht um Dokumente. Personalausweise und Geldscheine sind eindeutig Dokumente ursprünglicher Art, für die das Trägermedium ebenso essentiell ist wie der sprachliche Informationsgehalt. Veranstaltungsplakate, Privatbriefe, Gedichtbände und Romane sind wohl in der Regel Dokumente neuerer Art, in denen neben dem Informationsgehalt auch die Formatierung eine Rolle spielt. Limitierte Auflagen und handschriftliche Briefe mit Unterschrift könnten wir jedoch genauso gut als Dokumente ursprünglicher Art einordnen. Memos, Bestellungen, Produktbeschreibungen und Fragebögen sehe ich je nach Kontext als Dokumente neuerer oder moderner Art an. Ein wichtiges Entscheidungskriterium ist, ob diese Dokumente digital oder auf Papier vorliegen. E-Mail-Nachrichten oder Nachrichten in einem Protokoll zum digitalen Zahlungsverkehr sind Nachrichten moderner Art, solange man den Protokollnachrichten den sprachlichen Ausdruck zugesteht. Selbsttestaufgabe 1.2 Beispiele für sinnvolle Schachtelungen sind: • Listen mit durchgängig nummerierten Aufzählungspunkten, die durch erläuternde Absätze unterbrochen werden können. • Eine Gruppe von Zitaten mit Quellenangaben am Ende eines Kapitels. Selbsttestaufgabe 1.3/4 Achten Sie auf Funktionen, die Struktur und Format trennen (Stylesheets) und auf Funktionen, die eine solche Trennung unterlaufen (explizite typografische Auszeichnung). Das Modell der strukturierten Dokumente 63 Selbsttestaufgabe 1.5 Tab.: 1.7gibt die Additionstabelle, Tab.: 1.8 gibt die Multiplikationstabelle für Hex-Ziffern an. Addition: + 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 0 1 2 3 4 5 6 7 8 9 A B C D E F 1 1 2 3 4 5 6 7 8 9 A B C D E F 10 2 2 3 4 5 6 7 8 9 A B C D E F 10 11 3 3 4 5 6 7 8 9 A B C D E F 10 11 12 4 4 5 6 7 8 9 A B C D E F 10 11 12 13 5 5 6 7 8 9 A B C D E F 10 11 12 13 14 6 6 7 8 9 A B C D E F 10 11 12 13 14 15 7 7 8 9 A B C D E F 10 11 12 13 14 15 16 8 8 9 A B C D E F 10 11 12 13 14 15 16 17 9 9 A B C D E F 10 11 12 13 14 15 16 17 18 A A B C D E F 10 11 12 13 14 15 16 17 18 19 B B C D E F 10 11 12 13 14 15 16 17 18 19 1A C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E Tab.: 1.7 Die Additionstabelle für Hex-Ziffern 64 Lösungen der Selbsttestaufgaben Multiplikationstabelle: X 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 7 8 9 A B C D E F 2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E 3 0 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D 4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C 5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78 9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 A 0 A 14 1E 28 32 3C 46 50 5A 6A 6E 78 82 8C 96 B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5 C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2 F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1 Tab.: 1.8 Die Multiplikationstabelle für Hex-Ziffern Selbsttestaufgabe 1.6 Die Dezimalzahl 100 ist 64 in Hexadezimalnotation. Der prozentuale Anteil der Codepositionen von E000h bis F8FFh am Code-Raum von 0 bis FFFFh ist also in Hexadezimalnotation: Das Modell der strukturierten Dokumente (F8FF − E000 + 1) · 64/(FFFF + 1), also 1900 · 64/10000, also 9C4/100. Knapp 10 Prozent der Unicode-Positionen im Bereich von 0 bis FFFF sind also für den privaten Gebrauch reserviert. Selbsttestaufgabe 1.7 Die Unicode-Position F0000 wird unter UTF16 durch die beiden Surrogat-Words (F0000 − 10000) DIV 400 + D800 = DB80 und (F0000 − 10000) DIV 400 + DC00 = DC00 dargestellt. Selbsttestaufgabe 1.8 Die Surrogat-Words DAFF und DEFF stellen die Unicode- Position (DAFF − D800) · 400 + DEFF − DC00 + 10000 = CFEFF dar. Selbsttestaufgabe 1.9 Alle Zeichen der Zeichenfolge liegen im ASCII-Bereich von Unicode. Die Kodierung unter UTF8 und ASCII sind deshalb identisch; die Kodierung unter UTF16 ist um führende Nullen angereichert. Die Kodierung von „<?xml“ unter UTF8 ist 3C3F786D6C, die unter UTF16 ist 003C003F0078006D006C. Selbsttestaufgabe 1.10 Die Positionen von 192 bis 255 werden unter UTF8 mit zwei Bytes kodiert nach dem Schema 110xxxxxb10xxxxxxb. Da zur Kodierung der genannten Positionen nur acht Bits benötigt werden, die im Schema 110xxxxx 10xxxxxx von rechts aufgefüllt werden, hat das führende Byte des Kodifikats die Form 110000xx, wobei xx die führenden beiden Bits der Hexzahlen C bis F sind, also 11000011, was C3 entspricht. Selbsttestaufgabe 1.11 Das Zeichen „ü“ hat die Position FCh also 11111100b. Die UTF8-Kodierung ist die Bitfolge 1100001110111100, bestehend aus den Unicodeoder ISO Latin-1-Positionen C3h für „Ó und BCh für „1/4“. Es ist also denkbar, dass das Textsystem einen UTF8-kodierten Zeichenstrom als ISO-Latin-1kodiert interpretiert. Selbsttestaufgabe 1.12 Unter UTF8 wird FEFFh als Folge von drei Bytes dargestellt, nämlich EFh, BBh und BFh. Sowohl unter UTF16-BE als auch unter UCS2-BE wird BOM als dieselbe Folge von zwei Bytes dargestellt, nämlich FEh und FFh. Das BOM ist also kein hinreichendes Signal, um zwischen den bisher definierten Kodierungsschemata zu differenzieren. Selbsttestaufgabe 1.13 native2ascii < test.ntv | native2ascii -reverse - encoding UTF8 > test.utf. 65 66 Index 1.9 Index API 26 kontextuelle Formen 32 ASCII 27 LaTeX 21 BE 42 LE 42 BMP 36 LF 44 BOM 42 linearisieren 18 Content Provider 12 Markup 7 CR 44 Microstar Office 26 CSS 12 MS-Word 21 dHTML 12 native2ascii 45 Diaräse 32 Outline Sichten 6 Document Engineering 13 Quark Express 26 Document Management 20 Quellrepräsentation 5 Document Templates 25 RFC 11 Dokumentengrammatiken 7 RTF 26 ECMA 28 Semantik 14 Embedded Markup 19 Serialisierung 42 Escape-Zeichen 43 Stylesheet 16 EVA Prinzip 9 Surrogatpositionen 35 Formatierer 16 UCS 31 FrameMaker 26 Unicode 8, 29 Glatter Text 26 W3C 12 Glyphe 31 Word 34 Glyphenbilder 31 Word Perfect 26 HTML 11 WYSIWYG 24 Idiosynkrasien 19 XLink 12 IETF 11 XML 8, 12 Information Retrieval 5 XPath 12 Instanzen 7 XPointer 12 ISO 27 XSL 12 ISO/IEC 29 Prof. Dr. Christoph Beierle, Prof. Dr. Gabriele Kern-Isberner Kurs 01843 Einführung in wissensbasierte Systeme LESEPROBE mathematik und informatik Kapitel 5: Aktionen und Planen Gegeben sei der in Abbildung 5.1(a) skizzierte Zustand. Wenn nun eine von S0 ausgehende, konstruktive Beschreibung von t gefunden wird, in der die obige Zielbeschreibung gilt, so können wir daraus einen Plan erstellen, der den Ausgangszustand in einen gewünschten Zielzustand überführt. Wenn wir im vorliegenden Fall die Variablen x, y und s der im vorigen Abschnitt angegebenen Ausführungsbedingung für STACK ersetzen durch A, B und S0, so erhalten wir die Formel Poss(STACK(A,B),S0) ≡ ONTABLE(A,S0) ∧ CLEAR(A,S0) ∧ CLEAR(B,S0) die offensichtlich in S0 gilt. Damit ist die Instanz STACK(A,B) des STACKOperators in S0 anwendbar. Als Nachbedingungen für die in Abschnitt 5.3.4 angegebenen Effektaxiome für STACK(A,B) erhalten wir ON(A,B,do(STACK(A,B),S0)) ¬ CLEAR(B,do(STACK(A,B),S0)) ¬ ONTABLE(A,do(STACK(A,B),S0)) Damit haben wir eine Situation t = do(STACK(A,B),S0) gefunden, so dass ON(A,B,t) gilt. Dabei ist t = do(STACK(A,B),S0) insofern eine konstruktive Beschreibung, als dass man daraus den Plan “Staple in der Situation S0 Block A auf Block B” direkt ablesen kann. Einsetzen von t in die ursprüngliche Zielformel ergibt ON(A,B,do(STACK(A,B),S0)) ∧ ON(B,C,do(STACK(A,B),S0)) Selbsttestaufgabe 5.2 (Situationskalkül) Ist mit den bisherigen Formalisierungen sichergestellt, dass in der Situation t = do(STACK(A,B),S0) immer noch Block B auf Block C liegt? Mit anderen Worten, kann mit dem bisher Gesagten die Formel ON(B,C,do(STACK(A,B),S0)) abgeleitet werden? Auf der einen Seite ist zu beachten, dass sich eine Operatoranwendung im Situationskalkül nur auf die Formeln der Nachfolgesituation auswirkt, aber nicht auf die der Ausgangssituation. Wenn in Situation S0 Block A auf B gesetzt wurde, so gilt immer noch, dass sich A in S0 auf dem Tisch befand; die Formel ONTABLE(A,S0) ist immer noch wahr und steht auch nicht im Widerspruch zu der Formel ON(A,B,do(STACK(A,B),S0)), die ebenfalls wahr ist. Auf der anderen Seite überträgt sich die Gültigkeit einer Formel in einer Situation nicht ohne weiteres auf eine Nachfolgesituation: Aus ON(B,C,S0) können wir (bisher) nicht ON(B,C,do(STACK(A,B),S0)) schließen. 5.4 5.4.1 Probleme Das Rahmenproblem Die am Ende des vorigen Abschnitts erläuterte Schwierigkeit, Gültigkeit von Formeln auf nachfolgende Situationen zu übertragen, ist als das sog. Rahmenproblem (frame problem) bekannt. Die Vorstellung dabei ist, dass sich alles, 83 84 Kapitel 5: Aktionen und Planen was sich gewissermaßen als Rahmen um die betrachtete Operatoranwendung befindet, auf die neue Situation überträgt. Um zu formalisieren, dass sich zwei Blöcke, die beide bei einer STACK-Operation nicht bewegt wurden, noch aufeinander befinden, wenn dies vorher der Fall war, benutzen wir folgende Formel: ON(x,y,s) ∧ x = u ⇒ ON(x,y,do(STACK(u,v),s)) Umgekehrt müssen wir auch noch formalisieren, dass sich ein Block nach einer STACK-Operation nicht auf einem anderen befindet, wenn dies vorher nicht der Fall war und er bei der Operation nicht darauf gesetzt wurde: ¬ ON(x,y,s) ∧ (x = u ∨ y = v) ⇒ ¬ ON(x,y,do(STACK(u,v),s)) Rahmenaxiom Diese Art von Formeln werden Rahmenaxiome (frame axioms) genannt. In Analogie zu positiven und negativen Effektaxiomen ist das zuerst angeführte Rahmenaxiom ein positives, das zweite ein negatives Rahmenaxiom. Zu allem Überfluss reichen aber die beiden angegebenen Rahmenaxiome für den STACKOperator selbst in unserer einfachen Blockwelt immer noch nicht aus. Neben dem Nicht-Effekt auf die Relation ON müssen wir auch noch Rahmenaxiome bzgl. der anderen relationalen Fluents ONTABLE und CLEAR angeben. Ein Block befindet sich auch nach einer STACK-Operation auf dem Tisch bzw. nicht auf dem Tisch, wenn er bei der Operation nicht bewegt wurde: ONTABLE(x,s) ∧ x = u ¬ ONTABLE(x,s) ∧ x = u ⇒ ONTABLE(x,do(STACK(u,v),s)) ⇒ ¬ ONTABLE(x,do(STACK(u,v),s)) Selbsttestaufgabe 5.3 (Rahmenaxiome) Formulieren Sie zunächst verbal und dann in Prädikatenlogik Rahmenaxiome für den STACK-Operator bzgl. der Relation CLEAR. Auch für den UNSTACK-Operator (vgl. Selbsttestaufgabe 5.1) müssen wir explizite Rahmenaxiome angeben. Analog zur Situation bei STACK sind das jeweils Rahmenaxiome für die relationalen Fluents ON, ONTABLE und CLEAR: ON(x,y,s) ∧ x = u ¬ ON(x,y,s) ONTABLE(x,s) ¬ ONTABLE(x,s) ∧ x = u CLEAR(x,s) ¬ CLEAR(x,s) ∧ x = v ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ON(x,y,do(UNSTACK(u,v),s)) ¬ ON(x,y,do(UNSTACK(u,v),s)) ONTABLE(x,do(UNSTACK(u,v),s)) ¬ ONTABLE(x,do(UNSTACK(u,v),s)) CLEAR(x,do(UNSTACK(u,v),s)) ¬ CLEAR(x,do(UNSTACK(u,v),s)) Da man also typischerweise für jede Kombination von Operator und Prädikat Rahmenaxiome benötigt, kann man sich leicht klarmachen, dass dies in realistischen Anwendungen schnell zu einer nicht mehr zu bewältigenden Fülle von Formeln führt. Das Rahmenproblem stellt damit eine zentrale Schwierigkeit beim Planen und überhaupt beim Schließen mit Veränderungen über eine Zeitachse dar. Kapitel 5: Aktionen und Planen Wird es in der Prädikatenlogik erster Stufe durch explizite Angabe und Verwendung der Rahmenaxiome gelöst, ist dies im Allgemeinen äußerst ineffizient. Andererseits muss jeder Planungsformalismus eine – möglichst effiziente – Lösung des Rahmenproblems zur Verfügung stellen; in Abschnitt 5.6 werden wir als Beispiel dazu den STRIPS-Ansatz vorstellen. Wenn auch der Situationskalkül als direkte Anwendung durch Ansätze wie STRIPS oftmals verdrängt worden ist, stellt es eine hervorragende Basis dar, die logischen Grundlagen des Planens und der dynamischen Veränderungen durch die Ausführung von Aktionen zu untersuchen. 5.4.2 Das Qualifikationsproblem Ein weiteres Problem des Planens liegt darin, die Vorbedingungen zum Ausführen einer Aktion genau anzugeben. So hatten wir für die Operatoranwendung UNSTACK(A,B) verlangt, dass A auf B steht und A frei ist. In einer realen Anwendung könnte A zu schwer zum Hochheben sein, der Greifarm des Roboters könnte defekt sein, A könnte auf B festgeschraubt sein usw. Zwar kann man solche Bedingungen als Vorbedingung in die Operatorbeschreibung aufnehmen, es wird aber niemals gelingen, alle Bedingungen für einen Zustand der realen Welt vollständig anzugeben. Dies entspricht genau dem Qualifikationsproblem (qualification problem, vgl. Abschnitt 3.1.1), nämlich dem Problem, alle Bedingungen für eine gültige Schlussfolgerung in der realen Welt anzugeben. Es gibt verschiedene Ansätze, das Qualifikationsproblem mit nichtmonotonem Schließen in den Griff zu bekommen. Die Idee dabei ist, Standardannahmen als Defaults zu formalisieren, um so Schließen unter “normalen Umständen” zu ermöglichen (vgl. z.B. [BKI08a], [BKI08b]). 5.4.3 Das Verzweigungsproblem Ein weiteres Planungsproblem entsteht bei der Berücksichtigung von impliziten Konsequenzen einer Operatoranwendung. Wenn ein Roboter ein Paket von einem Raum R1 in einen Raum R2 bringt, so könnte in der entsprechenden Operatorbeschreibung explizit stehen, dass sich die Position des Pakets von Raum R1 in Raum R2 geändert hat. Aber auch der Aufkleber, der sich auf dem Paket befindet, ist dann in Raum R2, ohne dass dies explizit als Veränderung angegeben wurde. In diesem Fall ist es vermutlich auch sinnvoller, bei Bedarf aus der Position des Pakets auf die implizit veränderte Position des Aufklebers zu schließen. Hier könnten allerdings Konflikte mit den Rahmenaxiomen, die gerade die generelle Bewahrung gültiger Formeln sicherstellen sollen, entstehen. Dieses Problem, die indirekten Effekte von Aktionen zu bestimmen, wird Verzweigungsproblem (ramification problem) genannt. Für die effiziente Lösung dieses Problems werden spezielle Inferenzverfahren benötigt; verschiedene Ansätze dazu basieren auf Methoden der Truth Maintenance-Systeme (vgl. z.B. [BKI08a], [BKI08b]). 85 Dr. Stefan Wohlfeil Kurs 01866 Sicherheit im Internet I LESEPROBE mathematik und informatik Inhaltsverzeichnis 1 Sicherheit in der Informationstechnik 1.1 Einführung . . . . . . . . . . . . . . . . . . . . 1.2 Einleitung . . . . . . . . . . . . . . . . . . . . . 1.2.1 Warum ist Sicherheit erforderlich? . . . . 1.2.2 Was heißt eigentlich Sicherheit? . . . . . 1.2.3 Angriffsziele . . . . . . . . . . . . . . . . 1.2.4 Systematik der Bedrohungen . . . . . . . 1.2.5 Klassische Bedrohungen . . . . . . . . . 1.2.6 Nicht-technische Aspekte von Sicherheit 1.3 Netze . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Lokale Netze . . . . . . . . . . . . . . . 1.3.2 Vernetzte Netze . . . . . . . . . . . . . . 1.3.3 Das Internet-Protokoll . . . . . . . . . . 1.3.4 Die Internetdienste . . . . . . . . . . . . 1.4 Konkrete Gefahren . . . . . . . . . . . . . . . . 1.4.1 Viren . . . . . . . . . . . . . . . . . . . . 1.4.2 Würmer . . . . . . . . . . . . . . . . . . 1.4.3 Trojanische Pferde . . . . . . . . . . . . 1.4.4 Passwortmissbrauch . . . . . . . . . . . 1.5 Zusammenfassung . . . . . . . . . . . . . . . . . Lösungen der Übungsaufgaben . . . . . . . . . . . . . 2 Verschlüsselung und digitale Signaturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 4 4 10 11 11 12 17 19 19 21 23 26 32 33 38 38 40 47 49 55 3 Benutzersicherheit im Internet 121 4 Anbietersicherheit im Internet 179 Literatur 227 Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere das Recht der Vervielfältigung und Verbreitung sowie der Übersetzung und des Nachdrucks, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder ein anderes Verfahren) ohne schriftliche Genehmigung der FernUniversität reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. 1 Kapitel 1 Sicherheit in der Informationstechnik Die Autoren: Dr. Stefan Wohlfeil, geb. 12.12.1964 • Studium der Informatik mit Nebenfach Elektrotechnik an der Universität Kaiserslautern (1984–1991) • Wissenschaftlicher Mitarbeiter am Lehrgebiet Praktische Informatik VI der FernUniversität in Hagen (1991–1998) • Promotion zum Dr. rer. nat. (1997) • Mitarbeiter in der Deutsche Bank AG, Abteilung TEC — The Advanced Technology Group (1998–2002) • Professor an der Hochschule Hannover, Fakultät IV, Abteilung Informatik; Arbeitsgebiet: Sichere Informationssysteme (seit 2002) Einige Abschnitte in Kurseinheit 2 hat Prof. Dr. Jörg Keller (Lehrgebiet Parallelität und VLSI der FernUniversität in Hagen) geschrieben. 1.1 Einführung Liebe Fernstudentin, lieber Fernstudent, herzlich willkommen beim Kurs über Sicherheit im Internet! Diese Einführung soll Ihnen einen Überblick darüber geben, worum es im vorliegenden Kurs geht. Dieser Kurs liefert eine Einführung in das Gebiet der Sicherheit. Dabei wird es um einzelne Computer, vernetzte Computer und das Internet gehen. Sie erfahren, welche Sicherheitsprobleme dort existieren und welche Möglichkeiten Sie haben, sich diesen Problemen entgegenzustellen. Inhalt des Kurses und Vorkenntnisse: Dieser Kurs richtet sich an Informatik-Studierende1 und setzt die Kenntnis einiger Inhalte aus einem Informatik-Grundstudium voraus. Konkret sollten Sie bereits wissen, wie ein Computer prinzipiell aufgebaut ist, was ein Betriebssystem typischerweise macht und welche Möglichkeiten sich durch die Vernetzung, wie beispielsweise 1 Hierzu gehören alle Studierenden, deren Curriculum einen Informatikbestandteil enthält wie beispielsweise auch Studierende der Wirtschaftsinformatik. (Version 4; 2014) 2 Kapitel 1 Sicherheit in der Informationstechnik im Internet, für Anwender bieten. Diese Themen werden im Kurs (01801) Betriebssysteme und Rechnernetze behandelt. Die Kurseinheit 1 beschäftigt sich mit den Grundlagen des Themas Sicherheit. Die folgenden Fragen werden diskutiert: • Warum ist das Thema Sicherheit überhaupt bedeutsam? • Was bedeutet der Begriff „Sicherheit“ im Zusammenhang mit Computern eigentlich? • Welche Probleme sind zu lösen? In der Literatur werden eine Reihe von „klassischen Bedrohungen“ vorgestellt, auf die im Kurs auch eingegangen wird. Weiterhin wird der Aufbau und die Funktionsweise des Internets kurz vorgestellt. Konkret werden einige wichtige Protokolle und Dienste des Internets besprochen. Den Abschluss der ersten Kurseinheit bildet eine Beschreibung von ausgewählten konkreten Bedrohungen der Computersicherheit, wie beispielsweise Viren. Die Kurseinheit 2 beschäftigt sich mit den Grundfunktionen, die die Hardware von Systemen und die Betriebssysteme selbst im Bereich Sicherheit anbieten. Außerdem werden dort die Grundlagen von Verschlüsselungsverfahren erklärt. Sie sind für die Lösung des Vertraulichkeits- und des Integritätsproblems ein wichtiges Hilfsmittel. Es wird weiterhin auf Authentifizierungsverfahren eingegangen. Dazu gehört auch das Konzept der digitalen Signaturen. In Kurseinheit 3 wird das Thema Sicherheit aus der Perspektive eines WorldWide-Web-Benutzers beleuchtet. Die Fragen, wie versende/empfange ich sicher eine E-Mail, bzw. wie surfe ich sicher im Netz, werden beantwortet. Oft muss man auch an Rechnern arbeiten, die weit entfernt vom eigenen Schreibtisch stehen. Der Studentenrechner baobab (früher bonsai) der FernUniversität ist ein Beispiel hierfür. Wie man das sicher tun kann, wird auch in Kurseinheit 3 erklärt. Abschließend bekommen Sie einige Hinweise, wie Sie Ihren privaten PC zu Hause sicherer machen können. Die Kurseinheit 4 beschäftigt sich mit dem Thema Sicherheit aus der Perspektive eines Systemadministrators und eventuell auch Web-Anbieters. Hier werden Verfahren und Systeme vorgestellt, mit denen ein internes Netz (auch Intranet genannt) so an das Internet angeschlossen wird, dass keine unbefugten Zugriffe und Modifikationen möglich sind. Neben dem Konzept der Firewall wird auch auf organisatorische und prozedurale Aspekte eingegangen. Bücher Internet Ergänzende Materialien: Das Thema Sicherheit im Internet ist derart umfangreich, dass es in diesem Kurs nur in Ausschnitten behandelt werden kann. Ziel des Kurses ist es, dass Sie die Grundlagen des Themengebietes kennenlernen und Sie sich dann darauf aufbauend tiefer in die Materie einarbeiten können. Dazu gibt es verschiedene weitere Informationsquellen. Die Menge an Büchern zum Thema Security wächst sehr schnell. Ausgehend vom Literaturverzeichnis dieses Kurses sollten Sie in der Universitätsbibliothek das eine oder andere Buch ausleihen und durchschauen. Aktuellste Bücher kann man bei den verschiedenen Buchhändlern im Internet suchen. Dort findet man u. U. auch Rezensionen der Bücher vor. Überhaupt ist das Internet eine nahezu unerschöpfliche Quelle an Informationen zum Thema Security. Im Kurs werden eine Reihe von Verweisen auf (Version 4; 2014) 1.1 Einführung 3 interessante Seiten im Internet genannt. Wenn Sie Zugang zum Internet haben, nehmen Sie sich doch die Zeit und schauen sich die eine oder andere Seite an. Ich hoffe, dass die Verweise noch stimmen, wenn Sie den Kurs lesen. Das Internet ändert sich ständig, so dass es gut sein kann, dass Sie einmal eine Seite nicht finden. In diesem Fall sollten Sie eine der vielen Suchmaschinen wie z. B. bing oder Google konsultieren. Vielleicht hat sich ja nur die Adresse der Seite leicht verändert. Informieren Sie dann auch bitte die Kursbetreuer, damit der Kurstext aktualisiert werden kann. Die Namen und Kontaktmöglichkeiten der Kursbetreuer wurden Ihnen im Anschreiben zusammen mit dieser Kurseinheit genannt. An der FernUniversität in Hagen ergänzen der Kurs (01868) Sicherheit im Internet 1 – Ergänzungen und der Kurs (01867) Sicherheit im Internet 2 diesen Kurs. In Kurs (01868) Sicherheit im Internet 1 – Ergänzungen werden unter anderem diese Themen besprochen: • Computer-Forensik • Anonymität • Biometrie • Zugriffskontrollen, Benutzerauthentisierung • Sicherheit in Telekommunikationsnetzen (WLAN, Voice over IP) • Aktive Inhalte (ActiveX, Java, JavaScript) In Kurs (01867) Sicherheit im Internet 2 werden dann diese Themen behandelt: • Konkrete Bedrohungen und Angriffe gegen Rechner • Bezahlverfahren im Internet • Überblick über wichtige Gesetze und Verordnungen, die im Internet von besonderer Bedeutung sind • Virtual Private Networks (VPN) • Intrusion Detection Systems (IDS) • Entwurf und Implementierung sicherer Systeme Informationen zu den Prüfungsmöglichkeiten dieses Kurses finden Sie in den Studien- und Prüfungsinformationen Ihres Studienganges an der FernUniversität oder bei der Studienberatung. Dort erfahren Sie, in welchen Studiengängen dieser Kurs eingesetzt wird, in welchen Modulen dieser Kurs ein Bestandteil ist, in welcher Form Sie Leistungsnachweise oder Prüfungen ablegen können bzw. müssen und so weiter. (Version 4; 2014) Fortsetzungskurse im nächsten Semester 4 Kapitel 1 1.2 1.2.1 private Geschäftstätigkeiten eBooks Sicherheit in der Informationstechnik Einleitung Warum ist Sicherheit erforderlich? Das Thema „Sicherheit in der Informationstechnik“ hat in den letzten Jahren mehr und mehr an Bedeutung gewonnen. Einer der Hauptgründe dafür ist die große Popularität des Internets. Für viele Menschen ist das Internet nicht nur das Informationsmedium, als das es ursprünglich entwickelt wurde, sondern immer öfter auch das Medium für private Geschäftstätigkeiten aller Art. Bücher, Flug- und Eisenbahntickets, Schuhe, Mode, Musik, usw. können nicht nur im Geschäft gekauft werden, sondern auch bequem von zu Hause aus. Über virtuelle Auktionshäuser wie beispielsweise eBay werden inzwischen täglich enorme Mengen von Gütern aller Art versteigert. Neben Privatleuten beteiligen sich auch Gewerbetreibende als Bieter, ebenso wie als Anbieter. Neben den materiellen Gütern können natürlich digitale Güter, also alles was sich digitalisieren lässt, sehr einfach über das Internet vertreiben lassen. Müssen klassische Bücher noch von einem Boten ausgeliefert werden, so können digitale Bücher (auch eBooks genannt) direkt über das Internet ausgeliefert werden. Das gilt ebenso für Musik, Filme oder Software. Auch Bankgeschäfte wie Überweisungen, Einrichten/Ändern von Daueraufträgen oder sogar An- und Verkäufe von Wertpapieren lassen sich über das Internet abwickeln. Die Vorteile für die Konsumenten sind vielfältig: • Man ist nicht mehr an die Ladenöffnungszeiten gebunden, sondern kann rund um die Uhr tätig sein. • Man muss nicht mehr persönlich im Geschäft vorbei schauen, sondern kann seine Geschäfte bequem von zu Hause erledigen. • Verschiedene Angebote lassen sich einfacher vergleichen. Die Konkurrenz ist immer nur „einen Mausklick“2 entfernt. • Bei digitalen Gütern erfolgt die Lieferung sofort über das Internet und es fallen keine Wartezeiten an. wirtschaftliche Bedeutung Aber nicht nur Privatleute, sondern auch viele Firmen benutzen das Internet für ihre Geschäftszwecke. War man zuerst nur durch eine „website“ präsent und hat sich und seine Produkte vorgestellt, so nutzt man das Internet bzw. die Internettechnologie heute auch für die Abwicklung von Geschäften. In der Automobilindustrie sind die Hersteller und ihre Zulieferer über das Internet miteinander verbunden und tauschen so beispielsweise Bestellungen aus. Der Vorteil für die Unternehmen besteht darin, dass viele solcher Tätigkeiten automatisierbar sind. Dadurch lassen sich Kosten einsparen. Den Umfang der wirtschaftlichen Bedeutung, die das Internet heute (Juli 2013) erreicht hat, verdeutlichen die folgenden Zahlen: • Alleine in Deutschland wurden 2006 ca. 35,4 Millionen Bankkonten online geführt.3 Das sind etwa 80% der Girokonten bei privaten Banken. Etwa jeder zweite Internetbenutzer führt sein Konto online. Bis 2011 stieg 2 Tatsächlich ist es nicht ganz so einfach. Die wenigsten Anbieter werden einen Verweis (engl. link) auf ihre Konkurrenz mit anbieten. Man muss diese Adressen also erst einmal finden. Suchmaschinen, wie Google, oder Verzeichnisdienste, wie Yahoo!, helfen bei der Suche. 3 Quelle: Bundesverband Deutscher Banken (http://www.bdb.de/) (Version 4; 2014) 1.2 Einleitung die Zahl der online geführten Girokonten auf 48 Millionen (von ca. 95 Millionen Konten insgesamt). • Im Jahr 2006 wurden in Deutschland etwa 1,8 Milliarden Online-Überweisungen getätigt. Dabei wurden etwa 1 685 Milliarden Euro bewegt4 . Im Jahr 2011 wurden bereits etwa 2,3 Milliarden Online-Überweisungen getätigt und dabei 11 849 Milliarden Euro bewegt. • Das U.S. Census Bureau veröffentlicht Statistiken aus den USA. Im dritten Quartal des Jahres 2008 wurden etwa 34,4 Milliarden US-Dollar Umsatz im E-Commerce gemacht. Abbildung 1.1 zeigt die stetig steigenden Umsatzzahlen sowie die Spitzen zu Weihnachten. Dabei zählt ein Handel als E-Commerce, wenn entweder die Bestellung oder die Preisvereinbarung über das Internet oder ein anderes elektronisches Netz (z. B. Extranet oder EDI) erfolgt. Abbildung 1.1: E-Commerce-Anteil an den Gesamtumsätzen in den USA Im Jahr 2011 ist der Anteil des E-Commerce an den Umsätzen im Bereich „Produktion/Herstellung“ (engl. manufacturing) auf fast 50 Prozent gestiegen. Das heißt, dass in diesem Bereich fast jeder zweite Dollar durch E-Commerce umgesetzt wird und viele Firmen bereits sehr stark vom E-Commerce abhängen. Im Großhandelsbereich (engl. wholesale) liegt die Quote bei knapp 25 Prozent, im Einzelhandelsbereich (engl. retail) liegt die Quote bei knapp 5 Prozent. • Der Buchhändler Amazon hat nach eigenen Angaben am 29. November 2010 weltweit mehr als 13,7 Millionen Bestellungen angenommen. Das entspricht etwa 158 Bestellungen pro Sekunde. Im Jahr 2007 hat Amazon knapp 14,9 Milliarden US-Dollar Umsatz (engl. net sale) gemacht. Im Jahr 2008 stieg der Umsatz trotz der Finanz- und Wirtschaftskrise auf ca. 19,2 Milliarden US-Dollar, um sich dann bis 2012 auf ca. 61 Milliarden US-Dollar zu verdreifachen. Man sieht, dass das Internet eine große wirtschaftliche Bedeutung gewonnen hat und dass die wirtschaftliche Bedeutung kontinuierlich wächst. Ohne die 4 Quelle: Deutsche Bundesbank (http://www.bundesbank.de/): Statistiken zum Zahlungsverkehr 2002–2006 (Stand Januar 2008) und Statistiken zum Zahlungsverkehr 2007–2011 (Stand Januar 2013) (Version 4; 2014) 5 6 Kapitel 1 Sicherheit in der Informationstechnik entsprechende Sicherheit der beteiligten Informations-Technologie-Systeme (ITSysteme) könnten also immense wirtschaftliche Probleme entstehen. Aktuelle Sicherheitsprobleme: Sicherheit ist aber auch deshalb ein wichtiges Thema, weil heute schon viele Sicherheitsprobleme auftreten. Sie stören die normale Computernutzung, richten nicht unerhebliche Schäden an und finden daher auch mehr und mehr Beachtung in der Presse. Ein ComputerComputer- Emergency-Response-Team (CERT) ist eine Anlaufstelle, die Meldungen Emergency- über Sicherheitsvorfälle entgegen nimmt und über mögliche Abwehrmaßnahmen Response-Team informiert. Im Internet findet man unter der Adresse http://www.cert.org/ (CERT) eine Statistik der gemeldeten Vorfälle. In Deutschland betreibt das Deutsche Forschungsnetz (DFN) auch solch ein Team. Zu seinen Aufgaben gehören neben der Betreuung der DFN-Mitglieder auch die Bereitstellung von Informationen über Sicherheitsvorfälle und Hilfsmitteln zur Bekämpfung von Sicherheitsproblemen. Außerdem betreibt es eine Zertifizierungsstelle (siehe auch Abschnitt 2.7). Im Internet finden Sie es unter der Adresse http://www.cert.dfn.de/ Eine Liste von weiteren deutschsprachigen CERTs findet man unter der Adresse http://www.cert-verbund.de. 140000 Anzahl der gemeldeten Vorfälle 120000 100000 80000 60000 40000 20000 0 1988 1990 1992 1994 1996 1998 2000 2002 2004 Jahre Abbildung 1.2: Dem CERT gemeldete Sicherheitsvorfälle Abbildung 1.2 zeigt grafisch die Zahlen, die das CERT als Tabelle im Internet publiziert. Die steigende Zahl der Vorfälle kann nicht alleine auf ein gestiegenes Bewusstsein bzgl. Computersicherheit zurück geführt werden. Wenn mehr Personen auf Sicherheitsvorfälle achten, dann werden natürlich auch mehr Vorfälle erkannt. Eine leichte Steigung der gemeldeten Vorfälle wäre also auch bei einer eigentlich konstanten Zahl an Vorfällen zu erwarten. Dadurch alleine lässt sich der Anstieg der Zahlen in Abbildung 1.2 allerdings nicht erklären. Es ist tatsächlich eine steigende Zahl an Sicherheitsvorfällen vorhanden. Hierfür gibt es zwei wesentliche Gründe: (1) Ein Grund ist die Verfügbarkeit von einfach zu bedienenden Angriffswerkzeugen, beispielsweise VirusKonstruktions-Programmen oder konkreten „hacker tools“. Damit kann auch (Version 4; 2014) 1.2 7 Einleitung ein weniger qualifizierter Angreifer Schwachstellen in Systemen ausnutzen. In diesem Fall spricht man oft von sog. Script-Kiddies, die verfügbare Programme zur Ausnutzung von Schwachstellen laufen lassen und beliebige Rechner angreifen. (2) Der zweite Grund ist wirtschaftlicher Natur. Der massenhafte Versand von unerwünschten Werbe-E-Mails (engl. spam) ist für die Versender ein potentiell lukratives Geschäft. Vergleichsweise niedrigen Kosten steht ein großer Nutzen gegenüber. Allerdings versuchen Anwender permanent, die steigende Flut von Werbe-E-Mails einzudämmen. Beispielsweise werden E-Mails von bekannten „Spammern“ grundsätzlich blockiert. Dies kann aber dadurch umgangen werden, indem die „Spammer“ nicht unter eigenem Namen agieren, sondern erfolgreich angegriffene Rechner und deren Benutzer hierzu missbrauchen. Die unerwünschten Werbe-E-Mails kommen dann nicht mehr von einem Rechner (den man als Absender evtl. nicht zulassen kann), sondern von beliebigen, vorher nicht bekannten Rechnern von Privatnutzern. Hacker vermieten solche Bot-Netze an zahlende Kunden um deren Werbung über die gehackten Rechner zu verbreiten. Das SANS Institute (siehe http://www.sans.org/) hat einige Jahre lang eine Liste mit den Top 20 Security Risks erstellt. Sie gruppierte die Liste der Probleme des Jahres 2007 in • Client-side Vulnerabilities (Webbrowser, Office-Software, E-Mail-Clients, Mediaplayer etc.) • Server-side Vulnerabilities (Webapplications, Windows-Services, UNIXand Mac OS-Services, Backupsoftware, Antivirensoftware, ManagementServers, Database-Software etc.) • Security-Policy and Personnel (Excessive User-Rights and Unauthorized Devices, Phishing, Unencrypted Laptops and Removable Media etc.) • Application-Abuse (Instant Messaging, Peer-to-Peer-Programs etc.) • Network-Devices (VoIP-Servers and Phones etc.) • Zero-Day-Attacks Man sieht, dass es eine Vielzahl von Schwachstellen und Problemen gibt. Da ständig neue Probleme auftauchen und glücklicherweise einige alte Probleme gelöst scheinen, ändert sich auch die Klassifikation der Liste mit der Zeit. Seit 2009 werden andere Listen erstellt. Aktuell sind zwei Listen: 1. Top 25 Most Dangerous Software Errors. In dieser Liste werden die gefährlichsten Softwarefehler vorgestellt. Sie sind der Grund für entsprechende Sicherheitsprobleme. Software-Entwickler sollten diese Fehler kennen und in ihren Programmen unbedingt vermeiden. In der Liste des Jahres 2011 gehören die Fehler zu drei Kategorien: (1) Insecure Interaction between Components; hier geht es um unsichere Datenübertragung zwischen Komponenten eines Programms, zwischen Programmen, zwischen Prozessen, threads oder zwischen Systemen. (2) Risky Resource Management; hier geht es um schlechte Erstellung, Übertragung oder Löschung von wichtigen Ressourcen eines Systems und (3) Porous Defenses; also falsch realisierten oder schlicht vergessenen Sicherheitsmaßnahmen. (Version 4; 2014) Script-Kiddies Bot-Netze 8 Kapitel 1 Sicherheit in der Informationstechnik 2. Top 20 Critical Security Controls. Hier werden die wichtigsten Sicherheitsmaßnahmen aufgezählt, mit denen man die eigene IT schützen sollte. Bei allen Maßnahmen wird erklärt, wie Angreifer das Fehlen dieser Maßnahme ausnützen können und wie man die Maßnahme effektiv umsetzt. Conficker Sich persistent machen Als Verbreitungsserver arbeiten Andere aussperren verbreiten Ein Beispiel für ein großes Sicherheitsproblem aus dem Jahr 2008 ist der Wurm Conficker alias Downadup. Es zeigt wie geschickt Angreifer vorhandene Sicherheitsprobleme ausnützen können. Der Wurm nutzt einige Software-Fehler in allen Betriebssystemen von Microsoft Windows 2000 bis Microsoft Windows Server 2008 aus. Der Remote-Procedure-Call-Dienst (RPC-Dienst) enthält einen Fehler, so dass ein Angreifer eine spezielle Nachricht an den Rechner schicken kann, um dann die komplette Kontrolle über diesen Rechner auszuüben. Der Angreifer braucht keine Benutzerkennung oder irgendein Passwort auf dem System zu kennen oder auszuspähen. Bereits im Jahr 2003 hatte der Wurm MSBlaster alias Lovsan eine vergleichbare Lücke in Microsoft Windows ausgenutzt und großen Schaden angerichtet. Der RPC-Dienst wird bei der Datei- und Druckfreigabe in Microsoft Windows benutzt. Als erstes kopiert sich der Wurm als DLL-Datei in das Betriebssystem des infizierten Rechners, trägt sich in die Registry ein und sorgt somit dafür, dass er beim Systemstart immer wieder neu gestartet wird. In ihrem Malware-Protection-Center beschrieb Microsoft die weiteren Auswirkungen von Conficker wie folgt: This malware mostly spreads within corporations but also was reported by several hundred home users. It opens a random port between port 1024 and 10000 and acts like a web server. It propagates to random computers on the network by exploiting MS08-067. Once the remote computer is exploited, that computer will download a copy of the worm via HTTP using the random port opened by the worm. The worm often uses a .JPG extension when copied over and then it is saved to the local system folder as a random named dll. It is also interesting to note that the worm patches the vulnerable API in memory so the machine will not be vulnerable anymore. It is not that the malware authors care so much about the computer as they want to make sure that other malware will not take it over too. . . Jeder infizierte Rechner wird somit zum neuen Verteiler für den Wurm im Gegensatz zu anderer Schadsoftware, die ein neu infizierter Rechner immer von demselben Server laden würde. Anschließend ruft der Wurm HTML-Seiten von einigen Webservern ab, um daraus das aktuelle Datum und die Uhrzeit zu entnehmen. Außerdem erfährt er so, welche im Internet sichtbare IP-Adresse der infizierte Rechner hat. (Der Rechner könnte in einem privaten Netz mit privaten IP-Adressen liegen und über einen Router, der Network-Address-Translation (NAT) durchführt, mit dem Internet verbunden sein.) Eine URL zum o. g. Webserver auf dem infizierten Rechner verteilt der Wurm dann an andere Rechner, die er zu infizieren versucht. Letztlich versucht der Wurm sich (1) im lokalen Netz auf angeschlossene USB-Devices etc. zu verbreiten und (2) schickt der Wurm dann auch noch Anfragen an einige URLs, um von dort weitere (Schad-)Software nachzuladen. Diese URLs werden zufällig generiert, wobei das aktuelle Datum und die (Version 4; 2014) 1.2 Einleitung Uhrzeit in die Erzeugung eingehen. Es werden also täglich andere URLs erzeugt, damit man diese Rechner nicht einfach sperren kann. Ein Hacker der den Erzeugungsalgorithmus kennt kann nun beispielsweise die URLs für einen Tag in etwa drei Monaten berechnen und dann eine dieser zufällig generierten DNS-Domains für sich registrieren, dort Schadsoftware aufspielen und abwarten bis infizierte Rechner versuchen, diese Schadsoftware zu laden und zu starten. Die Firma F-Secure hat einige solche DNS-Domains für sich registriert und dann gezählt wie viele infizierte Computer dorthin Anfragen schicken. Am 16. Januar 2009 schätzte man bei F-Secure die Zahl der mit dem Conficker-Wurm infizierten Rechner auf ca. 8,9 Millionen! Das Nachladen von Funktionen haben die Autoren von Conficker noch zusätzlich geschützt. Die nachzuladenden (Schad-)Funktionen müssen mit einem speziellen RSA-Schlüssel (siehe Abschnitt 2.4.2) digital signiert sein. Die Autoren von Schutzsoftware können diesen Nachlademechanismus also nicht dazu benutzen dem Wurm eine „Selbstzerstörungsfunktion“ unter zu schieben. Der einzige Schutz vor dem Wurm besteht darin, den Betriebssystem-Patch Schutz von Microsoft rechtzeitig zu installieren. PRISM: Im Sommer 2013 wurde bekannt, dass die National Security Agency (NSA) der USA ein weltweites Abhörnetz betreibt und so viele Kommunikationsdaten wie möglich mitliest. So wird u. a. erfasst wer mit wem per E-Mail kommuniziert und wer wann welche Internetseiten aufruft. Außerdem sind amerikanische Firmen wie Google, Microsoft, Apple und facebook verpflichtet, der NSA Daten auf Anfrage zur Verfügung zu stellen. Welche Daten das genau sind ist nicht öffentlich bekannt. Man muss also davon ausgehen, dass die eigene Privatsphäre doch nicht so privat ist wie man das gerne hätte. Möchte man vertrauliche Inhalte schützen, so muss man sie verschlüsseln (siehe Abschnitt 2.3). Möchte man nicht, dass jemand weiss, welche Internetseite man besucht, so muss man Anonymitätsnetze wie JAP oder Tor (siehe Kurs (01868) Sicherheit im Internet 1 – Ergänzungen) benutzen. Außerdem sollte man sich sehr genau überlegen, welche persönlichen Daten man in sozialen Netzen preisgeben will. Gesetzliche Verpflichtungen: Am 1. Mai 1998 trat das Gesetz zur Kontrolle und Transparenz im Unternehmensbereich (KonTraG) in Kraft. Es zwingt KonTraG börsennotierte Aktiengesellschaften zur Risikovorsorge durch die Etablierung eines Risikomanagement- und Kontrollsystems. Das heißt, dass diese Firmen gezwungen sind, sich mit den Risiken, die durch ihre IT-Systeme entstehen können, auseinander zu setzen. Natürlich reicht es nicht, sich nur mit den Risiken auseinander zu setzen. Die Unternehmen müssen die erkannten Gefahrenpotentiale auch verringern. Da 100-prozentige Sicherheit nicht erreichbar ist, müssen die Restrisiken auf ein vertretbares Maß reduziert werden. Verbleibende Gefahren sollen durch Überwachungsmaßnahmen kalkulierbar werden. Im Geschäftsleben hat die Risikovorsorge aber auch handfeste finanzielle Gründe. Banken müssen für jeden Kredit, den sie vergeben, einen bestimmten Anteil an Eigenkapital vorhalten. Das dient dazu, dass beim Zahlungsausfall eines Gläubigers die Bank nicht in Liquiditätsprobleme kommt. Die Höhe dieses Eigenkapitalanteils richtet sich nach der Höhe des Risikos. Kreditnehmer mit hohem Risiko zwingen eine Bank zu höheren Eigenkapitalrücklagen. Daher werden Banken solchen Kreditnehmern ungünstigere Zinskonditionen anbieten. Das Basel Committee on Banking Supervision hat solche Vorschriften unter (Version 4; 2014) 9 10 Kapitel 1 Basel II Basel III Sicherheit in der Informationstechnik dem Namen Basel II erarbeitet. Insbesondere die sog. operationellen Risiken werden zukünftig beurteilt. Ein Kreditnehmer, dessen Geschäfte stark von der IT abhängen und der wenig IT-Sicherheitsvorkehrungen trifft, muss also mit höheren Kreditkosten rechnen. Im Jahr 2010 wurde unter dem Namen Basel III ein weiteres Reformpaket veröffentlicht, das ab 2013 schrittweise in Kraft treten wird. Als Folge der weltweiten Finanzkrise von 2007 wurden u. a. weitere Vorschriften zum Risikomanagement erlassen. Ein weiteres Problem stellen Computer im Börsenhandel dar. Sie können so programmiert werden, dass sie automatisch bei bestimmten Ereignissen Kauf- oder Verkaufs-Aufträge absetzen. Das kann zu Spiraleffekten führen. Sinkt der Kurs einer Aktie unter einen bestimmten Wert, dann will der erste Computer verkaufen. Dadurch sinkt der Wert weiter und weitere Computer wollen verkaufen usw. Dadurch können sehr starke Schwankungen entstehen. Im sogenannten Hochfrequenzhandel nutzen Computer Informationsvorsprünge im Bereich von Millisekunden aus, d. h. für einen Menschen bleibt eigentlich kaum Zeit, um gegebenenfalls einzugreifen. Aber auch Sie persönlich müssen aufpassen, dass Angreifer Ihren Rechner nicht dazu missbrauchen, anderen einen Schaden zuzufügen. Möglicherweise tragen Sie daran eine Mitschuld, wenn Sie die erforderliche Sorgfalt missachten. Dann könnten Sie auf Schadenersatz verklagt werden. Persönliche Arbeitserleichterung: Sobald Sie auf dem eigenen Rechner ein Sicherheitsproblem haben, müssen Sie sich darum kümmern. Falls Sie nichts tun, können Sie Probleme der vielfältigsten Art bekommen. Ihr Rechner arbeitet nicht mehr für Sie, er schädigt andere Benutzer oder Ähnliches. Um diese Probleme zu vermeiden, müssen Sie also etwas tun. Das kostet mindestens Zeit, die Sie möglicherweise mit Erfreulicherem verbringen wollen. Daher ist es einfacher, Probleme von Anfang an zu vermeiden, als sich später mit der Problembehebung auseinander zu setzen. In der Medizin heißt das: „Vorbeugen ist besser als heilen.“ 1.2.2 Was heißt eigentlich Sicherheit? Umgangssprachlich versteht man unter Sicherheit in der Regel einen Zustand ohne Gefahren. Im dtv-Lexikon ist Sicherheit wie folgt definiert: Sicherheit, 1) Zivilrecht: Bürgschaft, Pfand oder jeder Vermögenswert, der zur Sicherheitsleistung gebracht wird. 2) objektiv das Nichtvorhandensein von Gefahr, subjektiv die Gewissheit, vor möglichen Gefahren geschützt zu sein. Bedrohungen Schäden Angriffe Für diesen Kurs ist die juristische Bedeutung uninteressant. Die zweite Interpretation unterscheidet zwischen objektiver Sicherheit und subjektiver Sicherheit. In beiden Fällen ist von Gefahren die Rede. Im Rahmen von IT-Sicherheit spricht man an Stelle von Gefahren häufiger von Bedrohungen. Neben den eher abstrakten Bedrohungen sind auch die potentiellen Schäden zu betrachten. Diese lassen sich in der Regel einfacher quantifizieren. In Abschnitt 1.2.3 wird kurz vorgestellt, was eigentlich bedroht ist. Es geht konkret um die Ziele von Angriffen (engl. attacks). In Abschnitt 1.2.4 werden einige Kriterien vorgestellt, anhand derer man Bedrohungen klassifizieren kann. Anschließend geht es in Abschnitt 1.2.5 um die „klassischen Bedrohungen“ der IT-Sicherheit. Hier (Version 4; 2014) 1.2 11 Einleitung werden die typischen Probleme, wie Integrität, Vertraulichkeit, Authentizität usw. diskutiert. 1.2.3 Angriffsziele Die Sicherheit von IT-Systemen kann auf verschiedene Weise gefährdet sein. Abbildung 1.3 zeigt, an welchen Stellen die Sicherheit gefährdet werden kann. Der erste Angriffspunkt liegt an den Zugangswegen zu einem Computer. In Angriff auf Kommunikationswege Angriff auf Computer Angriff auf Daten Abbildung 1.3: Ziele von potentiellen Angriffen auf die Sicherheit einem vernetzten System wie dem Internet sind nicht alle Kommunikationswege unter der Kontrolle einer einheitlichen Instanz. Deshalb ist damit zu rechnen, dass einzelne Übertragungsleitungen abgehört werden. So kann jemand Ihre Kommunikation „mitlesen“. Der zweite Angriffspunkt ist der Computer selbst. Bei Mehr-BenutzerComputern können andere Benutzer Programme laufen lassen, die evtl. Ihre eigenen Programme beeinträchtigen oder Ihre eigenen Daten verfälschen oder ausspionieren. Außerdem könnte der Computer lahmgelegt werden und dadurch nicht mehr für Sie zur Verfügung stehen. Das dritte Ziel von Angreifern sind die Daten selbst. Durch unbefugten Zugriff auf Datenbanken oder die Datenträger (Festplatten, Bänder, DVDs, USB-Sticks) können Daten ausspioniert oder manipuliert werden. Aber auch durch die Messung von elektromagnetischen Wellen, die von einem Bildschirm immer5 abgestrahlt werden, kann man den Bildschirminhalt (und damit die Daten auf dem Bildschirm) rekonstruieren. 1.2.4 Systematik der Bedrohungen Bei den Bedrohungen kann man unterschiedliche Klassen differenzieren. Ein erstes Unterscheidungskriterium ist, ob es sich um technische Bedrohungen nicht-technische und handelt oder ob eine nicht-technische Bedrohung vorliegt. Zu den einfachen technische technischen Bedrohungen gehört z. B. die kosmische Strahlung. Auch wenn Bedrohungen es eher selten vorkommt, so kann diese Strahlung den Wert einzelner Bits verändern und so Daten verfälschen. Auch andere elektrische Probleme, z. B. 5 Zumindest bei Bildschirmen auf Basis von Elektronenstrahlröhren. (Version 4; 2014) 12 Kapitel 1 beabsichtigte und unbeabsichtigte Bedrohungen aktive und passive Bedrohungen Sicherheit in der Informationstechnik auf Übertragungsleitungen, oder elektromagnetische Probleme bei Funkübertragungen gehören hierzu. Diesen Problemen kann man durch die Einführung von Redundanz, beispielsweise durch Prüfbits oder fehlerkorrigierende Codes, begegnen. Man begegnet technischen Bedrohungen also i. d. R. mit technischen Maßnahmen. Ein nicht-technisches Problem wäre dagegen eine Person, die absichtlich Daten verfälscht und dann überträgt. Natürlich kann man hier auch argumentieren, dass eine Person die Daten ja nicht „von Hand“ ändern kann, sondern dazu einen Computer und ein Programm (also Technik) benutzen muss. Soll die Person diese Daten aber tatsächlich mit dem Computer verarbeiten (natürlich unverfälscht), dann arbeitet die Technik in diesem Fall tatsächlich so wie sie soll. Um das Problem der Datenfälschung zu vermeiden würden technische Maßnahmen weniger helfen als organisatorische Maßnahmen wie beispielsweise das Vier-Augen-Prinzip. Also wäre diese Bedrohung eher nicht-technisch. Das o. g. Problem führt zum zweiten Unterscheidungsmerkmal. Bedrohungen können beabsichtigt oder unbeabsichtigt entstehen. Eine unbeabsichtigte Bedrohung ist es, wenn ein Mitarbeiter aus Unwissenheit ein wichtiges Passwort auf einen Post-it-Zettel schreibt und diesen auf den Monitor des Computers klebt. Im Allgemeinen zählen die meisten Bedienungsfehler zu dieser Kategorie. Im Gegensatz dazu ist jede Form von Spionage zu den beabsichtigen Bedrohungen zu zählen. Auch die sogenannten Denial-of-Service-Attacks sind beabsichtigte Bedrohungen. Hier versuchen Angreifer einen Dienst für die legitimen Benutzer nicht mehr verfügbar zu machen, beispielsweise durch Systemüberlastungen. Ein drittes Merkmal unterscheidet aktive und passive Bedrohungen. Zu den passiven Bedrohungen zählt jede Form des Abhörens. Funkübertragungen lassen sich durch eine zusätzliche Antenne einfach mitschneiden und beeinträchtigen den regulären Empfang nicht. Selbst wenn der Angreifer aktiv seine Antenne in die Luft halten muss und das Abhörprogramm starten muss, so greift er doch nicht in die Übertragung ein. Auch das heute sehr oft benutzte Ethernet (siehe auch Abschnitt 1.3.1) überträgt in seiner Grundform jedes Datenpaket an alle angeschlossenen Computer. Normalerweise ignoriert ein Computer alle Datenpakete, die nicht an ihn selbst adressiert sind. Es ist jedoch sehr einfach, einen Computer so zu programmieren, dass er alle Pakete an einen bestimmten anderen Computer im Netz mitprotokolliert. Passive Bedrohungen sind schwer zu entdecken.6 Im Gegensatz dazu wird bei aktiven Bedrohungen direkt eingegriffen. Das Erzeugen neuer Nachrichten, das Unterdrücken oder Verzögern von Nachrichten und die Fälschung von Nachrichten durch einen Angreifer sind aktive Bedrohungen. Sie lassen sich i. d. R. einfacher entdecken als passive Bedrohungen. Abbildung 1.4 visualisiert die Systematik der Bedrohungen. Im Rahmen dieses Kurses wird der Schwerpunkt der Betrachtungen auf den gemusterten Bereichen (vorne unten im Würfel) liegen. 1.2.5 Klassische Bedrohungen Hauptzweck der Erstellung von Computernetzen ist es, den Austausch von Daten zwischen verschiedenen Computern so einfach wie möglich zu machen. In 6 Edward Snowden hat 2013 über solche Aktivitäten durch die National Security Agency (NSA) der USA berichtet. (Version 4; 2014) 1.2 13 Einleitung unabsichtlich nicht−technisch absichtlich technisch aktiv passiv Abbildung 1.4: Klassifikation von Bedrohungen diesem Abschnitt wird daher von einer normalen, ungestörten Kommunikation wie in Abbildung 1.5 ausgegangen. Ein Sender verschickt eine Nachricht an Sender Empfänger Abbildung 1.5: Ungestörter Nachrichtenaustausch einen Empfänger und die Nachricht kommt dort unversehrt an. Die Nachricht könnte dabei eine E-Mail oder ein HTTP-Request oder eine beliebige andere elektronische Nachricht sein. In den folgenden Abschnitten wird dann aufgezeigt, welche Probleme beim Datenaustausch auftreten können. Unbefugter Informationsgewinn: Der unbefugte Informationsgewinn ist ein Angriff auf die Vertraulichkeit (engl. confidentiality) der übertragenen Vertraulichkeit Daten. Bei der elektronischen Abwicklung von Geschäften, z. B. dem Kauf von Aktien, möchten die beteiligten Parteien i. d. R. nicht, dass Dritte davon erfahren. Der unbefugte Informationsgewinn ist ein passiver Angriff, der absichtlich oder unabsichtlich erfolgen kann. Abbildung 1.6 zeigt das Prinzip des unbefugten Informationsgewinns. Sender Empfänger Dritter Abbildung 1.6: Unbefugter Informationsgewinn Das „klassische“ Gegenmittel gegen diese Bedrohung besteht darin, die Nachricht für den Dritten unleserlich, unverständlich oder unerkennbar zu machen. Durch Verschlüsselung kann man Nachrichten unverständlich machen. Verschlüsselung Versteckt man eine Nachricht in einer anderen, unverfänglichen und i. d. R. größeren Nachricht, so spricht man von Steganografie. Steganografie Der unbefugte Informationsgewinn ist nicht auf das Abhören von Datenübertragungen begrenzt. Wie bereits in Abschnitt 1.2.3 dargestellt, kann sich ein Unbefugter auch direkt Zugang zu einem Computer mit wichtigen Daten verschaffen. Diese kann ein Angreifer dann einsehen oder kopieren und mitnehmen. (Version 4; 2014) 14 Kapitel 1 Sicherheit in der Informationstechnik In großen Rechenzentren sind die Computer daher in verschlossenen Räumen untergebracht. Der Zugang zu diesen Räumen ist genau reglementiert und wird u. U. durch Sicherheitsschleusen geregelt. Durch die steigende Verwendung von mobilen Computern, wie Notebooks, Smartphones oder Tablet-Computer, steigt jedoch die Gefahr von Diebstählen nicht nur der Geräte, sondern auch der darauf gespeicherten Daten. Weiterhin ist unbefugter Informationsgewinn auch dadurch möglich, dass sich ein Angreifer Zugang zu den Datenträgern selbst verschafft. Die Festplatten sind normalerweise genauso sicher untergebracht wie die Computer selbst. Aber die Sicherungen, z. B. auf Magnetbändern oder dedizierten Backup-Festplatten, werden aus Sicherheitsgründen auch an anderen Orten als der Computer selbst gelagert. Eventuell sind diese Orte nicht so gut gesichert wie ein Rechenzentrum. USB-Sticks haben einen Kapazität von mehreren Gigabytes. Sie sind klein und können unbemerkt transportiert werden. Hat man Zugriff auf die USBSchnittstelle eines Computers und steckt dort einen USB-Stick an, dann kann man Daten auf den Stick kopieren und dann mitnehmen. Integrität Unbefugte Modifikation: Die unbefugte Modifikation ist ein Angriff auf die Integrität (engl. integrity) der übertragenen Daten. Eine vom Sender als Kaufauftrag abgeschickte Nachricht könnte unterwegs von einem Dritten in einen Verkaufsauftrag umgewandelt werden. Die unbefugte Modifikation ist ein aktiver Angriff der i. d. R. absichtlich erfolgt. Doch auch durch technische Probleme ist eine unbeabsichtigte Modifikation möglich. Sender Dritter Empfänger Abbildung 1.7: Unbefugte Modifikation Abbildung 1.7 zeigt das Prinzip der unbefugten Modifikation einer Nachricht. Der Empfänger erhält eine andere Nachricht, als der Sender abgeschickt hat. Gegen unbefugte Modifikationen kann man sich auf verschiedene Arten schützen. Durch die Einführung von Redundanz kann ein Empfänger erkennen, ob Daten auf dem Transportweg verändert wurden. Dazu werden an den Nutzinhalt zusätzliche Daten gehängt, die bestimmten Bedingungen genügen. Ein Beispiel hierfür sind die Paritätsbits von Hauptspeicherbausteinen. Bei gerader Parität wird das Paritätsbit so gesetzt, dass die Zahl der Einsen in einem Datenwort (einschließlich Paritätsbit) gerade ist. Folgende Gründe machen dieses Verfahren im Bereich der Sicherheit jedoch nicht einsetzbar: • Einfache Verfahren erkennen nur bestimmte Veränderungen an den Daten, z. B. nur die Veränderung eines Bits. Andere Veränderungen bleiben dagegen unentdeckt. • Bei einer beabsichtigten Modifikation der Daten kann ein Angreifer nicht nur die Nutzdaten, sondern auch die Redundanzdaten verändern. Für den Empfänger sieht die Nachricht dadurch korrekt aus. Voraussetzung hierfür ist, dass der Angreifer das Verfahren kennt, mit dem die Redundanzdaten berechnet werden. Eine weitere Schutzmöglichkeit ist wiederum die Verschlüsselung der Daten mit einem geeigneten Verfahren. Ohne den Schlüssel zu kennen, kann ein (Version 4; 2014) 1.2 15 Einleitung Angreifer dann keine sinnvolle Veränderung der Daten vornehmen. Verändert man wahllos einige Bytes einer gut verschlüsselten Nachricht, so entsteht bei der Entschlüsselung meistens etwas Unleserliches. Angriffe auf die Integrität der Daten können nicht nur bei der Übertragung von Daten auftreten. Auch hier kann ein Unbefugter durch den direkten Zugang zu einem Computer, auf dem wichtige Daten gespeichert sind, diese Daten verändern. Eine weitere Gefährdung der Integrität von Daten sind ungeübte Benutzer. Durch die falsche Bedienung der Programme können Daten unbeabsichtigt modifiziert werden. Unbefugte Erzeugung: Die unbefugte Erzeugung von Nachrichten ist ein Angriff auf die Authentizität (engl. authenticity). Dabei erzeugt jemand eine Nachricht und gibt darin vor, jemand anderes zu sein. Beispielsweise könnte Ihr Nachbar eine Bestellpostkarte auf Ihren Namen ausfüllen und damit bei irgendeinem Versandhändler eine Bestellung in Ihrem Namen aufgeben. Es kommt auch immer noch häufig vor, dass Personen einen Anruf von einem vorgeblichen Bankmitarbeiter erhalten. Dieser fragt den Angerufenen dann mit einer vorgeschobenen Begründung nach der Geheimzahl der EC-Karte. Geben Sie Ihre Geheimzahl oder ein Passwort niemals jemand anderem preis! Abbildung 1.8 zeigt das Prinzip der unbefugten Erzeugung. Ohne dass der Sender aktiv wird, erhält der Empfänger eine Nachricht. Die unbefugte Erzeugung ist ein aktiver Angriff und erfolgt überwiegend absichtlich. Er kann bei Konfigurations- oder Bedienungsfehlern auch unabsichtlich erfolgen. Sender Dritter Authentizität Empfänger Abbildung 1.8: Unbefugte Erzeugung von Nachrichten Normalerweise überzeugt man sich von der Identität einer Person durch einen Ausweis, wie z. B. einen Personalausweis. Um festzustellen, ob ein Brief tatsächlich vom vorgeblichen Absender kommt, bedient man sich der eigenhändigen Unterschrift. Diese Methoden haben den Vorteil, dass sie schwer zu fälschen oder zu kopieren sind. Man kann mit dem Auge recht gut feststellen, ob man ein Originaldokument oder eine Fotokopie vor sich hat. In der digitalen Welt der Computer kann man den Unterschied zwischen „Original-Bit“ und „Kopie-Bit“ jedoch nicht mehr feststellen. Man ist dort auf andere Verfahren angewiesen, auf die wir in Abschnitt 2.6 noch genauer eingehen werden. Das Problem der Authentizität ist auch eng verwandt mit dem Problem der Nicht-Zurückweisbarkeit (engl. non-repudiation) von Nachrichten. Dabei geht es darum, dass weder der Sender noch der Empfänger die stattgefundene Kommunikation nachträglich abstreiten (zurückweisen) können. Konkret bedeutet dies, dass • der Empfänger beweisen kann, dass die Nachricht tatsächlich vom vorgegebenen Absender kommt (vorhandene eigenhändige Unterschrift) und • der Sender beweisen kann, dass die Nachricht tatsächlich beim geplanten Empfänger und nicht bei jemand anderem angekommen ist (vgl. Einschreiben mit Rückschein bei der Post). (Version 4; 2014) Nicht-Zurückweisbarkeit 16 Kapitel 1 Verfügbarkeit Sicherheit in der Informationstechnik Unbefugte Unterbrechung: Die unbefugte Unterbrechung ist ein Angriff auf die Verfügbarkeit (engl. availability) von Daten, Computern und Kommunikationsmitteln. Wenn Ihr Nachbar Ihr Telefonkabel durchschneidet, so steht Ihnen dieses Kommunikationsmittel nicht mehr zur Verfügung. Insbesondere bei zeitkritischen Geschäften ist die Verfügbarkeit der Systeme sehr wichtig. Aktienkurse können sich beispielsweise sehr schnell ändern und eine Verzögerung Ihrer Kauf-/Verkaufsorder durch die Nicht-Verfügbarkeit der Kommunikationsstrecke kann enorme wirtschaftliche Konsequenzen haben. Angriffe auf die Verfügbarkeit sind aktive Angriffe, die i. d. R. absichtlich erfolgen. Sender Dritter Empfänger Abbildung 1.9: Unbefugte Unterbrechung Angriffe auf die Verfügbarkeit können sich auch auf Computer selbst richten. Dabei werden speziell konstruierte Nachrichten an einen Computer geschickt, sodass bei der Bearbeitung der Nachricht das Betriebssystem abstürzt. Bis der Computer neu gestartet ist (evtl. ist dazu ein manueller Eingriff erforderlich!) stehen die Dienste dieses Computers nicht mehr zur Verfügung. Das klassische Gegenmittel gegen diese Attacken besteht darin, sogenannte „hochverfügbare Systeme“ (engl. high availability) aufzustellen. Dem eigentlichen Rechnersystem stellt man ein zweites, redundantes System mit identischer Konfiguration zur Seite. Fällt ein System aus, übernimmt das andere den Betrieb. Das macht man nicht nur bei Rechnern, sondern auch anderen Komponenten, wie Stromversorgung, Festplatten, Internetanschlüssen usw. Bei Ausfällen aufgrund technischer Probleme (z. B. Ausfall der Festplatte, Blitzeinschlag, o. ä.) hat sich dieses Mittel bewährt. Gezielte Attacken, die Fehler im Betriebssystem ausnutzen und den Computer dadurch zum Absturz bringen, kann man durch ein identisches Backup-System nicht bekämpfen. Allgemein gesagt entwirft man Architekturen, die sich nicht durch einen Fehler an einer einzelnen Stelle lahm legen lassen. Solche Stellen nennt man auf single point of failure Englisch single point of failure. Sie sind zu vermeiden. Das Thema sichere Architekturen wird im Kurs (01867) Sicherheit im Internet 2 ausführlicher besprochen. Zusammenfassung der zu schützenden Eigenschaften: Vertraulichkeit (engl. confidentiality): Daten sind nur für befugte Personen zugänglich. Integrität (engl. integrity): Daten sind korrekt und unverändert. Authentizität (engl. authenticity): Daten stammen vom vorgeblichen Erzeuger. Verfügbarkeit (engl. availability): Daten können von befugten Personen gelesen/bearbeitet werden. (Version 4; 2014) 1.2 Einleitung 1.2.6 Nicht-technische Aspekte von Sicherheit Im vorigen Abschnitt wurde der Begriff der Sicherheit in dem Sinne vorgestellt, dass ein sicheres System für den Benutzer verlässlich sein muss. Konkret be- Verlässlichkeit deutet dies, dass die Funktionsweise des Systems den gestellten Anforderungen genügt. Der Benutzer kann sich auf die Korrektheit der Ergebnisse (z. B. der übertragenen Daten oder der Identität des Kommunikationspartners) ebenso verlassen wie auf die Verfügbarkeit des Systems. Neben dieser technischen Sicht gibt es auch die Sicht der Betroffenen. Aus dieser Sicht ist ein System sicher, wenn es für die Betroffenen beherrschbar ist. Dies bedeutet, dass der Einzelne Beherrschbarkeit und auch die gesamte Gesellschaft vor den unerwünschten Auswirkungen neuer Technologien und Systeme geschützt werden müssen [MR99]. Neue Technologien und Systeme verändern das Verhalten der Menschen, die diese Systeme benutzen. Die neuen Möglichkeiten der Informationsverarbeitung beeinflussen auch die Struktur der Gesellschaft. Die Erfindung des Buchdrucks mit beweglichen Lettern durch Gutenberg hat schon einmal das Leben der Menschen und die Struktur der Gesellschaft grundlegend verändert. Ähnliches kann durch die Verbreitung von Personal Computern (PCs) und des Internets wieder vorkommen. Seit dem 11. September 2001 werden in den USA zum Zweck der Terrorabwehr vermehrt Daten gesammelt (Patriot Act). Dazu kommen die Daten, die viele Menschen freiwillig von sich selbst in „sozialen Netzwerken“ wie XING, studiVZ, Facebook, MySpace usw. einstellen. Neben Namen, Anschrift und weiteren Kontaktdaten werden dort auch berufliche Informationen und persönliche Hobbys und Interessen eingetragen. Manchmal findet man dort auch einen Spitznamen einer Person, der in eigentlich anonymen Diskussionsforen als Benutzerkennung auftaucht. Die Beiträge unter dieser Benutzerkennung könnten dann der Person mit dem Spitznamen zugeordnet werden. Der Schutz der Privatsphäre (engl. privacy) eines Menschen ist durch IT-Technik möglicherweise gefährdet. privacy Wenn man einmal zusammenstellt in welchen Bereichen Daten über Personen erfasst werden, ergibt sich eine lange Liste: Finanzdaten: Wo hat man Konten? Wie viel verdient jemand? Wohin wird Geld überwiesen? Wo hebt man Geld ab, d. h., wo hält man sich auf? Wo kauft man ein (und bezahlt mit Karte)? Konsumdaten: Mit Hilfe von Rabattkartensystemen erfassen Geschäfte die Einkäufe ihrer Kunden. Was wird wann und wo gekauft? Daraus lassen sich beispielsweise Ernährungsgewohnheiten ableiten, an denen Krankenkassen Interesse haben könnten. Kommunikationsdaten: Mit wem telefoniert jemand? Wer bekommt EMails von wem? Telefongespräche und E-Mails können abgehört werden (und werden es auch). Bei Mobiltelefonen kann man auch orten, wo sich der Teilnehmer aufhält. Wohin surfen Benutzer im Internet? In welchen Diskussionsgruppen beteiligen sich Personen? Aufenthaltsdaten: Die Zahl von Überwachungskameras (Flughafen, Kaufhaus, öffentliche Plätze, Hotels, Banken usw.) steigt ständig und gibt Auskunft über den Aufenthaltsort von Personen. Bei Flugreisen muss man sich auch ausweisen und in den USA u. U. auch biometrische Daten (Fingerabdrücke) von sich selbst abgeben. (Version 4; 2014) 17 18 Kapitel 1 Sicherheit in der Informationstechnik In modernen Digitalkameras sind immer öfter auch GPS-Sensoren eingebaut. Somit kann bei jedem Foto in den Metadaten gespeichert werden, wann und wo das Foto aufgenommen wurde. Speichert man seine Fotos im Internet (in einer Cloud, bei einem sozialen Netz, usw.) so kann jeder mit Zugriff auf diese Fotos wissen, wo sie (als Fotograf oder als Motiv auf dem Foto) zum Aufnahmezeitpunkt waren. Kombiniert mit automatischer Gesichtserkennung kann man auch Bewegungsprofile der abgelichteten Personen erstellen. Persönliche Informationen: In sozialen Netzen findet man neben dem Namen einer Person oft auch Fotos, Informationen zur Ausbildung (den eigenen Kenntnissen und Fertigkeiten), zum Arbeitsplatz (in welcher Firma, welche Position, welche Tätigkeit) und zu den sonstigen Interessen, z. B. den Hobbys. Data-Mining Diese Liste ist nicht vollständig. Trotzdem können diese Datenmengen zusammengefasst und mit Hilfe von Data-Mining durchsucht und korreliert werden. Daraus kann man erschreckend komplette Dossiers über sie erhalten: über Lebensgewohnheiten, Interessen und Vorlieben, Lebensstile, persönliche Probleme und sexuelle Orientierungen, politische Neigungen, finanzielle Verhältnisse, Familienstand usw. [DIE ZEIT Nr. 34, 12. August 2004] Software-Fehler Interessenkonflikt Der Aufbau der Computer- und Netztechnologie ist für den Einzelnen im Grundsatz verständlich. Trotzdem ist das Ausmaß der Veränderungen für die Gesellschaft nur zum Teil vorhersehbar. Die Auswirkungen des E-Commerce sind nur schwer vorhersehbar, insbesondere die Auswirkungen auf die bisher als Verkäufer oder allgemein im Vertrieb tätigen Menschen. Daneben gibt es ein weiteres Problem. Die technische Zuverlässigkeit von Computern (sie können riesige Datenmengen in sehr kurzer Zeit fehlerfrei verarbeiten, z. B. Zahlenkolonnen addieren oder Gleichungssysteme lösen) verleitet die Benutzer zu einer unzulässigen Verallgemeinerung. Es resultiert ein falsches Vertrauen in die Objektivität der Datenverarbeitung nach dem Motto: „Was der Computer berechnet hat, wird schon stimmen.“ Die Vernetzung der Systeme und die immer weiter steigende Komplexität der Systeme stellt die Beherrschbarkeit in Frage. Da man nur noch selten das gesamte System durchschaut und versteht, übersieht man möglicherweise Schwachstellen und Missbrauchsmöglichkeiten. Und welcher PC-Benutzer weiß heute schon, was sein Betriebssystem im Hintergrund so alles macht? Ist man wirklich sicher, dass private Daten nicht heimlich an Dritte übertragen werden? Neben der technischen Sicht der Sicherheit, also der Verlässlichkeit von Systemen, darf auch die Benutzer- (bzw. Betroffenen-)Sicht, also die Frage der Beherrschbarkeit von Systemen, nicht vergessen werden. In diesem Kurs geht es allerdings nicht um Fragen der Beherrschbarkeit, sondern zunächst um die Verlässlichkeit der Systeme. An dieser Stelle soll auch erwähnt werden, dass die Wahrnehmung von Gefahren, d. h. letztlich die Sicherheit, auch von der Perspektive des Wahrnehmenden abhängt. Ein Netzbetreiber hält es eventuell für gefährlich, wenn jemand anonym Zugang zum Netz erhält. Wie könnte sich der Betreiber vor un(Version 4; 2014) 1.3 Netze liebsamen Teilnehmern schützen? Wer bezahlt den Betreiber für die in Anspruch genommenen Dienste? Auf der anderen Seite möchten Sie als „Websurfer“ nicht unbedingt mit Ihrem wahren Namen auftreten. Dadurch verhindern Sie, dass ein Aktivitätsund Interessenprofil von Ihnen erstellt wird. Ein aus Ihrer Sicht sicheres System erlaubt also Anonymität, ein aus Sicht des Betreibers sicheres System würde Anonymität lieber verbieten. Solche widersprüchlichen Sichten ergeben sich nicht nur bei verschiedenen Beteiligten, sondern auch aus den unterschiedlichen Situationen, in denen ein Beteiligter agiert. Während einer Recherche oder bei anderer Informationsbeschaffung möchten Sie gerne anonym bleiben. Auf der anderen Seite wollen und erwarten Sie beispielsweise bei Bankgeschäften, dass Sie und die Bank keinesfalls anonym bleiben. Sie möchten wissen, dass Sie auch tatsächlich mit der Bank kommunizieren und von einer Bank erwarten Sie, dass die Bank keine anonymen Aufträge zu Lasten Ihres Kontos ausführt. Übungsaufgabe 1.1 Welches sind die vier zu schützenden Eigenschaften in einem System? Erklären Sie deren Bedeutung mit eigenen Worten. 1.3 Netze In diesem Abschnitt werden der Aufbau und die Struktur von Computernetzen, insbesondere des Internets diskutiert. Die im Internet verfügbaren Dienste und die dort benutzten Kommunikationsprotokolle werden vorgestellt. Es wird auf die einzelnen Bereiche jedoch nur so weit eingegangen, wie es für das Verständnis des Kurses erforderlich ist. 1.3.1 Lokale Netze Schon seit Jahren werden Computer miteinander vernetzt. Alle Computer einer Abteilung, eines Lehrgebietes oder einer beliebigen anderen geschlossenen Benutzergruppe werden in einem lokalen Netz (engl. Local Area Network (LAN)) miteinander verbunden. So können die Benutzer bestimmte Ressourcen wie Drucker oder Dateien gemeinsam benutzen und sehr einfach Daten austauschen. In lokalen Netzen werden unterschiedliche Topologien eingesetzt. Im Folgenden Netztopologien stellen wir diese Topologien kurz vor und betrachten dabei insbesondere die Auswirkungen auf die Sicherheit. Sterntopologie: In einem Netz mit Sterntopologie werden alle Computer an einen zentralen Punkt angeschlossen (siehe Abbildung 1.10). Aufgrund der Ähnlichkeit mit einem Rad nennt man den Mittelpunkt auch Nabe (engl. hub). Ein Beispiel für ein Sternnetz ist das ATM (engl. Asynchronous Transfer Mode) der Telefongesellschaften. Der zentrale Punkt ist ein elektronischer Vermittler (engl. switch), der dedizierte Verbindungen zwischen den angeschlossenen Computern schaltet. Die Kommunikationsdaten fließen also nur vom Sender zum Switch und zum Empfänger. Auf die Sicherheit hat dies folgende Auswirkungen: • Fällt ein Computer aus, so können die anderen Computer weiterhin kommunizieren (Verfügbarkeit). (Version 4; 2014) 19 20 Kapitel 1 Sicherheit in der Informationstechnik switch Hub Abbildung 1.10: Prinzip der Sterntopologie • Fällt der Switch aus, so ist keine Kommunikation mehr möglich (Verfügbarkeit). • Da die Daten nur den Sender, den Switch und den Empfänger passieren, können andere Computer diese Kommunikation nicht stören oder abhören (Vertraulichkeit). Das setzt allerdings voraus, dass der Switch die Adressen der angeschlossenen Systeme kennt. Ethernet-Switches lernen diese Adressen im laufenden Betrieb. Trifft ein Paket ein, so steht darin die Adresse des Absenders. Soll der Switch anschließend ein anderes Paket an genau diese Adresse schicken, dann kennt der den zugehörigen Anschluss (engl. port). Der Switch ist also darauf angewiesen, dass die angeschlossenen Computer kooperativ sind und nicht beispielsweise gefälschte Absenderadressen benutzen. Token Ringtopologie: Sind alle Computer eines lokalen Netzes in einer geschlossenen Schleife angeordnet, so spricht man von einer Ringtopologie (siehe Abbildung 1.11). Ein Beispiel für ein Ringnetz ist der Token-Ring von IBM. Die Computer benutzen eine spezielle Nachricht, genannt Token, um die Nutzung zu koordinieren. Will ein Computer Daten verschicken, so wartet er auf das Token und sendet dann die Daten an seinen „rechten“ Nachbar. Die Nachricht wird von Computer zu Computer weitergereicht. Der Empfänger erstellt eine Kopie der Nachricht und der Absender erhält die Nachricht wieder zurück. Danach gibt der Sender das Token, und somit die Sendeerlaubnis, an seinen „rechten“ Nachbarn weiter. Will kein Computer senden, kreist das Token mit hoher Geschwindigkeit. Auf die Sicherheit hat dies folgende Auswirkungen: • Fällt ein Computer oder eine einzige Verbindung aus, so ist die Kommunikation unterbrochen (Verfügbarkeit). • Eine Nachricht passiert alle angeschlossenen Computer und kann im Prinzip auf jedem Computer gelesen werden (Vertraulichkeit). Jeder Computer könnte die Nachricht auch verfälschen (Integrität) oder unterdrücken. (Version 4; 2014) 1.3 21 Netze Abbildung 1.11: Prinzip der Ringtopologie Bustopologie: Bei der Bustopologie sind alle Computer an das gleiche Kabel angeschlossen (siehe Abbildung 1.12). Ein Beispiel für ein Busnetz ist das Ethernet. Es kann in seiner Grundform die Daten mit 10 Mbit/s Geschwindigkeit übertragen. Inzwischen gibt es auch Fast-Ethernet mit 100 Mbit/s Übertragungsrate und auch Gigabit-Ethernet mit 1 Gbit/s Übertragungsrate. Wenn Abbildung 1.12: Prinzip der Bustopologie ein Computer Daten versendet, dann können alle an das Kabel angeschlossenen Computer diese Nachricht lesen. Wollen zwei Computer gleichzeitig senden, so kommt es zu einer Kollision und die Computer müssen die Übertragung abbrechen und später wieder aufnehmen. Auf die Sicherheit hat dies folgende Auswirkungen: • Fällt ein Computer aus, so können die anderen Computer weiterhin miteinander kommunizieren (Verfügbarkeit). • Läuft ein Computer „Amok“, so können die anderen Computer u. U. nicht mehr kommunizieren, da die Leitung belegt ist (Verfügbarkeit). • Jeder angeschlossene Computer kann alle Nachrichten auf dem Kabel mitlesen (Vertraulichkeit). 1.3.2 Vernetzte Netze Lokale Netze können nicht beliebig groß werden. Außerdem gibt es nicht „die beste“ Netztechnologie für alle Anwendungsfälle. Es besteht also der (Version 4; 2014) 22 Kapitel 1 Sicherheit in der Informationstechnik Bedarf unterschiedliche Netze miteinander zu verbinden. Dazu stehen folgende Gerätetechnologien zur Verfügung: Repeater: Ein Repeater ist ein Gerät, das zwei gleichartige lokale Netze miteinander verbindet und zu einem Gesamtnetz macht. Dazu verstärkt und überträgt der Repeater alle Signale (also auch Störungen) zwischen den beiden Netzen. Bridge: Eine Bridge arbeitet im Prinzip wie ein Repeater. Sie gibt aber nicht alle Signale weiter, sondern leitet nur vollständige und fehlerfreie Datenrahmen weiter. Daher kann eine Bridge anhand der Absenderadressen in den Rahmen mit der Zeit lernen, welcher Computer in welchem Netz liegt. Die Bridge leitet die Rahmen daher nur dann weiter, wenn der Zielcomputer in einem anderen Netz liegt. Switch Dies setzt voraus, dass die Struktur und die Datenrahmen in beiden Netzen gleich sind. Für ein Ethernet realisieren sogenannte Switches eine Menge von einelementigen Subnetzen für jeden angeschlossenen Computer, der über Bridges mit allen einelementigen Subnetzen verbunden ist. Dadurch kann die Bustechnologie Ethernet sternförmig verkabelt sein. Ethernet Router Token Ring Abbildung 1.13: Verbindung von Ethernet und Token-Ring durch einen Router Router: Ein Router ist ein dedizierter Computer für den Zusammenschluss von Netzen. Er kann Netze unterschiedlicher Technologien mit verschiedenen Medien, Adressschemata oder Rahmenformaten verbinden. Dazu hat er eine getrennte Schnittstelle für jeden Netzanschluss, d. h. eine Netzwerkkarte für jeden Netztyp. Ein Router kann also ein Busnetz wie das Ethernet mit einem Ringnetz wie dem Token-Ring verbinden (siehe Abbildung 1.13). (Version 4; 2014) 1.3 23 Netze 1.3.3 Das Internet-Protokoll Damit man Daten zwischen unterschiedlichen Netzen austauschen kann, muss man sich vorher auf bestimmte Dinge wie Datenformate, Adressierung, Verbindungsaufbau usw. einigen. Diese Einigungen werden in einem sogenannten Protokoll festgehalten. Die am häufigsten implementierte Protokollfamilie ist das TCP/IP. Protokoll Protokollschichten: Die Protokolle der TCP/IP-Familie sind hierarchisch in Schichten organisiert. In Abbildung 1.14 sind die Teile dargestellt, die bei einer Kommunikation beteiligt sind. Auf der obersten Ebene stehen die ftp telnet snmp ... TCP UDP IP x IP−Adresse Netzwerkkarte * ARP Hardware−Adresse Computer Netz (z. B. Ethernet) Abbildung 1.14: Ablauf der Kommunikation bei TCP/IP Anwendungsprogramme (wie telnet, ftp oder andere), die den Bedarf haben, mit einem anderen Computer Daten auszutauschen. Diese Programme rufen dazu Funktionen aus der Transmission-Control-Protocol-Schicht (TCP-Schicht) bzw. TCP der User-Data-Protocol-Schicht (UDP-Schicht) auf. Das Anwendungsprogramm UDP übergibt eine Anwendungsnachricht. Die Funktionen der TCP-Schicht zerlegen diese Nachricht und leiten TCPSegmente an die darunterliegende Internet-Protocol-Schicht (IP-Schicht) weiter. IP In der IP-Schicht muss auch die IP-Adresse des Computers selbst bekannt sein. Die IP-Schicht gibt ein IP-Paket (versehen mit einer IP-Zieladresse) an die Netzwerkkarte weiter. Mit Hilfe des Address-Resolution-Protocol (ARP) und ARP der auf dem Computer gespeicherten Tabelle wird die Hardware-Adresse des Zielcomputers ermittelt. Damit versehen geht dann beispielsweise ein EthernetFrame auf den Weg vom Computer an das Netz. Adressierung: Jede Netzwerkkarte hat eine eigene eindeutige Adresse. Diese hängt von der verwendeten Netztechnologie ab und ist bei Ethernet beispielsweise 6 Bytes lang. Für das Internet abstrahiert man von den Hardwareadressen und benutzt ein eigenes Adressschema, die sogenannten IP-Adressen. Heute (Version 4; 2014) IP-Adressen 24 Kapitel 1 Sicherheit in der Informationstechnik werden zwei Versionen von IP-Adressen verwendet, (1) IPv4-Adressen und (2) IPv6-Adressen. Eine IPv4-Adresse ist eine eindeutige 4 Byte lange Binärzahl. Sie besteht aus zwei Teilen. Das Präfix identifiziert das Netz, an das der Computer angeschlossen ist. Das Suffix identifiziert den Computer innerhalb des Netzes. Da lokale Netze aus unterschiedlich vielen Computern bestehen können, ist die Länge des Suffixes nicht fest vorgegeben. IPv4-Adressen notiert man, indem jedes Byte als Dezimalzahl geschrieben wird. Zwischen die Zahlen wird ein Punkt geschrieben. Es gibt somit maximal 232 viele IPv4-Adressen, das sind ca. vier Milliarden. Da heute aber nicht nur Computer, sondern auch Smartphones, Fernseher, Tablet-Computer und viele weitere Geräte an das Internet angeschlossen werden sollen, reichen die IPv4-Adressen nicht mehr aus. Eine IPv6-Adresse ist 128 Bit lang, also 16 Bytes. Auch sie besteht aus zwei Teilen, einer Netzadresse (auch Präfix genannt) und einer Adresse innerhalb des Netzes (genannt Interface Identifier). Damit sind genügend Netze und genügend Geräte adressierbar. Man schreibt IPv6-Adressen als 32 hexadezimale Zahlen, gruppiert in acht durch Doppelpunkt getrennte Zifferngruppen. Eine IPv6-Beispieladresse sieht also so aus: fe80:0000:0000:0000:3e07:54ff:fe4e:0e37 Privacy Extensions Während der Präfix der IPv6-Adresse i. d. R. vom Internet Service Provider vergeben wird, können Geräte in einem lokalen Netz den Interface Identifier auch automatisch selbst erzeugen. Dabei geht die Hardware-Adresse des Geräts in die IPv6-Adresse ein. Das hat zur Folge, dass ein mobiles Gerät möglicherweise weltweit identifiziert werden kann. Auch wenn sich das Gerät in verschiedenen Netzen befindet und somit der Präfix der IPv6-Adresse variiert, kann der Interface-Identifier-Teil der IPv6-Adresse gleich bleiben. In der Spezifikation von IPv6 hat man daher gleich die sogenannten Privacy Extensions spezifiziert. Damit unterscheidet sich dann der Interface-Identifier-Teil der IPv6-Adresse derart, dass man ein Gerät nicht anhand der IPv6-Adresse wiedererkennen kann. Die IP-Adresse eines Computers wird bei der Konfiguration eingegeben und lokal gespeichert.7 Zur ARP-Schicht gehört eine Tabelle der folgenden Form: IPv4-Adresse 10.71.144.1 10.71.144.2 10.71.144.3 ... Hardware-Adresse 08-00-28-00-38-A9 08-00-39-00-2F-C3 ... Der Inhalt dieser Tabelle wird jedoch nicht vom Administrator gepflegt, sondern sie füllt sich automatisch. Möchte der Computer ein Paket an eine IP-Adresse schicken, deren Hardware-Adresse nicht in der Tabelle steht, so wird das Paket zunächst zurückgestellt. Der Computer schickt eine Anfrage an alle angeschlossenen Computer (engl. broadcast) und fragt nach der HardwareAdresse zu dieser IP-Adresse. Einer der angeschlossenen Computer erkennt nun seine IP-Adresse und antwortet mit seiner Hardware-Adresse. Anschließend 7 Um diese aufwendige Arbeit zu sparen, benutzen viele Administratoren eine Technik mit der IP-Adressen automatisch an Rechner vergeben werden. Sie heißt Dynamic-HostConfiguration-Protocol (DHCP). Es gibt DHCP für IPv4 und für IPv6. (Version 4; 2014) 1.3 25 Netze kann das IP-Paket mit der richtigen Hardware-Adresse versehen in ein Netzpaket verwandelt und abgeschickt werden. IPv4-Adressen sind für Benutzer nicht einfach zu merken, IPv6-Adressen noch sehr viel schwieriger. Daher benutzt man lieber Namen. Um Namen für Computer vergeben zu können, gibt es das Domain-NameSystem (DNS). Hierin werden symbolische Namen für Computer und Domain-Namederen zugehörige IP-Adressen verwaltet. Beispiele für DNS-Namen sind: System gremlin.fernuni-hagen.de oder www.deutsche-bank.de. DNS-Namen sind (DNS) hierarchisch aufgebaut. Ausgehend von einer leeren Wurzel (siehe Abbildung 1.15) setzt sich ein Name aus den Knoten eines Pfads durch den Baum zusammen. Dieser Baum gibt nicht die Netzstruktur wieder, sondern kann vom de fernuni−hagen gremlin bonsai mil edu deutsche−bank mail ... www ... mit rtfm ... ... cmu ... Abbildung 1.15: Beispiel für einen DNS-Namensraum Verantwortlichen für einen Knoten beliebig unterhalb des Knotens gestaltet werden. Früher wurde diese Zuordnung lokal auf jedem Computer gespeichert. Eine zentrale Stelle registrierte alle Veränderungen und verteilte die neue Zuordnungstabelle. Bei der derzeitigen Anzahl von Computern im Internet und der hohen Änderungsgeschwindigkeit ist dieser Mechanismus nicht mehr praktikabel. Heute wird die Zuordnung von IP-Adresse zu Computername von einem DNS-Server erledigt. Dieser arbeitet in einem Verbund mit anderen DNS- DNS-Server Servern zusammen. Falls zu jedem inneren Knoten des Baums aus Abbildung 1.15 ein DNS-Server gehört, so muss dieser nur seine Kinder und seinen Vorgänger kennen. Wenn dann vom Computer bonsai.fernuni-hagen.de auf www.deutsche-bank.de zugegriffen werden soll, so entsteht eventuell folgende Abfragekette: bonsai fragt den DNS-Server von fernuni-hagen, der fragt den DNS-Server von de, der fragt den DNS-Server von deutsche-bank und der kennt die Adresse von www. Die IP-Adresse wird dann zurückgeschickt. Damit das Netz nicht ständig von solchen Anfragen belastet wird, merken sich die DNS-Server angefragte Adressen. Wenn also auch der Computer gremlin.fernuni-hagen.de die Adresse von www.deutsche-bank.de wissen will, so kann der DNS-Server der FernUniversität diese Anfrage aus seinem Zwischenspeicher (engl. cache) beantworten. Dieses Schema birgt leider auch gewisse Risiken. DNS-Nachrichten können einfach gefälscht werden. Außerdem kann man in einer DNS-Antwort neben der IP-Adresse des angefragten DNS-Namens auch weitere Informationen mitschicken. Der Empfänger dieser gefälschten Nachrichten kann diese Fälschungen nicht erkennen. Wenn Sie beispielsweise mit dem Computer gremlin.fernuni-hagen.de kommunizieren wollen, kann Ihr DNS-Server even(Version 4; 2014) 26 Kapitel 1 DNS spoofing DNS Security Extensions (DNSSEC) ARP spoofing port Sicherheit in der Informationstechnik tuell eine falsche IP-Adresse zurückgeben. Sie würden dann Daten an einen anderen Computer schicken, der nur vorgibt gremlin.fernuni-hagen.de zu sein. Man nennt das auch DNS spoofing. Mit der Definition von DNS Security Extensions (DNSSEC) hat man DNS so erweitert, dass die Authentizität und Integrität von DNS-Nachrichten sichergestellt werden kann. Dazu werden digitale Signaturen (siehe auch Abschnitt 2.6) benutzt. DNSSEC ist in den RFCs 4033, 4034 und 4035 definiert. Aber auch IP-Adressen sind kein sicherer Authentifizierungsmechanismus. Wie oben schon erwähnt, wird die Tabelle zum ARP durch eine BroadcastAnfrage gefüllt. So kann auch ein anderer Computer in Ihrem lokalen Netz vorgeben, Ihre IP-Adresse zu haben. An Sie geschickte Daten landen dann auf einer anderen Maschine. Beachten Sie außerdem, dass der Administrator oder auch der Benutzer die IP-Adresse seines Computers selbst konfigurieren kann. Für die verschiedenen Dienste bzw. Anwendungsprogramme ist es nicht nur erforderlich zu wissen, mit welchem Computer man kommunizieren möchte, sondern man muss auch mitschicken können, welchen Dienst man benutzen möchte. Dazu sind in TCP/IP die sogenannten ports vorgesehen. Ein Port ist eine Nummer. Empfängt ein Computer eine Nachricht, so kann die TCP/IPSchicht bereits erkennen, welches Programm diese Nachricht erhalten muss. Der Anwendungsprogrammierer muss sich also nicht mit Datenpaketen befassen, die gar nicht für diese Anwendung gedacht sind. Die Portnummer wird an den Rechnernamen angehängt und durch einen Doppelpunkt vom Namen getrennt. Eine Rechneradresse inklusive Portnummer sieht dann beispielsweise so aus: gremlin.fernuni-hagen.de:80 1.3.4 Die Internetdienste In diesem Abschnitt werden einige typische Hilfsprogramme und Internetdienste vorgestellt. Es wird insbesondere auf die sicherheitsrelevanten Aspekte der Dienste eingegangen. Nslookup: Mit dem Programm nslookup können sie einen DNS-Server abfragen. Sie können zu einem Rechnernamen die zugehörige IP-Adresse erfahren oder sie können zu einer IP-Adresse die zugehörigen Rechnernamen abfragen. Die Abbildung von Rechnernamen auf IP-Adressen ist nicht unbedingt bijektiv. Häufig sind mehrere Namen derselben IP-Adresse zugeordnet. Ein Beispiel für nslookup: >nslookup -silent www.fernuni-hagen.de Server: 141.71.30.1 Address: 141.71.30.1#53 Non-authoritative answer: www.fernuni-hagen.de canonical name = cl-www.fernuni-hagen.de. Name: cl-www.fernuni-hagen.de Address: 132.176.114.181 In diesem Beispiel kommt die Antwort vom DNS-Server mit der Adresse 141.71.30.1. Der Webserver der FernUniversität hat zwei Namen (cl-www und (Version 4; 2014) 1.3 27 Netze www). Der Vorteil ist, dass man den Webserver bei Bedarf auf einer anderen Maschine installieren kann und dann nur den DNS-Eintrag ändern muss. Ihre lokal gespeicherten Verweise zeigen dann nach wie vor auf den richtigen Computer. Unter UNIX ersetzt das Programm dig zukünftig nslookup. Die Option -silent in obigem Kommando unterdrückt die Erinnerungsmeldung von nslookup, dass zukünftig dig benutzt werden soll. Neben den Informationen über die IP-Adresse zu einem Namen gibt dig auch Informationen über den DNS-Server aus. Beispielsweise kann der DNS-Server eine IP-Adresse von einem anderen DNS-Server übermittelt bekommen haben oder er kann sie aus seinem lokalen Cache gelesen haben. In diesem Fall (Cache) könnte die Adresse evtl. nicht mehr gültig sein, da sie geändert wurde und sich diese Tatsache noch nicht bis zum Cache des DNS-Servers verbreitet hat. Ping: Nachdem sie nun die IP-Adresse bzw. den Namen eines Computers kennen, können sie mit dem Programm ping testen, ob der Computer eingeschaltet ist und IP-Pakete empfangen und zurückschicken kann. Sie können den Computer entweder mit seiner IP-Adresse oder seinem DNS-Namen identifizieren. >ping localhost PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.207 time=0.043 time=0.041 time=0.098 time=0.090 ms ms ms ms ms --- localhost ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 3999ms rtt min/avg/max/mdev = 0.041/0.095/0.207/0.061 ms In diesem Beispiel wird der lokale Rechner abgefragt. Beachten Sie, dass der Administrator eines Rechners den Rechner auch so konfigurieren kann, dass der Rechner niemals auf Pings antwortet. Finger: Mit dem Programm finger können Sie herausfinden, wer an einem entfernten Computer angemeldet ist. Weiterhin können sie damit zusätzliche Finger-Port: 79 Informationen zu einem Benutzer erlangen. Da sich diese Informationen zur Vorbereitung von Angriffen benutzen lassen, wird der finger-Dienst i. d. R. deaktiviert. Traceroute: Mit dem Programm traceroute können Sie den Weg verfolgen, den IP-Pakete von Ihrem lokalen Rechner zu einem entfernten Rechner (engl. remote host) nehmen. Es ist in erster Linie für Administratoren gedacht. Aber auch „normale“ Benutzer können es starten und dann etwas über die Struktur des Internets erfahren. Beachten Sie jedoch, dass sich diese Struktur ständig ändern kann und die Pakete beim nächsten Aufruf vielleicht einen ganz anderen Weg nehmen könnten. Das folgende Beispiel zeigt den Weg, den IP-Pakete aus der Abteilung Informatik der Hochschule Hannover zum Studentenrechner bonsai der FernUniversität in Hagen zurücklegen. (Version 4; 2014) 28 Kapitel 1 Sicherheit in der Informationstechnik > traceroute bonsai.fernuni-hagen.de traceroute to bonsai.fernuni-hagen.de (132.176.114.21), 30 hops max, 40 byte packets 1 inner-gw-i.inform.fh-hannover.de (141.71.30.62) 0.288 ms 0.198 ms 0.128 ms 2 outer-gw-i.inform.fh-hannover.de (141.71.31.30) 0.357 ms 0.366 ms 0.414 ms 3 rzswitch10.rz.fh-hannover.de (141.71.1.240) 1.019 ms 0.754 ms 0.805 ms 4 igwserv.rz.fh-hannover.de (141.71.7.2) 0.779 ms 0.628 ms 0.671 ms 5 141.71.8.2 1.261 ms 1.093 ms 1.222 ms 6 clustergate-907-rf.rrzn.uni-hannover.de (130.75.9.9) 2.752 ms 2.571 ms 2.703 ms 7 gwingate-cgc.rrzn.uni-hannover.de (130.75.9.245) 3.675 ms 3.404 ms 3.629 ms 8 ar-hannover1.g-win.dfn.de (188.1.46.1) 4.031 ms 3.962 ms 3.914 ms 9 cr-hannover1-ge5-1.g-win.dfn.de (188.1.88.1) 4.452 ms 4.201 ms 4.061 ms 10 cr-essen1-po0-0.g-win.dfn.de (188.1.18.49) 9.775 ms 9.198 ms 9.005 ms 11 ar-essen1-ge0-0-0.g-win.dfn.de (188.1.86.2) 9.659 ms 8.775 ms 9.736 ms 12 C65-GWIN.fernuni-hagen.de (132.176.100.1) 11.467 ms 11.357 ms 11.261 ms 13 bonsai.fernuni-hagen.de (132.176.114.21) 11.465 ms 11.339 ms 11.520 ms Man erkennt an den ersten beiden Zeilen (inner gateway und outer gateway), dass die Abteilung Informatik der Hochschule Hannover eine Firewall mit DMZ betreibt. Das Thema Firewall wird in Kurseinheit 4, Abschnitt 4.3 besprochen. Einige Netzbetreiber konfigurieren ihre Router so, dass man auch mit traceroute keine Informationen darüber erhält, welchen Weg die Pakete nehmen. Alle an das Internet angeschlossene Firmennetze leiten die für traceroute erforderlichen Pakete nicht ins Internet. Man erhält somit keine Informationen über die interne Netzstruktur einer Firma. Telnet-Port: 23 ftp-Port: 21 Telnet: Das Programm telnet ist ein Terminal-Programm, mit dem Sie sich mit einem beliebigen anderen Computer im Internet verbinden können. Dabei verhält sich Telnet so, als säßen Sie an einem Terminal, das direkt an den anderen Computer angeschlossen ist. Die Benutzerkennung und das Passwort werden über das Internet übertragen. Auch während der Sitzung werden die Benutzereingaben und die Antworten des Computers unverschlüsselt übertragen. Je nachdem welchen Weg die Pakete nehmen, können alle Computer auf diesem Weg die Daten mitschreiben. Statt telnet wird heute überwiegend SSH benutzt. Es wird in Abschnitt 3.4.1 vorgestellt. Man kann Telnet aber einsetzen um Netzprotokolle zu testen. Dazu sagt man Telnet, mit welchem Port man verbunden werden will, indem man hinter dem Rechnernamen die Portnummer eingibt. Das Kommando telnet www.fernuni-hagen.de 80 verbindet Sie direkt mit dem Webserver. Sie können dann die unten gezeigten HTTP-Nachrichten eintippen und die Antworten des Servers als Text angezeigt bekommen. Dasselbe macht Ihr Webbrowser im Prinzip auch, aus einem Klick wird eine Anfragenachricht und die Antwortnachricht wird im Fenster schön formatiert angezeigt. Dateitransfer: Mit dem Programm ftp können Sie Dateien zwischen einem lokalen Computer und einem entfernten Computer hin und her kopieren. Das Programm erwartet beim Aufbau der Verbindung die Eingabe einer Benutzerkennung und eines Passworts. Diese werden, wie bei telnet, unverschlüsselt verschickt. Damit Sie nicht auf jedem ftp-Server eine Benutzerkennung einrichten müssen, gibt es die anonymen Kennungen ftp und anonymous. Diese brauchen kein Passwort (man bittet Sie i. d. R., Ihre eigene E-Mail-Adresse als Passwort anzugeben) und erlauben eingeschränkten Zugriff auf den Server. Übungsaufgabe 1.2 Welche Sicherheitsrisiken können bei ftp auftreten? (Version 4; 2014) 1.3 Netze World Wide Web: Waren die bisher vorgestellten Anwendungen und Dienste textbasiert und terminalorientiert, so ist das World Wide Web (WWW) WWW multimediabasiert und an grafischen Benutzeroberflächen orientiert. Zusätzlich bietet das WWW Möglichkeiten des Information Retrieval. Als Benutzer brauchen sie ein Client-Programm, das auch als Webbrowser bezeichnet wird, um auf die Inhalte von Webservern zugreifen zu können. Die Kommunikation zwischen Webclient und Webserver ist durch das Hypertext-Transfer-Protocol (HTTP) definiert. Darin ist festgelegt, welche Form die Anfragen eines Webcli- HTTP-Port: 80 ents haben und wie ein Webserver darauf antwortet. Dokumente auf Webservern sind in der Hypertext-Markup-Language (HTML) geschrieben. HTML ist eine HTML SGML-Anwendung, d. h. es gibt eine Document-Type-Definition (DTD) vom World-Wide-Web-Consortium (W3C) in der die zulässigen Dokumentbestandteile und ihre Organisation festgelegt sind. Für die Zukunft ist es geplant, nicht nur HTML-Dokumente, sondern allgemeine Dokumente in der eXtensible-MarkupLanguage (XML) zu erlauben. XML ist eine Weiterentwicklung von SGML, bei XML der man aus den Problemen mit SGML gelernt und die Anforderungen des WWW berücksichtigt hat. Weitere Informationen zu den Dateiformaten finden Sie auch im Kurs (01873) Daten- und Dokumentformate. Webserver und die Dokumente auf ihnen werden durch Uniform-ResourceLocators (URL) adressiert. Eine URL besteht i. d. R. aus drei Teilen: URL 1. dem Dienst, der benutzt werden soll, 2. dem Webserver, der kontaktiert werden soll und 3. dem Dokument, das angesprochen werden soll. Die folgende Tabelle zeigt einige Beispiele von URLs. Dienst Webserver Dokument http ://www.fernuni-hagen.de /FeU/Fachbereiche/fachbereiche_f.html http ://www.deutsche-bank.de ftp ://ftp.fernuni-hagen.de / Die Kommunikation zwischen Client und Server basiert auf dem Frage-AntwortPrinzip (engl. request response). Anfragen bestehen aus einem Anfragekopf und einem Anfragerumpf. Diese sind durch eine Leerzeile getrennt. Die erste Zeile eines Anfragekopfs enthält die Methode, das Objekt, auf das diese Methode angewendet werden soll, und die Versionsnummer des HTTP-Protokolls. Die weiteren Kopfzeilen enthalten Informationen wie beispielsweise das Datum, die Codierung der Zeichen usw. Ein Beispiel sieht wie folgt aus: GET /index.html HTTP/1.1 Host: 10.71.144.4 In diesem Beispiel ist der Anfragerumpf leer. Hinter der Zeile Host: kommt also noch eine Leerzeile. Die Antwort des Servers besteht aus einem Antwortkopf und einem Antwortrumpf, die wiederum durch eine Leerzeile getrennt sind. Die erste Zeile der Antwort ist eine Statuszeile. Die weiteren Kopfzeilen sind teilweise wie im Anfragekopf. Der Antwortrumpf enthält meistens die angeforderte HTML-Seite. Ein Beispiel: (Version 4; 2014) 29 30 Kapitel 1 Sicherheit in der Informationstechnik HTTP/1.1 200 OK Date: Fri, 06 Aug 1999 14:57:16 GMT Server: mod_perl/1.18 Apache/1.3.4 (Unix) (SuSE/Linux) ... Last-Modified: Fri, 06 Aug 1999 14:27:12 GMT Accept-Ranges: bytes Content-Length: 4464 Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML3.2//EN" "strict.dtd"> <HTML> <HEAD> ... </HEAD> <BODY> ... </BODY> </HTML> Die gesamte Kommunikation findet unverschlüsselt statt. Weiterhin kann weder der Client sicher sein, dass er tatsächlich mit dem Server kommuniziert, mit dem er kommunizieren möchte, noch kann der Server sicher sein, dass der Client derjenige ist, der er vorgibt zu sein (Authentizität). SMTP port: 25 Versand Electronic Mail: Die Möglichkeit, schnell und einfach elektronische Nachrichten (engl. email) auszutauschen, hat sicherlich stark zur Popularität des Internets beigetragen. Die Art und Weise, wie eine E-Mail verschickt wird, ist im Simple-Mail-Transfer-Protocol (SMTP) festgehalten. Der Benutzer benötigt ein Client-Programm, in dem er seine E-Mail schreibt, verwaltet, empfängt und verschickt. Das Client-Programm kommuniziert dazu mit einem Mailserver, der E-Mails entgegen nimmt und entweder direkt zustellt oder an einen weiteren Mailserver weiterleitet. Die Übertragung einer E-Mail vom Mailclient zum Mailserver, bzw. von Mailserver zu Mailserver läuft wie folgt ab: 1. Der Mailclient öffnet eine Verbindung zum Mailserver. Konkret bedeutet dies, dass an den Port 25 des Mailservers eine Nachricht geschickt wird. S: HELO gremlin.fernuni-hagen.de Das vorangestellte „S: “ kennzeichnet Nachrichten vom Mailclient an den Server. Antworten des Servers werden durch ein „R: “ gekennzeichnet. Diese Zeichen werden nicht übertragen, sondern sind zum besseren Verständnis der Beispiele von mir eingefügt worden. In der oben genannten Nachricht identifiziert sich der E-Mail verschickende Computer gegenüber dem Mailserver. 2. Als nächstes führt der Mailclient die eigentliche Übertragungstransaktion aus. Diese besteht aus drei Schritten: (a) Zunächst wird ein einleitendes Kommando geschickt. S: MAIL FROM: <[email protected]> (Version 4; 2014) 1.3 31 Netze Der Mailserver beginnt eine neue Transaktion und initialisiert seinen Zustand und seine internen Puffer. (b) Anschließend schickt der Mailclient ein oder mehrere „Empfänger“Kommandos: S: R: S: R: S: R: RCPT TO: <[email protected]> 250 OK RCPT TO: <[email protected]> 550 no such user here RCPT TO: <[email protected]> 250 OK Der Mailserver überprüft und speichert die Empfängeradressen. Das Beispiel zeigt, dass ein Mailserver bestimmte Empfängeradressen, wie asdfg, u. U. sofort verwerfen kann. Der Server speichert diese Adressen, um die anschließend vom Client übergebene Nachricht an diese Adressen zu schicken. (c) Zuletzt wird die eigentliche Nachricht übertragen. Diese Übertragung wird durch das DATA-Kommando eingeleitet. Das Ende der Nachricht wird durch eine Zeile gekennzeichnet, die nur einen Punkt enthält. S: R: S: S: S: S: S: S: S: S: S: S: S: S: S: S: S: S: R: DATA 354 start mail input; end with <CRLF>.<CRLF> From [email protected] Fri ... Return-Path: <[email protected]> Date: Fri, 11 Jun 1999 15:05:26 +0200 (MEST) From: Stefan Wohlfeil <[email protected]> To: [email protected] Cc: [email protected] Subject: Mail Uebertragung mit SMTP Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Hallo Herr Klein, ... MfG Stefan Wohlfeil . 250 message accepted for delivery 3. Der zweite Schritt kann nun mehrmals wiederholt werden. Hat der Mailclient alle E-Mails abgeliefert, so beendet er die Verbindung zum Mailserver. S: QUIT R: mail.fernuni-hagen.de closing connection Die oben dargestellten Beispiele zeigen das Prinzip der Mailübermittlung, nicht unbedingt den Wortlaut der Antworten eines Mailservers. Vom Sicherheitsstandpunkt gibt es einige Anmerkungen. (Version 4; 2014) Sicherheit 32 Kapitel 1 Sicherheit in der Informationstechnik Zunächst wird bei E-Mails im Internet zwischen einem Umschlag (engl. envelope) und der eigentlichen Nachricht unterschieden. Der Umschlag wird durch die Schritte 2.(a) und 2.(b) erstellt. Für den Mailserver ist nur der Umschlag für die Zustellung der E-Mail von Bedeutung. Die Nachricht selbst besteht auch aus zwei Teilen. Alle Zeilen vor der ersten Leerzeile sind der Nachrichtenkopf (engl. message header), die Zeilen dahinter der Nachrichtenrumpf (engl. message body). Im Nachrichtenkopf werden Absender- und Empfängerangaben wiederholt. Diese sollten mit den Angaben auf dem Umschlag übereinstimmen, müssen es aber nicht. Unverlangt zugeschickte Werbe-E-Mails (engl. spam) haben im Nachrichtenkopf häufig gefälschte Einträge. Weiterhin findet die komplette Kommunikation zwischen Mailclient und Mailserver unverschlüsselt statt. Jedermann auf dem Weg der Nachricht kann mitlesen und dadurch erfahren, mit wem und worüber Sie kommunizieren. Bei der Weiterleitung einer E-Mail trägt jeder der beteiligten Mailserver in den Nachrichtenkopf eine Zeile Received: ein. Darin wird festgehalten, dass und wann diese E-Mail den Server erreicht hat. Damit kann bei Zustellungsproblemen der Weg einer E-Mail nachvollzogen werden. In den Nachrichtenkopf kann aber auch der Absender Informationen eintragen, beispielsweise auch eine Zeile Received. Damit kann der Weg der E-Mail verschleiert werden. Empfang POP3 IMAP4 Das gesamte E-Mail-System ist auch darauf eingerichtet, dass ein Empfänger nicht permanent online ist. In diesem Fall wird eine E-Mail auf dem letzten am Weg liegenden Mailserver gespeichert. Sie können mit Ihrem Mailclient dann direkt diesen Server kontaktieren, um angekommene E-Mails auf den eigenen Computer zu laden und neue E-Mails vom Computer an den Mailserver zu übertragen. Diese Kommunikation ist im Post-Office-Protocol Version 3 (POP3 Protokoll) bzw. auch im neuen IMAP4 -Protokoll geregelt. Die Idee dieser Protokolle ist, dass der Client eine Verbindung zum Mailserver aufbaut. Im POP3-Protokoll schickt der Client dann einen Benutzernamen und ein Passwort an den Mailserver. Beides wird im Klartext über das Netz übertragen. Anschließend kann der Client die angekommenen E-Mails auf seinen Computer übertragen, auf dem Server dann löschen und neue E-Mails vom Computer zum Server schicken. Da E-Mails sehr häufig mit POP3 abgeholt werden, unterstützen moderne E-Mail-Server auch durch SSL verschlüsselte Verbindungen. SSL wird in Abschnitt 3.3.1 genauer behandelt. 1.4 Konkrete Gefahren In diesem Abschnitt lernen Sie einige der konkreten Bedrohungen kennen, denen Ihr Computer heutzutage ausgesetzt ist. Dazu gehören die auch in den Nachrichten immer öfter vorkommenden Viren, die sogenannten Trojanischen Pferde und der Missbrauch von Passwörtern. Sie werden in den folgenden Unterabschnitten vorgestellt. Insgesamt ist dies allerdings nur ein erster Einblick. Vertiefende Informationen zu weiteren Angriffsmöglichkeiten auf Computer werden in Kurs (01867) Sicherheit im Internet 2 behandelt. (Version 4; 2014) 1.4 33 Konkrete Gefahren 1.4.1 Viren Prinzip: Viren sind Computerprogramme, die sich selbst kopieren (vervielfältigen) können und sich auf diesem Weg vermehren. Neben dieser Grundfunktion enthalten Viren auch andere Funktionen. Diese anderen Funktionen können unterschiedlichen Zwecken dienen: • Sie können Schäden aller Art auf Ihrem Computer anrichten, indem sie Dateien löschen oder deren Inhalt verändern. • Viren können versuchen, sich selbst zu tarnen und zu verstecken. • Die zusätzlichen Funktionen können aber auch „nur“ den Benutzer durch seltsame Ausgaben (Bildschirmmeldungen oder akustische Signale) verunsichern und erschrecken. Schäden: Ein Virus ist für denjenigen, der ihn auf dem Computer hat, immer eine unangenehme Sache. Man kann eigentlich nie genau wissen, was ein Virus letztlich machen wird. Um das herauszufinden, müssen menschliche Experten das Virus genau analysieren. Aus der Theoretischen Informatik ist bekannt, dass Computerprogramme im Allgemeinen nicht einmal herausfinden können, ob ein gegebenes Programm bei einer gegebenen Eingabe terminiert (Unentscheidbarkeit des Halte-Problems). Es besteht also wenig Hoffnung, dass Virenscanner jemals genau herausfinden können, welchen Schaden ein Virus möglicherweise anrichten kann. Ein Benutzer hat also keine andere Wahl, als das Virus aus seinem System zu entfernen. Dies kostet auf jeden Fall Zeit und Mühe. Von Viren verursachte Schäden können unterschiedlich groß sein. Im einfachsten Fall löst das Virus ein akustisches Signal bei jedem Tastendruck aus, falls gerade der 18. eines Monats ist. Ein größerer Schaden entsteht, wenn das Virus versucht Programmdateien zu löschen, die Sie ausführen möchten. Da diese Schadensfunktion für den Benutzer offensichtlich ist, kann man das Virus entfernen und die gelöschten Programme wieder installieren. Natürlich sind hierzu die originalen Datenträger oder die hoffentlich regelmäßig angelegten Sicherungskopien (engl. backup) erforderlich. Zu den schlimmsten Schäden gehört es, wenn ein Virus unbemerkt Daten von Ihrem Computer liest und diese dann per E-Mail oder verpackt in HTTPRequests verschickt. Sollte das Virus Ihre Benutzerkennung (engl. account) oder Ihr Passwort (engl. password) ausspioniert haben, kann sich ein Dritter auf Ihrem Computer anmelden und dann beliebigen Schaden anrichten. Schadensumfang Virentypen: Zu den ersten Viren überhaupt gehörten die sogenannten Bootsektor-Viren (BSV). Wenn ein Computer eingeschaltet wird, dann Bootsektor-Viren muss als erstes das Betriebssystem geladen werden. Damit man nun auf einem (BSV) Computer mehrere Betriebssysteme benutzen und ein Betriebssystem einfach aktualisieren (engl. to update) kann, ist das Betriebssystem i. d. R. nicht im ROM (Read Only Memory) vorhanden. Stattdessen enthält das ROM ein kleines Programm (Urlader), das die Aufgabe hat das Betriebssystem zu laden. Der Urlader sucht auf fest vorgegebenen Speichermedien nach dem eigentlichen Ladeprogramm (engl. loader). Welche Speichermedien das genau sind (Diskette, DVD, USB-Gerät, Festplatte) kann man im sogenannten Basic Input Output (Version 4; 2014) 34 Unified Extensible Firmware Interface (UEFI) Master-Boot-Record (MBR) Kapitel 1 Sicherheit in der Informationstechnik System (BIOS) des Computers einstellen. Eine moderne Variante des BIOS heißt Unified Extensible Firmware Interface (UEFI). Auf allen o. g. Speichermedien gibt es eine fest vorgegebene Stelle, an der ein Betriebssystem-Ladeprogramm stehen kann. Auf einer Festplatte nennt man diese Stelle Master-Boot-Record (MBR). Bei Disketten (engl. floppy disk) ist das der erste Sektor auf der Diskette, bei Festplatten (engl. hard disk) ist es Sektor 1 auf Zylinder 0, Kopf 0. Der Master-Boot-Record einer Festplatte enthält weiterhin Informationen über die Aufteilung der Festplatte (engl. partition table). Das Ladeprogramm aus dem MBR startet nun das Betriebssystem, das auf einer der Partitionen gespeichert ist (siehe Abbildung 1.16). Falls mehrere Betriebssysteme auf der Festplatte installiert sind, bietet das Ladeprogramm eine Auswahl an und der Benutzer kann entscheiden, welches Betriebssystem gestartet werden soll. Zu Linux gehört das Ladeprogramm GRUB (GRand Unified Bootloader), es erlaubt das Laden unterschiedlicher Betriebssysteme. MBR Lader MBR Partition 1 Urlader Partition 2 ROM Festplatte Festplatte Abbildung 1.16: Bootvorgang bei einem Computer Abbildung 1.16 zeigt den prinzipiellen Ablauf beim Starten eines Computers. In einem PC ist der Urlader so implementiert, dass er zunächst auf dem Diskettenlaufwerk nach einem Lader im Bootsektor sucht, anschließend auf der Festplatte und evtl. anschließend auch noch auf dem CD-ROM-Laufwerk. Im BIOS des PC kann man diese Reihenfolge evtl. auch ändern. Wie kann nun ein PC mit einem Bootsektor-Virus infiziert werden? Am Anfang steht i. d. R. eine infizierte Diskette, eine infizierte CD/DVD oder ein infizierter USB-Stick, die irgendwelche Daten enthalten. Sie legen die Diskette/CD/DVD ein (schließen den USB-Stick an), kopieren die Daten, arbeiten mit dem Computer, vergessen die Diskette/CD/DVD bzw. den USBStick und schalten am Ende den Computer wieder aus. Bis jetzt ist noch nichts passiert. Beim nächsten Einschalten startet der Urlader nicht den Lader aus dem MBR der Festplatte, sondern den infizierten Lader aus dem Bootsektor der Diskette/CD/DVD bzw. dem USB-Stick. Das Virus führt dann die folgenden Schritte aus: 1. Es lädt sich in den Hauptspeicher und trägt sich in den Interrupt 13h (disk read/write) ein. 2. Es kopiert den Original-MBR der Festplatte an einen anderen freien Platz auf der Platte. 3. Es kopiert sich selbst in den MBR der Festplatte. 4. Es startet den Lader aus dem „Original“-MBR der Festplatte. (Version 4; 2014) 1.4 35 Konkrete Gefahren Für den Benutzer sieht es so aus, als starte der Computer wie immer. Schließt man nun einen neuen USB-Stick an und versucht den Inhalt zu lesen oder zu schreiben, so kommt das Virus ins Spiel. Zum Lesen oder Schreiben ruft das Programm das Betriebssystem auf (siehe auch Kurs (01801) Betriebssysteme und Rechnernetze) und das Betriebssystem löst den Interrupt aus, womit das Virus aktiviert ist. Das Virus überprüft, ob der USB-Stick bereits infiziert ist. Ist er es noch nicht, dann kopiert sich das Virus in den Bootsektor des USB-Sticks. Auf diese Art verbreitet sich das Virus. Da das Virus gestartet wird bevor das Betriebssystem geladen ist, können die Schutzfunktionen des Betriebssystems nicht wirksam werden. Ein VirentestProgramm kann das Virus auch nachträglich nicht mehr erkennen. Dazu müsste es den Master-Boot-Record der Festplatte lesen. Dieser Lesezugriff läuft aber letztlich wieder über den Interrupt, in den sich das Virus „eingeklinkt“ hat. Das Virus liefert bei einer Leseanfrage also einfach den kopierten „Original“MBR zurück. Viren, die sich auf diese oder eine andere Art tarnen, nennt man auch Stealth-Virus. Bei der Übertragung auf einen anderen Rechner schützt Stealth-Virus sich das Beagle-Virus beispielsweise dadurch, dass es sich nur verschlüsselt überträgt. Virenscanner auf dem Übertragungsweg können die Nachricht dann nicht entschlüsseln und das Virus erkennen. Erst der Empfänger entschlüsselt die Nachricht und startet möglicherweise das Virus. Ein PC wird also nur durch das Starten von einem infizierten Bootmedium mit einem Bootsektor-Virus infiziert. Um das Virus zu entdecken und zu entfernen, brauchen Sie eine garantiert virenfreie Bootdiskette. Diese enthält die entsprechenden Hilfsprogramme, die einen virenfreien MBR rekonstruieren und auf die Festplatte schreiben können. Von Klaus Knopper gibt es eine Linux-Distribution, genannt Knoppix, die man direkt von CD/DVD booten Knoppix kann. Darauf basiert eine CD/DVD des Heise Zeitschriften Verlags, die Antivirenprogramme enthält. Bootet man dieses System und ist der Rechner ans Internet angeschlossen, dann bestehen gute Chancen mit Hilfe der aktuellen Virensignaturen die Schädlinge wieder zu entfernen. Der sicherste Weg ein kompromittiertes System wieder in einen sauberen Zustand zu versetzen ist allerdings die komplette Neuinstallation mit einem „sauberen“ Installationsmedium. Nur mit aktuellen Sicherungskopien gelingt die Wiederherstellung ohne Datenverlust. Den zweiten Virustyp bilden die sogenannten Dateiviren. Ein Dateivirus infiziert einzelne Dateien, vorzugsweise Programmdateien (also .exe- und .comDateien unter DOS). Startet ein Benutzer ein infiziertes Programm, so lädt sich das Virus in den Hauptspeicher und versucht dort sesshaft (resident) zu werden. Das heißt, dass auch nach der Beendigung des Wirtprogramms das Virus weiterhin im Speicher bleibt und weiter läuft. Startet der Benutzer weitere Programme, so versucht das Virus auch diese Programme zu infizieren. Dazu verändert das Virus die Programmdatei, beispielsweise indem der Viruscode an das Ende der Datei angehängt wird. An den Anfang der Programmdatei fügt das Virus dann auch einen Aufruf des Viruscodes am Ende der Datei ein. Siehe dazu auch Abbildung 1.17. Dabei verändert sich die Dateigröße des Programms und man kann daran die Infektion erkennen. Ein cleveres Virus versucht diese Veränderung zu verbergen. Dazu kann es beispielsweise in der Programmdatei einen Block zusammenhängender Nullen suchen und sich dort hinein kopieren. Beachten Sie, dass Abbildung 1.17 nicht maßstabsgetreu ist. Der Viruscode ist deutlich (Version 4; 2014) Dateiviren 36 Kapitel 1 Sicherheit in der Informationstechnik Programmdatei eingefügter Aufruf Programmdatei Viruscode Abbildung 1.17: Infektion einer Programmdatei kleiner als der Programmcode. Eine passende Folge von Nullen zu finden, ist also gar nicht so unwahrscheinlich. Beim Start des Programms wird dieses in den Hauptspeicher geladen und der Viruscode gestartet. Neben den oben bereits genannten Schritten überschreibt sich der Viruscode im geladenen Programm wieder mit Nullen, damit das Programm wie üblich funktioniert. Ein Dateivirus könnte nicht nur andere Programmdateien infizieren, sondern es könnte auch versuchen, sich selbst in den Bootsektor zu kopieren. Wenn ein Dateivirus gestartet wird, dann ist das Betriebssystem bereits geladen und das Virus muss die Schutzmechanismen des Betriebssystems überwinden. Das Virus läuft mit den Berechtigungen des Benutzers, der das Virus (unabsichtlich oder absichtlich) gestartet hat. Normale Benutzer dürfen i. d. R. aber keine Änderungen am System, bzw. den Systemdateien vornehmen. Normale Benutzer haben nur das Ausführungsrecht (engl. execute permission) an diesen Dateien, aber kein Schreibrecht. Da aber auch normale Benutzer häufig Sicherheitsaktualisierungen (engl. security updates) ihres Betriebssystems installieren müssen, können sie hierzu Administratorrechte anfordern. Dazu müssen die Benutzer in einem speziellen Dialog noch einmal ein Administrator-Passwort eingeben. Ein Virus kann auch diesen Dialog anzeigen und den Benutzer dazu verleiten, das AdministratorPasswort einzugeben. Dazu kann das Virus z. B. anzeigen „Programm XY möchte ein wichtiges Security Update installieren. Bitte Administrator-Passwort eingeben“. Viele Benutzer machen das dann auch und schon hat das Virus entsprechende Berechtigungen erlangt. Vorhandene Dateiviren werden entfernt, indem man den Computer von einem garantiert virenfreien Medium startet und dann alle infizierten Programme wieder neu installiert. Im Zweifelsfall müssen alle Programme neu installiert werden. Ein Dateivirus kann man durch den Start eines infizierten Programms auf dem eigenen Computer bekommen. Das infizierte Programm kann über ein USB-Gerät oder auch über das Netz (per E-Mail oder auch durch einfaches Surfen im Internet) auf den eigenen Computer kommen. Computer, die als Server für Programmdateien in einem Netz arbeiten, sind besonders gefährdet. Makroviren Den dritten Virentyp bilden die sogenannten Makroviren. Sie sind im Prinzip auch Dateiviren, denn sie befallen Dateien. Während „klassische“ Dateiviren i. d. R. Programmdateien infizieren, stecken Makroviren in Dokumentdateien, wie beispielsweise Textverarbeitungsdokumenten, Tabellenkalkulationsdokumenten oder Präsentationsdokumenten. Die zugehörigen Programme enthalten (Version 4; 2014) 1.4 37 Konkrete Gefahren Funktionen zum Erstellen von Makros. Makros sind kleine Programme, die dem Anwender die Arbeit erleichtern sollen. Zuerst bestand die Funktion von Makros Definition: Makro darin, die vom Benutzer gedrückten Tasten zu speichern und diese Folge später wiederholt und automatisch abzuspielen. Moderne Anwendungsprogramme bieten spezielle Makrosprachen, die auf Programmiersprachen wie C oder BASIC basieren. Die Office-Programme der Firma Microsoft bieten beispielsweise die Sprache VBA (Visual Basic for Applications) zur Entwicklung von Makros an. Diese Makrosprachen erlauben nicht nur das Aufzeichnen von Tastendrücken, sondern auch komplexe Kontrollstrukturen (Sequenz, Auswahl, Wiederholung und Prozeduraufrufe) und den Zugriff auf Dateien. Makros werden zusammen mit dem Dokumentinhalt in einer Datei gespeichert. Öffnet ein Benutzer diese Datei, so werden der Inhalt und der Makrocode geladen. Inzwischen verwenden alle Office-Programme von Microsoft dieselbe Makrosprache. Makroviren können daher nicht nur in Textdokumenten, sondern auch in Tabellenkalkulationsdokumenten oder auch Präsentationen stecken. Im Gegensatz zu Bootsektor- oder „klassischen“ Dateiviren, die i. d. R. in Assembler oder einer anderen Low-Level-Programmiersprache geschrieben werden, werden Makroviren in einer einfacher zu lernenden höheren Programmiersprache geschrieben. Jedes Dokument, das Sie heute aus dem Internet laden, per E-Mail zugeschickt bekommen oder von einer Diskette/CD-ROM kopieren, könnte ein Makrovirus enthalten. Zum Schutz vor Makroviren bieten sich folgende Möglichkeiten: Schutz vor Makroviren 1. Installation eines Virenscanners, der auch Makroviren erkennen und entfernen kann. Da immer wieder neue Makroviren auftauchen, reicht es nicht, Virenscanner den Scanner einmal zu installieren. Man muss den Virenscanner auch einsetzen regelmäßig aktualisieren. Weitere Hinweise hierzu folgen in Abschnitt 3.5. 2. Von Microsoft sind inzwischen auch Versionen ihrer Office-Programme verfügbar, die ausschließlich Dokumente anzeigen können. Sie können die Dokumente damit nicht bearbeiten. Weiterhin können diese Programme auch keine Makros ausführen. Ein Makrovirus kann in diesen Programmen also nicht aktiv werden. 3. Wenn das Dokument von Ihnen nicht weiter bearbeitet werden soll, dann ist ein Dokumentformat, wie das Portable-Document-Format (PDF) von Adobe, die bessere Wahl. 4. Seit etwa 2003 können Makros auch digital signiert sein (vergleiche Abschnitt 2.6.2). Durch Prüfen der Signatur kann der Benutzer verifizieren, von wem das Makro stammt und dass es nicht verändert wurde. So kann man Makros von vertrauenswürdigen Personen zulassen, während Makros von anderen Autoren nicht ausgeführt werden. Konfigurieren Sie Ihre Office-Installation entsprechend. Makroviren sind recht einfach zu schreiben und haben vielfältige Ausbreitungsmöglichkeiten. Sie sind unabhängig vom Betriebssystem und brauchen nur ihre zugehörige „Wirtsanwendung“. Vernünftigen Schutz vor Makroviren bieten derzeit Virenscanner, die a) regelmäßig aktualisiert werden und b) alle Dateien auf Viren überprüfen, sowie die sichere Konfiguration der Office-Programme, so dass unbekannte Makros nicht ausgeführt werden. (Version 4; 2014) Reader-Programm benutzen 38 Kapitel 1 1.4.2 Wirtsprogramme Sicherheit in der Informationstechnik Würmer Während Viren sich mit Hilfe anderer Programme, sog. Wirtsprogramme, verbreiten, verbreiten sich Würmer eigenständig. Sie müssen also vom Benutzer mindestens einmal explizit gestartet werden. Dann führen sie ihre Schadensfunktion aus und verbreiten sich weiter. Die Schadensfunktion kann nun auch darin bestehen, dass der Wurm dafür sorgt, dass er später automatisch immer wieder gestartet wird. Unter Microsoft Windows kann er sich in den Autostart-Ordner kopieren oder die Registry verändern. Typische Verbreitungswege für Würmer sind E-Mails oder HTTP. Dazu enthält der Wurm beispielsweise seinen eigenen SMTP- oder HTTP-Server. Aber auch andere Verbreitungswege sind denkbar. In einem Microsoft WindowsNetz kann ein Wurm auch nach freigegebenen Laufwerken suchen und sich dort unter einem Tarnnamen installieren. Die Tarnnamen sind so gewählt, dass ein Benutzer dazu verleitet wird, einen Doppelklick auf die Datei auszuführen. Obwohl eigentlich ein Programm, gibt sich der Wurm dann auch einmal den Namen eines Bildes. Bei bestimmten Schwachstellen kann sich ein Wurm auch ganz ohne Unterstützung des Benutzers verbreiten. Der Conficker-Wurm ist so ein Beispiel, da er eine Schwachstelle im RPC-Dienst ausnutzte. 1.4.3 Trojanische Pferde Ein Programm, das neben seiner eigentlichen Funktion auch weitere Funktionen ausführt, nennt man Trojanisches Pferd, falls die weiteren Funktionen dem Benutzer nicht bekannt sind und er deren Ausführung auch nicht bemerkt. Normalerweise stellt diese weitere Funktion für den Benutzer eine Gefahr dar. Ein Trojanisches Pferd kann in jedem Programm stecken, in einem Textverarbeitungssystem, einem Editor, einem Bildschirmschoner oder kleinen Hilfsprogrammen zur Datei- oder Netzwerkverwaltung. Aber auch im Betriebssystem oder der Systemsoftware können unbekannte und nicht dokumentierte Funktionen stecken. Im Internet werden sehr viele Programme von den unterschiedlichsten Autoren für die unterschiedlichsten Zwecke angeboten. Seien Sie vorsichtig, wenn sie unbekannte Programme aus dem Netz laden und bei sich installieren wollen. Gerade wenn diese Programme nur in Binärform, also für Menschen unleserlich, verteilt werden, können sie über die Funktionen des Programms nur spekulieren. Anfang 2009 wurde beispielsweise über das BitTorrent-Netz eine trojanisierte Version der Bürosoftware iWork2009 der Firma Apple verbreitet. Das Installationsprogramm hat neben der Bürosoftware auch einen Trojaner installiert. Ein weiteres beliebtes Gebiet für Trojaner sind Multimedia-CODECs. Ein CODEC ist eine Software, die Multimediadaten wie Sound oder Filme in ein digitales Format wie MP3 für Musik oder MPEG für Filme COdiert oder DECodiert. Neben den beiden genannten Formaten gibt es auch viele andere Formate. Multimediasoftware ist daher modular programmiert, d. h. sie kann einfach durch Installation zusätzlicher CODECs erweitert werden und dann auch neue Formate abspielen. Auf einigen Internetseiten werden nun Multimediadaten angeboten, für die der Benutzer einen zusätzlichen CODEC aus dem Netz laden und installieren soll. Hier besteht die Gefahr, dass man neben einem CODEC auch weitere unerwünschte Funktionen installiert. Dieses modulare Konzept findet sich auch bei den Webbrowsern wieder. (Version 4; 2014) 1.4 Konkrete Gefahren Sie können durch sogenannte Plug-Ins in ihren Funktionen erweitern werden. Ob ein Plug-In aber neben der offensichtlichen Funktion nicht auch die Benutzereingaben beim Internetbanking irgendwohin weiterleitet kann ein normaler Benutzer kaum und selbst Experten nur schwierig herausfinden. Da man einem Programm nicht per se ansehen kann, was es letztlich machen wird8 , kann man nicht auf die automatische Entdeckung von trojanischen Pferden hoffen. Man kann als Benutzer nur versuchen, Veränderungen im System zu erkennen. Dazu erstellt man sich eine Datenbank, die zu allen installierten Programmen Informationen wie • das Datum der letzten Änderung, • die Größe der Programmdatei und • spezielle Prüfsummen (Hash-Codes) der Programmdatei enthält. Diese Daten werden dann regelmäßig geprüft. Stellt man Veränderungen fest9 , so müssen die veränderten Programme überprüft und gegebenenfalls neu installiert werden. Trojanische Pferde finden sich nicht nur in Programmdateien, sondern unter Umständen auch in Dokumentdateien. Diese enthalten neben dem eigentlichen Dokumentinhalt weitere Informationen, die man als Anwender dort nicht vermutet. Dateien von Microsoft Office beispielsweise sind in einem codierten Format abgespeichert, das nur Microsoft selbst kennt. Neben dem jeweiligen Dokumentinhalt enthalten sie auch Informationen wie die Programmversion, mit der das Dokument erstellt wurde, den Pfadnamen, unter dem das Dokument auf der Festplatte gespeichert ist, Namen der Ersteller und Bearbeiter usw. Als Benutzer kann man nicht ausschließen, dass nicht auch Informationen über andere installierte Programme oder sonstige vertrauliche Daten in einem unverfänglichen Textdokument stecken. Verschickt man solche Dateien per E-Mail, so gibt man u. U. auch Informationen preis, die man eigentlich nicht preisgeben möchte. Ab der Version Microsoft Office 2007 gibt es auch das Werkzeug Document Inspector. Es ist dazu gedacht, vertrauliche und versteckte Informationen aus einem Dokument zu entfernen. Zu diesen Informationen gehören (1) persönliche Daten (z. B. Autor) und allgemeine Dokumenteigenschaften, (2) Kommentare und Informationen zur Versionsgeschichte, (3) Kopf- und Fußzeilen oder sog. Watermarks, (4) versteckter Text, versteckte Zeilen/Spalten in Tabellen, (5) unsichtbare Inhalte oder (6) Präsentationsnotizen. Fazit: Viren, Würmer und Trojanische Pferde sind Beispiele für Schadsoftware (engl. malware). Aktuelle Schadsoftware kombiniert die Techniken der Viren, Würmer und Trojaner und ergänzt diese Techniken um automatische Aktualisierungsfunktionen. Dadurch kann die Schadsoftware weitere Komponenten nachladen und dadurch auch mutieren. Die Häufigkeit der unterschiedlichen Schadprogrammtypen zu zählen ist daher nicht mehr sinnvoll. Man kann jedoch davon ausgehen, dass die Zahl der Schadprogramme kontinuierlich steigen wird. 8 Sie erinnern sich: Das Halte-Problem ist nicht entscheidbar! Ein Angreifer kann zwar das Datum der letzten Änderung oder die Dateigröße manipulieren, bei guten Prüfsummen kann der Angreifer die Veränderungen aber nicht mehr so einfach tarnen. 9 (Version 4; 2014) 39 40 Kapitel 1 1.4.4 Sicherheit in der Informationstechnik Passwortmissbrauch Authentifikation: Passwörter (auch Kennwörter genannt) werden zur Authentifikation von Benutzern eingesetzt. Bei der Authentifikation geht es um die Prüfung, ob der Benutzer tatsächlich derjenige ist, der er vorgibt zu sein. Im Prinzip gibt es für diese Prüfung mehrere Möglichkeiten: Biometrie 1. Überprüfen eines unverwechselbaren und schwer zu fälschenden biometrischen Merkmals, wie beispielsweise eines Fingerabdrucks. Dieses Thema wird in Kurs (01868) Sicherheit im Internet 1 – Ergänzungen vertieft. Besitz 2. Kontrolle eines schwer zu fälschenden Gegenstandes, wie beispielsweise eines Personalausweises. Auf den neuen Personalausweis wird in Abschnitt 2.7.4 eingegangen. Wissen 3. Überprüfung, ob die Person eine bestimmte Information, wie beispielsweise eine Geheimnummer, kennt. Bei der Benutzer-Authentifikation an einem Geldautomaten werden die Merkmale Besitz und Wissen geprüft. Der Benutzer muss eine gültige EC-Karte besitzen und eine Geheimzahl (genannt PIN) kennen. Nur wenn beide Merkmale erfolgreich geprüft wurden, ist die Authentifikation gelungen. Bei der Authentifikation gegenüber einem Computer greift man heute i. d. R. nur auf die Kontrolle des Merkmals Wissen zurück. Als Benutzer kann bzw. Sicherheits- muss man ein Passwort auswählen. Das Problem mit Passwörtern ist, dass problem jeder, der das Passwort von Benutzer xy kennt, sich selbst als Benutzer xy ausgeben kann. Von einem fremden Passwort kann man auf verschiedenen Wegen erfahren: Raten: Man kann beispielsweise prüfen, ob der Benutzer seinen Benutzernamen auch als Passwort eingetragen hat. Vielleicht hat ein Benutzer auch seine Telefonnummer, den Namen des Partners, der Kinder, der Eltern, sein Autokennzeichen oder eine andere öffentlich bekannte Information über sich selbst als Passwort verwendet. Ausprobieren: Man kann Computer auch so programmieren, dass sie nacheinander alle Wörter eines Wörterbuchs, systematisch ausprobieren. Heute gibt es nicht nur typische Wörterbücher im Netz, sondern auch Listen mit bisher ausgespähten Passwörtern. Die Programme prüfen dann alle Wörter (klassische Wörter ebenso wie bereits bekannte Passwörter) und spezielle Modifikationen davon. Solche Modifikationen können das Anhängen von Ziffern(folgen) oder das Ersetzen einzelner Zeichen des Wortes (z. B. den Buchstaben l durch die Ziffer 1 ersetzen) sein. Noch allgemeiner kann man hergehen und alle Zeichenketten über dem Alphabet der zulässigen Passwortzeichen generieren und als Passwort ausprobieren. Für ein Passwort der Länge n, bei dem jedes Zeichen aus einem Vorrat von x Zeichen stammen darf, gibt es jedoch xn Möglichkeiten. Ausspähen/Abhören: Bei der Eingabe des Passworts kann man beobachtet werden. Insbesondere bei Passwörtern, die man selbst nicht ändern kann oder darf, ist es besonders wichtig, bei der Eingabe nicht beobachtet zu werden. Falls ein unbeobachtet eingegebenes Passwort erst im Klartext (Version 4; 2014) 1.4 41 Konkrete Gefahren über ein Netz an einen entfernten Computer zur Prüfung geschickt wird, kann das Passwort auf diesem Weg ausgespäht und kopiert werden. In diese Kategorie fallen auch alle Versuche von Hackern, mittels gefälschter Nachrichten jemanden zur Preisgabe eines Passwortes zu verleiten. Im Internet wird das häufig auch Phishing genannt. Die Nachrichten können Telefonanrufe oder aktuell auch E-Mails sein. Ein Angreifer gibt darin vor, ein Administrator von einer dem Benutzer bekannten Institution zu sein. Der Benutzer soll am Telefon sein Passwort dann direkt nennen. Phishing Alternativ wird in einer E-Mail behauptet, dass technische Probleme bei einem Dienstanbieter im Internet aufgetreten seien und der Benutzer seine Daten zur Aktualisierung bzw. Überprüfung erneut eingeben müsse. Dazu steht dann häufig eine lange URL in der Nachricht, die der Benutzer anklicken soll. Der Anbieter könnte dabei die eigene Bank, eBay, Amazon usw. sein. Jeder Anbieter, bei dem man eine Benutzerkennung mit Passwort besitzt, kann betroffen sein. Klickt man nun die URL an, dann erscheint eine Seite, die so aussieht als wäre sie vom Anbieter. In Wirklichkeit stammt sie vom Angreifer und dient nur dem Zweck, Geheimnisse des Benutzers (Passwörter, Kreditkartennummern, etc.) zu erlangen. Man sollte sich also immer wirklich sicher sein, mit welchem Rechner man verbunden ist, wenn man im Internet surft. Hinweise, wie man das macht, werden in Abschnitt 3.3 vorgestellt. Passwörter „knacken“: Beim Thema „Ausprobieren“ ist zu beachten, dass ein Hacker sich heute gar nicht mehr die Arbeit machen muss, ein eigenes Programm zum Passwörtersuchen oder -ausprobieren zu schreiben. Solche Programme kann man direkt aus dem Internet laden. Im Folgenden soll auf die prinzipielle Arbeitsweise solcher Programme etwas genauer eingegangen werden. Dazu zunächst einige Hintergrundinformationen, wie Passwörter sinnvoll behandelt werden. Zunächst sollten Passwörter niemals im Klartext gespeichert werden. Es besteht immer die Gefahr, dass eine Liste mit Benutzerkennungen Nie im Klartext und den zugehörigen Passwörtern gestohlen wird oder anders abhanden kommt. speichern Statt dessen wendet man eine nicht umkehrbare Funktion f auf das Passwort x an speichert nur den Funktionswert f (x) als Passwort des Benutzers. Da f nicht umkehrbar ist, kann man aus f (x) nicht zurück auf x schließen. Daneben sollte f weitere Eigenschaften besitzen: Möglichst keine Kollisionen: Die Funktion f soll für zwei unterschiedli x auch unterschiedliche Funktionswerte berechnen, che Eingaben x = also f (x) = f (x ). In Abschnitt 2.5.1 wird diese Eigenschaft genauer besprochen. Großer Wertebereich: Als Funktionswerte sollen sehr viele verschiedene Werte (z. B. mehr als 2256 ) möglich sein. Nicht zu schnell berechenbar: Da Angreifer versuchen werden, vorab Tabellen mit allen möglichen Paaren (x, f (x)) zu berechnen, sollte f nicht zu schnell berechenbar sein. Bei der Überprüfung eines eingegebenen Passworts darf die Berechnung eine halbe Sekunde dauern, ohne dass das den Benutzer merklich stört. Ein Angreifer kann dann aber auch nur zwei Passwörter pro Sekunde testen und nicht zwei Millionen. (Version 4; 2014) 42 Kapitel 1 Passwort-Hashes Nachteile Sicherheit in der Informationstechnik Die in Abschnitt 2.5 vorgestellten Hash-Funktionen sind potentielle Kandidaten für f . Zusammengefasst kann man also sagen: Systeme speichern nicht die Passwörter selbst, sondern sogenannte Passwort-Hashes. Bei der Überprüfung eines eingegebenen Passworts x wird f (x ) berechnet und mit dem gespeicherten f (x) verglichen. Sind die Funktionswerte gleich, dann war x = x. Schafft es ein Angreifer, an die Liste mit Benutzerkennungen und den Funktionswerten der Passwörter zu kommen, so kann er die Passwörter der Benutzer trotzdem nicht rekonstruieren. Dieses Verfahren hat allerdings Nachteile: • Wählen zwei Benutzer zufällig dasselbe Passwort, so steht bei beiden Benutzern derselbe Funktionswert in der Liste. • Ein Angreifer kennt normalerweise die Funktion f . Er kann sich vorab (also offline) eine Liste mit Passwörtern und den zugehörigen Funktionswerten berechnen. Nun muss er eine „besorgte“ Liste mit (Kennung, Funktionswert) Paaren „nur“ noch mit seiner Liste vergleichen. Die vom Angreifer zu erstellende Liste wird natürlich sehr groß. Sie enthält so viele Einträge wie es Passwörter, bzw. wie es Funktionswerte gibt. Gehen wir davon aus, dass es 2n viele Funktionswerte gibt. Ohne Tabelle braucht ein Angreifer dann O(2n ) Zeit für das „knacken“ des Funktionswerts. Er probiert einfach jedes mögliche Passwort aus. Man nennt das auch den Brute Force Ansatz. Hat er diesen Aufwand vorab schon getrieben und ein sortierte Tabelle der Größe O(2n ) berechnet, so braucht er O(2n ) viel Speicherplatz für die Tabelle (und O(2n ) viel Zeit für die Erstellung), kann aber anschließend einfach in O(n) Zeit den passenden Wert finden. Dazu benutzt man binäre Suche. Folgende Tabelle zeigt den Platz- und Zeitbedarf dieser beiden Angriffsvarianten: Variante Zeitbedarf Platzbedarf Vorbereitung Brute Force O(1) O(1) n O(2 ) O(2n ) Komplette Tabelle n Hellman (s. u.) O(2 ) O(2n/2 ) time-memory trade-off Zeitbedarf „Knacken“ O(2n ) O(n) O(2n/2 ) Eine komplette Tabelle vorab zu berechnen erfordert zwar sehr viel Aufwand, ist aber machbar. Allerdings ist die erforderliche Menge an Speicherplatz noch zu groß für die Praxis. Hellman [Hel80] hat ein Verfahren vorgestellt, mit dem man einen Mittelweg gehen kann. Die Idee dabei ist, Platzbedarf gegen Zeitbedarf zu tauschen. Hat man mehr Speicherplatz, so braucht man weniger Rechenzeit. Hellmans Idee besteht in der Vorabberechnung einer Tabelle der Größe O(2n/2 ) mit einem Zeitaufwand der Größe O(2n )10 . Der anschließende Zeitbedarf für die Prüfung beträgt dann auch O(2n/2 ). „Spendiert man also zusätzlichen Speicherplatz, so reduziert man den erforderlichen Rechenaufwand.“ Die Idee dieses Prinzips ist wie folgt: Man wählt eine Liste von Startpasswörtern S1 , S2 bis Sk . Für jedes Si iteriert man nun t mal die Funktion f , d. h. 10 Das kann in der Praxis durch parallele Nutzung von Rechenzeit auf sehr vielen PCs, die ansonsten kaum ausgelastet wären, erreicht werden. Oder man benutzt die vielen Recheneinheiten die auf modernen Grafikkarten vorhanden sind für diese Berechnungen. (Version 4; 2014) 1.4 43 Konkrete Gefahren man berechnet Si,j = f j (Si ). Dabei ist f j (x) mit j ≤ t so definiert: j f (x) = f (x) f (f j−1 (x)) falls j = 1 falls j > 1 Wenn t = k = 2n gilt, dann kann man eine Tabelle mit 2n/2 vielen Einträgen der Art (Si , f t (Si )) erstellen. Man speichert also nur das Startpasswort und den zugehörigen Endwert der Berechnungskette von f . Abbildung 1.18 zeigt die Berechnungsketten. Tatsächlich gespeichert werden also nur die erste Spalte und die letzte Spalte der Tabelle. Die Größe der gespeicherten Daten ist also O(k). Würde man die komplette Matrix speichern wäre der Platzbedarf O(k · t) und bei k = t = 2n/2 hätten wir exponentiellen Platzbedarf O(2n ). Hat man nun einen Funktionswert y = f (x) gegeben und S1 S2 Sk f f f S1,1 S2,1 Sk,1 f f f S1,2 S2,2 ... Sk,2 f ... f f ... f f ... f S1,j S2,j Sk,j Abbildung 1.18: Prinzip des time-memory trade-off sucht das zugehörige x dann gehen wir davon aus, dass dieses y irgendwo in der Matrix aus Abbildung 1.18 vorkommt. Das erste Ziel ist es dann, die Zeile in der y vorkommt zu finden. Entweder steht y schon ganz rechts, dann findet man es durch vergleichen mit den gespeicherten Werten. Falls man y nicht gefunden hat, berechnet man f (y) und sucht das. Somit „bewegt man sich eine Spalte nach rechts“. Das macht man höchstens so oft, wie die Ketten lang sind. Hat man dann die Zeile i gefunden, so startet man mit dem Startpasswort Si dieser Zeile und wendet f so oft darauf an, bis man bei f (x) = y angekommen ist und hat somit das Passwort x gefunden, das zu y gehört. Etwas formaler sieht der Algorithmus also so aus: 1. Suche y in der Tabelle, also ein f t (Si ) = y. 2. Wenn y = f j (Si ) für alle i, dann berechne y = f (y) und benutze y als neues y in 1. 3. Wenn ein Si mit y = f t (Si ) gefunden wurde, dann muss das gesuchte x in der Berechnungskette die bei Si beginnt stehen. Suche in der Kette. Die Suche nach dem Urbild u von y in der Kette beginnend bei Si erfolgt dann so: 1. Berechne z = f (Si ) und setze u = Si . 2. Falls z = y dann gib u aus und beende die Suche, sonst setze u = z und z = f (z). 3. Falls noch nicht über das Kettenende hinaus gegangen, dann weiter bei 2. (Version 4; 2014) 44 Kapitel 1 Sicherheit in der Informationstechnik Bei diesem Verfahren braucht man etwa O(2n/2 ) Schritte. Das gilt allerdings nur, wenn tatsächlich alle möglichen Funktionswerte in einer der O(2n/2 ) Ketten mit Länge O(2n/2 ) vielen Einträgen auch tatsächlich vorkommen und alle Ketten disjunkt sind. Regenbogentabellen Oechslin [Oec03] hat dieses Prinzip erweitert und auf konkrete Passwörter und ihre Speicherung in aktuellen (Betriebs-)Systemen angewendet. Zur Vermeidung von Kollisionen zwischen den Ketten wird in einer Kette nicht die Funktion f benutzt, sondern eine andere Funktion F = R ◦ f . Sie besteht aus f und einer anschließend ausgeführten Reduktionsfunktion R. Oechslin hat auch gezeigt, dass man nicht alle Ketten exakt gleich lang machen muss und dass die Zahl der erforderlichen Ketten nicht O(2n/2 ) ist sondern etwas größer. Außerdem hat er ein Verfahren gefunden, wie man bei Kollisionen ein Verschmelzen der Ketten verhindern kann. Eine Kollision tritt auf, wenn es in zwei verschiedenen Ketten Werte Si,k und Sj,l gibt mit f (Si,k ) = f (Sj,l ). Dazu benutzt er eine Reduktionsfunktion, die auch von der Position in der Kette (also k bzw. l) abhängt. Oechslin nannte seine Datenstruktur Regenbogenketten (engl. rainbow chains). Die kompletten Tabellen, die dabei entstehen (wie in Abbildung 1.18), nennt man daher auch Regenbogentabellen, (engl. rainbow tables). Um den Einsatz von vorab berechneten Regenbogentabellen signifikant aufwändiger zu machen, ändert man das Speicherschema für Passwörter wie folgt: Zu jedem Benutzer wird neben der Benutzerkennung B noch ein weiterer Zufallswert Bs erzeugt und gespeichert. Dieser Zufallswert wird Salz (engl. salt) genannt. Wählt der Benutzer nun ein Passwort Bp, so speichert das System nicht mehr f (Bp), sondern f (Bs, Bp). Das Salz geht damit in die Berechnung des Funktionswertes ein. Damit eine Passwortprüfung später noch möglich ist muss der salt value zusammen mit der Benutzerkennung und dem Funktionswert im System gespeichert werden. Der Sinn des salt value liegt darin, dass nun zwei Benutzer dasselbe Passwort wählen können, ohne dass auch die Funktionswerte in der Benutzerliste gleich sind. Dazu müsste das System bei beiden Benutzern denselben Zufallswert erzeugt haben. Je nachdem wie viele verschiedenen Zufallswerte hier möglich sind, vergrößert sich der Platzbedarf für einen Angreifer, der vorab eine Liste mit Passwörtern und ihrem Funktionswert berechnen will. Für jedes Passwort müssen auch alle möglichen salt values betrachtet werden. Statt einer Regenbogentabelle braucht man für jeden salt value nun eine Regenbogentabelle. crack john Die im Internet verfügbaren Programme crack und john probieren nach diesem Verfahren einfach eine große Menge von möglichen geheimen Passworten (mit jedem möglichen salt value) aus. john kann auch Microsoft WindowsPasswörter suchen. Dazu gibt es große Wörterbücher im Internet, die gerne gewählte Passwörter11 , Wörter aus unterschiedlichen Sprachen, Filmtitel, Namen usw. enthalten. Weiterhin prüft crack auch bestimmte Modifikationen der Wörter aus dem Wörterbuch. Beliebte Ersetzungen wie „i“ durch „1“ oder „o“ durch „0“ werden genauso geprüft wie unterschiedliche Groß-/Kleinschreibungen. Die Erfolgsquote solcher Angriffe kann bis zu 25% betragen! 11 Viele Systemadministratoren sind auch Science-Fiction-Fans und kennen die einschlägige Literatur. Passwörter aus solchen Büchern sind also selbst als Passwort eines Administrators gar nicht so selten. (Version 4; 2014) 1.4 45 Konkrete Gefahren Eine weitere Methode zur Erzeugung potentieller Passwörter nutzt aus, dass Menschen keine echten Zufallszeichenketten als Passwörter wählen. Solche zufälligen Zeichenketten kann man sich nur schwer merken. Daher nehmen viele Benutzer bekannte Wörter und modifizieren sie. Diese Modifikationen folgen bestimmten Schemata und können mit statistischen Methoden bestimmt werden. In einer echt zufälligen Zeichenkette ist die Wahrscheinlichkeit, dass das i-te Zeichen z. B. ein „a“ ist gleich 1/n, wobei n die Zahl der möglichen Zeichen ist. Wörter in natürlicher Sprache und auch die von Menschen erfundenen Passwörter haben diese Eigenschaft nicht. Je nachdem welches Zeichen als (i-1)tes in einer Zeichenkette steht, sind die Wahrscheinlichkeiten für das i-te Zeichen unterschiedlich. Das liegt daran, dass bestimmte Zeichenfolgen wie z. B. „ch“, „ck“ wesentlich wahrscheinlicher sind als z. B. „cq“ oder „ct“. Weiterhin kann man aus Listen bekannter Passwörter die Modifikationsalgorithmen bestimmen mit denen Benutzer ihre Passwörter schwerer zu knacken machen wollen. Eine gerne benutzte Methode ist beispielsweise das Anhängen einer Jahreszahl an ein Wort. Während Regenbogentabellen davon ausgehen, dass alle Passwörter (und somit alle Funktionswerte) gleich wahrscheinlich sind gehen Angreifer heute nach einer anderen Methode vor. Sie erzeugen Listen von wahrscheinlicheren Passwörtern und berechnen die Funktionswerte dieser Passwörter. Im schlimmsten Fall dauert die Suche nach einem Passwort dann immer noch sehr lang (O(nl ) wenn n die Zahl der möglichen Zeichen und l die Länge des Passworts ist), aber alle echten Passwörter die in der Liste der wahrscheinlichen Passwörter vorne stehen, können damit deutlich schneller gefunden werden. Gute Passwörter finden: Auch wenn heutige Betriebssysteme selbst das „gehashte“ Passwort dem Zugriff der Benutzer entziehen12 , so sind PasswortCrack-Programme nach wie vor eine ernste Bedrohung der Sicherheit. Bei der Auswahl eines Passwortes sollten Sie sich daher an die folgenden Regeln halten: • Das Passwort steht nicht in einem erkennbaren Zusammenhang mit Ihnen. Also keine Telefonnummern; keine Namen von Familienmitgliedern, Freunden, Kollegen; keine Autokennzeichen; keine Hobbys usw. • Es gibt keine Einschränkungen bei den möglichen Zeichen im Passwort (wie z. B. nur lateinische Kleinbuchstaben). Es kommen Klein- und Großbuchstaben, Ziffern und Sonderzeichen im Passwort vor. • Das Passwort ist ausreichend lang (mindestens 8 Zeichen, besser sogar 10), damit systematisches Ausprobieren zu lange dauert. • Das Passwort stammt nicht aus einem Wörterbuch. Fügen Sie beispielsweise Sonderzeichen (Ziffern, Satzzeichen, o. ä.) mitten in ein Wort ein, so haben Sie ein längeres, nicht im Wörterbuch stehendes und trotzdem nicht zu schwer zu merkendes Passwort gefunden. • Vom Hersteller voreingestellte Passwörter werden unbedingt geändert. 12 Unter UNIX gibt es die sogenannten Shadow-Passwords. Die verschlüsselten Passwörter sind dann nicht mehr in der Datei /etc/passwd abgelegt, sondern in einer Datei, die nicht für jedermann lesbar ist. (Version 4; 2014) Gute Passwörter finden 46 Kapitel 1 Sicherheit in der Informationstechnik • Passwörter sind nicht zu lange gültig. Irgendwann hat ein Angreifer beim Ausprobieren aller Möglichkeiten vielleicht doch Erfolg. Sie sollten Ihre Passwörter daher regelmäßig ändern. Auch wenn Sie das Gefühl haben, dass jemand Ihr Passwort geknackt hat, sollten Sie unbedingt sofort das Passwort ändern. • Passwörter sollten nicht notiert werden. Falls es doch erforderlich sein sollte, dann nur in einem verschlossenen versiegelten Umschlag, der an einem sicheren Ort deponiert wird. Regel Leider gilt für Passwörter aber auch folgende Regel: Gut zu merkende Passwörter lassen sich i. d. R. einfach „knacken“. Schwer zu „knackende“ Passwörter können sich Benutzer nicht einfach merken. Eine einfache Möglichkeit diese Regel zu brechen besteht darin, sich einen Satz an Stelle des Passwortes zu merken. Aus diesem Satz kann man dann das Passwort ableiten, beispielsweise indem das Passwort aus den Anfangsbuchstaben der Wörter und den Satzzeichen besteht. Aus dem Satz: „Das einfachste Passwort auf der Welt.“ würde dann die Gedankenstütze für das Passwort „DePadW.“ entstehen. Ergänzend können Sie sich dann noch ein oder zwei Sonderzeichen überlegen und in das oben entstandene Passwort einbauen. Dann haben Sie ein sicheres und hoffentlich schwer zu knackendes Passwort gefunden, das Sie sich vermutlich auch gut merken können. Ein weiteres Problem für viele Benutzer ist, dass man sich nicht nur ein Passwort merken muss sondern sehr viele. Am PC im Büro, am PC zu Hause, beim E-Mail-Anbieter, bei den sozialen Netzen in denen man aktiv ist, fürs Internet-Banking bei der Bank, beim Fonds-Anbieter, am privaten Smartphone, am Dienst-Smartphone, für die EC-Karte, für die Kreditkarte, bei eBay, Amazon und all den anderen E-Commerce-Anbietern, in allen Diskussionsforen, im WLAN zu Hause, unterwegs oder im Büro, usw. soll man sich ein geheimes Passwort (oder eine PIN) merken. Natürlich ist es einfach und bequem, überall dasselbe Passwort zu benutzen. Leider ist das auch sehr gefährlich. Bringt ein Angreifer dann dieses Passwort in Erfahrung, kann er sich komplett als Identitätsdiebstahl der Angegriffene ausgeben, man nennt das auch Identitätsdiebstahl. Also braucht man unterschiedliche Passwörter für die einzelnen Gelegenheiten. Um diese Passwörter zu erstellen bieten sich zwei Wege an: Tipp! 1. Anwendungs-Klassen bilden und jede Klasse bekommt ein Passwort. Man kann sich hierzu beispielsweise an den eigenen Sicherheitsanforderungen orientieren. Überall wo man eine Benutzerkennung und ein Passwort angeben muss, Ihnen ein möglicher Identitätsdiebstahl aber als unbedrohlich erscheint (z. B. Registrierung in Diskussionsforen aller Art) wählen Sie ein einfaches Standard-Passwort. Errät jemand dieses Passwort, kann er in Ihrem Namen höchstens an der „Star Trek“-Diskussion teilnehmen oder andere unbedrohliche Dinge tun. Klassifizieren Sie die weiteren Anwendungen nach mittel-wichtig, wichtig und sehr wichtig. Überlegen Sie sich für jede Klasse dann ein Passwort und benutzen es für alle Anwendungen dieser Klasse. (Version 4; 2014) 1.5 Zusammenfassung Diese Verfahren hat den Vorteil, dass Sie sich nur noch eine „Handvoll“ Passwörter merken müssen (und die Zuordnung zu den Klassen natürlich). Der Nachteil, dass ein Angreifer ein ausgespähtes Passwort mehrfach verwenden kann bleibt allerdings. 2. Überlegen Sie sich ein möglichst zufälliges Basis-Passwort und lernen Sie es auswendig. Für die einzelnen Anwendungen überlegen Sie sich eine Ergänzung, die eine Art „Abkürzung des Anwendungsnamens“ ist. Beispielsweise WLH für das WLAN zu Hause, AMA für den bekannten Internet Buchhändler, usw. Kombinieren Sie dann das Basis-Passwort und die Ergänzung zum Passwort für die Anwendung. Im einfachsten Fall nehmen sie die Ergänzung als Präfix oder als Suffix. Sicherer wird es, wenn Sie sich ein komplexeres Schema überlegen, wie beispielsweise 1. Buchstabe der Ergänzung an den Anfang, dann das Basis-Passwort, dann den Rest der Ergänzung. Oder sie fügen zwischen die Bestandteile noch Sonderzeichen ein. Ihre Tabelle mit den Ergänzungen müssen Sie nun nicht unbedingt geheim halten, sollten sie aber auch nicht veröffentlichen. Wichtig ist, dass das Basis-Passwort lang genug ist, nicht erraten werden kann und dass Ihr Kombinationsschema geheim bleibt. Ihr Passwort bei den einzelnen Anwendungen wird dadurch länger und schwieriger zu knacken. 1.5 Zusammenfassung Nach dem Durcharbeiten dieser Kurseinheit sollten Sie Folgendes gelernt haben: • Warum man sich mit dem Thema Computer und Sicherheit befassen sollte. • Welche Bedeutung das Wort Sicherheit im Zusammenhang mit Computern eigentlich hat. • Welche Systematik in den Bedrohungen steckt und welche Eigenschaften man von sicheren Systemen erwartet. • Wie Rechnernetze im Prinzip funktionieren und welche Protokolle und Dienste im Internet benutzt bzw. angeboten werden. • Wie Viren, Würmer und trojanische Pferde die Sicherheit ihres Rechners bedrohen. • Wie Angriffe auf Passwörter durchgeführt werden und wie Sie sich ein sichereres Passwort überlegen können. (Version 4; 2014) 47 Lösungen der Übungsaufgaben Lösungen der Übungsaufgaben Übungsaufgabe 1.1 Die zu schützenden Eigenschaften in Systemen sind: Vertraulichkeit: Dieses Schutzziel dient der Sicherung der Privatsphäre. Es bedeutet, dass der Inhalt bei einer Kommunikation nur dem Absender und dem beabsichtigten Empfänger bekannt sein darf. Man wird hier evtl. sogar fordern, dass auch die Tatsache, dass eine Kommunikation stattgefunden hat, nur den Beteiligten bekannt werden darf. Integrität: Dieses Schutzziel dient der Sicherung des Vertrauens in den Inhalt der Kommunikation. Absender und Empfänger sollen sich sicher sein, dass die Nachricht auf dem Transportweg nicht verändert wurde. Authentizität: Dieses Schutzziel dient der Sicherung des Vertrauens in die Identität der an einer Kommunikation Beteiligten. Konkret soll sich der Kommunikationspartner sicher sein, dass der andere Partner tatsächlich derjenige ist, der er vorgibt zu sein. Verfügbarkeit: Dieses Schutzziel dient der Sicherung des Vertrauens in die „Technik“. Konkret erwartet man, dass die Dienste zur Verfügung stehen, wenn man sie benutzen möchte. Übungsaufgabe 1.2 Bei ftp treten mindestens die folgenden Sicherheitsrisiken auf: • Die Übertragung des Passwortes kann abgefangen werden, und ein Dritter kann dann mit diesem Passwort evtl. vertrauliche Daten vom ftp-Server laden. • Der Dritte kann auch Daten, die durch Urheberrecht geschützt sind, auf den ftp-Server kopieren. Dadurch macht sich der Betreiber des ftp-Servers evtl. strafbar (Raubkopien). • Der Account und das Passwort können nicht nur für ftp gelten, sondern auch ganz normale Benutzerkennungen sein. Dann kann sich ein Angreifer per Telnet auf dem ftp-Server anmelden und dort beliebige Kommandos ausführen. (Version 4; 2014) 49 50 Lösungen der Übungsaufgaben (Version 4; 2014) LITERATUR Literatur [AKS02] Manindra Agrawal, Neeraj Kayal und Nitin Saxena. „PRIMES is in P“. In: Ann. of Math 2 (2002), S. 781–793. [And08] Ross J. Anderson. Security Engineering. 2. Aufl. Wiley und Sons, 2008. [Ano03] Anonymous. Hacker’s Guide. Übersetzung von Maximum Security, 4th ed. München, Germany: Markt+Technik Verlag, 2003. [Ano98] Anonymous. Maximum Security. 2. Aufl. Indianapolis, Indiana: SAMS, 1998. [Bau97] Friedrich L. Bauer. Entzifferte Geheimnisse. Methoden und Maximen der Kryptologie. Heidelberg, Germany: Springer-Verlag, 1997. [Ben+08] Jens Bender, Dennis Kügler, Marian Margraf und Ingo Naumann. „Sicherheitsmechanismen für kontaktlose Chips im deutschen elektronischen Personalausweis - Ein Überblick über Sicherheitsmerkmale, Risiken und Gegenmaßnahmen“. In: Datenschutz und Datensicherheit 32.3 (2008), S. 173–177. [Ber+07] G. Bertoni, J. Daemen, M. Peeters und G. Van Assche. Sponge functions. Ecrypt Hash Workshop 2007. Mai 2007. [Ber+11a] G. Bertoni, J. Daemen, M. Peeters und G. Van Assche. The Keccak reference. http://keccak.noekeon.org/. Jan. 2011. [Ber+11b] G. Bertoni, J. Daemen, M. Peeters und G. Van Assche. The Keccak SHA-3 submission. http : / / keccak . noekeon . org/. Jan. 2011. [BF01] Dan Boneh und Matthew K. Franklin. „Identity-Based Encryption from the Weil Pairing“. In: CRYPTO. Hrsg. von Joe Kilian. Bd. 2139. Lecture Notes in Computer Science. Springer, 2001, S. 213–229. isbn: 3-540-42456-3. [BPH02] L. Bassham, W. Polk und R. Housley. „Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation Lists (CRL) Profile“. ftp : / / ftp . rfc editor.org/in-notes/rfc3280.txt. Apr. 2002. [Bra99] John R. T. Brazier. „Possible NSA Decryption Capabilities“. In: DuD Datenschutz und Datensicherheit 23.10 (Okt. 1999), S. 576– 581. [BSB05] Daniel J. Barrett, Richard Silverman und Robert G. Byrnes. SSH The Secure Shell — The Definitive Guide. 2. Aufl. O’Reilly, 2005. [BSI08a] BSI. IT-Grundschutz-Vorgehensweise. BSI-Standard 100-2, Version 2.0. Mai 2008. (Version 4; 2014) 51 52 LITERATUR [BSI08b] BSI. Managementsysteme für Informationssicherheit (ISMS). BSIStandard 100-1, Version 1.5. Mai 2008. [BSI08c] BSI. Risikoanalyse auf der Basis von IT-Grundschutz. BSIStandard 100-3, Version 2.5. Mai 2008. [BSI12a] BSI. Advanced Security Mechanisms for Machine Readable Travel Documents – Part 1 - eMRTDs with BAC/PACEv2 and EACv1. Techn. Ber. TR-03110-1. Bundesamt für Sicherheit in der Informationstechnik, 2012. [BSI12b] BSI. Advanced Security Mechanisms for Machine Readable Travel Documents – Part 2 - Extended Access Conrol Version 2 (EACv2), Password Authenticated Connection Establishment (PACE) and Restricted Indetification (RI). Techn. Ber. TR-03110-2. Bundesamt für Sicherheit in der Informationstechnik, 2012. [BSI12c] BSI. Advanced Security Mechanisms for Machine Readable Travel Documents – Part 3 - Common Specifications. Techn. Ber. TR03110-3. Bundesamt für Sicherheit in der Informationstechnik, 2012. [Coc01] Clifford Cocks. „An Identity Based Encryption Scheme Based on Quadratic Residues“. In: IMA Int. Conf. Hrsg. von Bahram Honary. Bd. 2260. Lecture Notes in Computer Science. Springer, 2001, S. 360–363. isbn: 3-540-43026-1. [CZ02] D. Brent Chapman und Elizabeth D. Zwicky. Einrichten von Internet Firewalls. Sebastopol, CA: O’Reilly, 2002. [Dem00] W. Edwards Deming. Out of the Crisis. 2. Aufl. MIT Press, Oktober 2000. [DH76] W. Diffie und M. Hellman. „New directions in cryptography“. In: IEEE Transactions on Information Theory 22.6 (Sep. 1976), S. 644–654. issn: 0018-9448. doi: 10.1109/TIT.1976.1055638. url: http://dx.doi.org/10.1109/TIT.1976.1055638. [DR02] Joan Daemen und Vincent Rijmen. The Design of Rijndael. Berlin Heidelberg: Springer Verlag, 2002. [DR99] Joan Daemen und Vincent Rijmen. AES Proposal: Rijndael. http : / / www . esat . kuleuven . ac . be / ~rijmen / rijndael / rijndaeldocV2.zip. 1999. [Eck13] Claudia Eckert. IT-Sicherheit. 8. Aufl. München: Oldenbourg Wissenschaftsverlag GmbH, 2013. [El 85] Taher El Gamal. „A public key cryptosystem and a signature scheme based on discrete logarithms“. In: Proceedings of CRYPTO 84 on Advances in Cryptology. Santa Barbara, California, USA: Springer-Verlag New York, Inc., 1985, S. 10–18. isbn: 0-387-156585. url: http://dl.acm.org/citation.cfm?id=19478.19480. [Ele98] Electronic Frontier Foundation. Cracking DES: Secrets of Encryption Research, Wiretap Politics & Chip Design. Sebastopol, CA: O’Reilly & Associates Inc., 1998. [Ert03] Wolfgang Ertel. Angewandte Kryptographie. München: Fachbuchverlag Leipzig im Carl Hanser Verlag, 2003. (Version 4; 2014) 53 LITERATUR [Ger+04] Helmar Gerloni, Barbara Oberhaitzinger, Helmut Reiser und Jürgen Plate. Praxisbuch Sicherheit für Linux-Server und -Netze. München: Hanser Verlag, 2004. [Ges04] Alexander Geschonneck. dpunkt.verlag, 2004. [Gon99] Marcus Goncalves. Firewalls: A Complete Guide. McGraw-Hill, Okt. 1999. [Gut98] Peter Gutmann. „Software Generation of Practically Strong Random Numbers“. In: Proc. Usenix Security Symposium. Eine wesentlich erweiterte Version des Artikels ist verfügbar unter http: //www.cypherpunks.to/~peter/06_random.pdf. 1998. [Hel80] Martin E. Hellman. „A cryptanalytic time-memory trade-off“. In: IEEE Transactions on Information Theory 26.4 (1980), S. 401–406. [Hou+02] R. Housley, W. Polk, W. Ford und D. Solo. „Internet X.509 Public Key Infrastructure“. ftp://ftp.rfc- editor.org/in- notes/ rfc3280.txt. Apr. 2002. [KN07] Dennis Kügler und Ingo Naumann. „Sicherheitsmechanismen für kontaktlose Chips im deutschen Reisepass - Ein Überblick über Sicherheitsmerkmale, Risiken und Gegenmaßnahmen“. In: Datenschutz und Datensicherheit 31.3 (2007), S. 176–180. [Knu97] Donald E. Knuth. The Art of Computer Programming Vol. 2: Seminumerical Algorithms. Addison-Wesley, 1997. [LS07] P. L’Ecuyer und R. Simard. „TestU01: A C Library for Empirical Testing of Random Number Generators“. In: ACM Transactions on Mathematical Software 33.4, Article 22 (Aug. 2007). http : //www.iro.umontreal.ca/~simardr/testu01/tu01.html. [Mar] G. Marsaglia. The Marsaglia Random Number CDROM including the Diehard Battery of Tests of Randomness. http://www.stat. fsu.edu/pub/diehard/. [MOV96] A. Menezes, P. van Oorschot und S. Vanstone. Handbook of Applied Cryptography. http://www.cacr.math.uwaterloo.ca/hac. CRC Press, 1996. [MR99] Günter Müller und Kai Rannenberg, Hrsg. Multilateral Security in Communications. München: Addison Wesley Longman GmbH, 1999. [Oec03] Philippe Oechslin. „Making a Faster Cryptanalytic Time-Memory Trade-Off“. In: CRYPTO. Hrsg. von Dan Boneh. Bd. 2729. Lecture Notes in Computer Science. Springer, 2003, S. 617–630. isbn: 3540-40674-3. [Ris05] Ivan Ristic. Apache Security — The Complete Guide to Securing Your Apache Web Server. O’Reilly, 2005. [Ris10] Ivan Ristic. ModSecurity Handbook: The Complete Guide to the Popular Open Source Web Application Firewall. FeistyDuck, 2010. [Roß99] Stephan Roßbach. Der Apache Webserver. Bonn, Germany: Addison-Wesley, 1999. (Version 4; 2014) Computer Forensik. Heidelberg: 54 LITERATUR [Ruk01] A. Rukhin et al. NIST Special Publication 800-22: A Statistical Test Suite for Random And Pseudorandom Number Generators for Cryptographic Applications. http://csrc.nist.gov/rng/SP80022b.pdf. Mai 2001. [Sch+99] Bruce Schneier, John Kelsey, David Wagner, Chris Hall, Niels Ferguson und Doug Whiting. Twofish Encryption Algorithm : A 128-Bit Block Cipher. John Wiley and Sons, 1999. [Sch00] Bruce Schneier. Secrets & Lies. IT-Sicherheit in einer vernetzten Welt. Heidelberg, Weinheim, Germany: dpunkt.Verlag / WileyVCH, 2000. [Sch96] Bruce Schneier. Angewandte Kryptographie. Protokolle, Algorithmen und Sourcecode in C. Bonn, Germany: Addison-Wesley, 1996. [SGG08] Abraham Silberschatz, Peter Galvin und Greg Gagne. Applied Operating System Concepts. 8. Aufl. New York, NY, USA: John Wiley, Inc., 2008. [Sha84] Adi Shamir. „Identity-Based Cryptosystems and Signature Schemes“. In: CRYPTO. Hrsg. von G. R. Blakley und David Chaum. Bd. 196. Lecture Notes in Computer Science. Springer, 1984, S. 47– 53. isbn: 3-540-15658-5. [Sot+08] Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik und Benne de Weger. MD5 considered harmful today. http://www.win.tue.nl/hashclash/rogueca/. Dez. 2008. [Spe11] Ralf Spenneberg. Linux Firewalls – Sicherheit für Linux-Server und -Netzwerke mit IPv4 und IPv6. 2. Aufl. München, Deutschland: Addison-Wesley, 2011. [Sta00] William Stallings. Network Security Essentials. Uppser Saddle River, New Jersey: Prentice Hall, 2000. [Sta06] William Stallings. Cryptography and Network Security. 4. Aufl. Upper Saddle River, New Jersey: Prentice Hall, 2006. [Tan02] Andrew S. Tanenbaum. Moderne Betriebssysteme. Pearson Studium, 2002. [Vie09] John Viega. the myths of security. Sebastopol, CA: O’Reilly, 2009. [Wol07] Sebastian Wolfgarten. Apache Webserver 2. Installation, Konfiguration, Programmierung. Addison-Wesley, 2007. [WWS02] Tobias Weltner, Kai Wilke und Björn Schneider. WindowsSicherheit, Das Praxisbuch. Konrad-Zuse-Str. 1, D-85716 Unterschleißheim: Microsoft Press, 2002. [WY05] Xiaoyun Wang und Hongbo Yu. „How to Break MD5 and Other Hash Functions“. In: Advances in Cryptology - EUROCRYPT 2005. Hrsg. von Ronald Cramer. Lecture Notes in Computer Science 3494. Berlin: Springer-Verlag, 2005, S. 19–35. (Version 4; 2014)