Skip to topic | Skip to bottom
Linux.TopSecretr1.1 - 27 Jun 2006 - 18:29 - TWikiGuest? [Zum Ende]

Start of topic | Direkt zum Menü

Verschlüsselung

Einleitung

Man sitzt an seinem Computer und denkt sich, könnte das nicht noch etwas sicherer sein. Oft hört man von Verschlüsselung und von Schlüsseln, die nicht einmal die NSA knacken kann. Doch nicht immer das es überhaupt sinnvoll, Sachen zu verschlüsseln - geschweige denn, dass es nicht immer möglich ist. Verschlüsselung alleine bringt's nämlich nicht nicht. Bei verschlüsselter Kommunikation ist immer (mindestens) ein geheimer Schlüssel im Spiel und man muß wissen, wie die beiden Kommunikationspartner diesem Schlüssel erhalten - ihn einfach so über die Leitung zu schicken, wäre keine gute Idee...

Bei allem, was ich hier schreibe, gehe ich immer davon aus, daß der Schlüssel des Benutzers (i.d.R. das Passwort) hinreichend sicher ist. Wenn der Schlüssel leicht erraten werden kann, kann man sich Verschlüsselung sparen.

Von wo nach wo soll verschlüsselt übertragen/gespeichert werden?

Bei Verschlüsselung kann man 2 prinzipielle Möglichkeiten unterscheiden, denen jedoch immer folgendes Schema gemeinsam ist:

Die Daten können sich in 2 logischen/physischen Bereichen befinden:

  • in einem geheimen Bereich (z.B. mein im Serverraum eingeschlossener Computer)
  • in einem nicht geheimen Bereich (das Internet)

Die komplette Verschlüsselung muß im geheimen Bereich geschehen, anschliessend dürfen sich die Daten auch im nicht-geheimen Bereich befinden. Wo der geheime Bereich endet und der nicht-geheime beginnt, ist nicht immer leicht zu sagen. Es hängt von den näheren Umständen der Verschlüsselung und auch von dem Aufwand ab, den ich zu betreiben bereit bin.

Es gilt:

  • Ich als der an Verschlüsselung interessierte, muss dem geheimen Bereich vertrauen schenken können. Einige Aussagen, die das z.B. dokumentieren:
    • "Ich vertraue dem Administrator von Computer A, auf dem ich meine Daten verschlüssele. Der Admin ist unbestechlich und würde niemals meine geheimen Schlüssel weitergeben."
    • "Auf Computer A ist ein sicheres Betriebssystem installiert."
    • "Der Administrator von Computer A benutzt grundsätzlich Passwörter die keinesfalls erraten werden können."
    • "Der Raum, in dem Computer A steht, ist abgeschlossen."
    • "Nur der Administrator hat einen Schlüssel für den Raum zu Computer A, nichmal die Feuerwehr kommt ohne Axt hinein."
  • Erlangt ein Angreifer Zugriff auf den im Bezug auf meine Verschlüsselungsexzesse geheimen Bereich, ist das Spiel für mich verloren. Die Sicherheit ist dabei eine Kette, deren schwächstes Glied mir auf die Füße fällt.
  • Je größer der geheime Bereich, desto höher ist die Wahrscheinlichkeit, dass es ein oder mehrere schwache Glieder gibt.

Daraus folgt:

  • Man sollte den geheimen Bereich klein halten. Hinweise:
    • Ein Netzwerk ist zwar leichter zu sichern, als jeder einzelne Computer, der geheime Bereich, den ich zur Verschlüsselung Benutzer (z.B. Computer A) wird jedoch deutlich vergrößert, wenn ich auf eine zentrale Firewall vertraue und Rechner A selbst nicht absichere.
    • Personen sind auch Teil meines geheimen Bereichs . Wenn 10 Personen das root-Passwort kennen, ist mein geheimer Bereich größer als bei einer Person.

Daten verschlüsselt Speichern

Dabei werden Daten von einem vertrauenswürdigen Computer (der, an dem man arbeitet - der geheime Bereich also ) auf einen nicht vertrauenswürdigen Datenträger (dem nicht-geheimen Bereich ) gespeichert. Alle Daten werden auf dem vertrauenswürdigen Computer verschlüsselt und anschliessend gespeichert. Ein Angreifer müsste also Zugriff auf den vertrauenswürdigen Computer erlangen, um an die Daten zu kommen. Kommt er jedoch nur an den verschlüsselten Datenträger, hat er nichts davon.

Daten verschlüsselt übertragen

In diesem Fall werden Daten zwischen 2 vertrauenswürdigen Computern (beide Computer sind Teil meines geheimen Bereichs ) ausgetauscht. Ich muß also z.B. dem Server (und damit dem Administrator) des Servers vertrauen, auf den ich mit einem hochsicheren verschlüsselnden Netzwerkdateisystem zugreifen.

Gegen welche Angriffe genau will ich mich absichern?

Jede Verteidigung (egal ob im echten Leben oder am Computer) setzt vorraus, dass ich die Art des Angriffes zumindest teilweise kenne. Man kann bei Verschlüsselung 2 Arten von Angriffen unterscheiden:

  • Kryptografische Angriffe auf die verschlüsselten Daten. Das ist z.B. möglich, wenn der Verschlüsselungsalgorithmus fehlerhaft arbeitet.
  • Angriffe gegen den geheimen Bereich , um Zugriff auf die unterschlüsselten Daten oder aber auf den geheimen Schlüssel zu bekommen.

Man kann z.B. einen Computer mit Firewalls/Kryptografie/Netzsteckerziehen/... gegen Angriffe aus dem Netzwerk absichern. Die Putzfrau mit Generalschlüssel zum Serverraum hebelt alle diese Massnahmen jedoch locker aus, da sie ungehinderten Zugriff auf meinen geheimen Bereich (Computer A im Serveraum) hat.

Hinweis: Man kann die Putzfrau in diesem Fall als Teil des geheimen Bereiches betrachten und versuchen, sie sicher zu machen - z.B: durch ein Gehalt, was eine Bestechung unwahrscheinlich macht.

Allgemein: Angriffe durch Geld

Automatisierte Angriffe

Wenn ich meinen kleinen privaten Server zuhause absichere, muss ich hauptsächlich dafür sorgen, dass mein Rechner nicht durch automatische Angriffsversuche aus dem Internet geknackt und in Botnetze integriert wird. Hier ist zwar i.d.R. Geld im Spiel (die Angreifer verkaufen die geknackten Rechner später i.d.R. an Spammer und bekommen dafür teils fünfstellig Beträge). Das Geld kommt allerdings nicht durch meinen privaten kleinen Server sondern durch die Pure Masse an Rechnern, die geknackt wurde.

Angriffe direkt gegen mich

Habe ich z.B. einen grossen Server einer weltumspannenden Forschungsorganisisation, die gerade kurz vor dem Durchbruch steht, ein marktreifes Allheilmittel gegen Krebs zu finden, dann geht es um viele Milliarden EUR, die ich als meinen Gegner betrachten muss. Pharmakonzerne, die dieses Mittel rechtzeitig in die Hände bekommen, könnten es schnell patentieren und damit ein Monopol für ein Medikament aufbauen. Das schafft Anreize, meinen Server mit allen zur Verfügung stehenden Mittelns zu knacken. Es würde sich bei solchen Beträgen lohnen, eine Mannschaft professioneller Hacker zu engagieren, jedoch ist das nicht meine einzige Sorge.

Ab einem gewissen Betrag, werden nicht-technische Angriffe interessant. Hier einige Beispiele:

  • Eine Dame, die technisch fit ist, wird als Putzfrau ins Unternehmen geschleust und knackt mit dem Generalschlüssel zum Serverraum den Server mit der Formel für das Aids-Medikament.
    Lösung: Knallharte Sicherheitspolicy in Bezug auf physischen Zugriff auf Server.
  • Die Frau des Administrators wird entführt, der Administrator zur Herrausgabe des Super-Mega-root-Passwortes "überredet".
    Lösung: keinen Administrativen SPOF zulassen. Bsp: Jeder der 4 Administratoren kennt nur ein viertel des Root-Passwortes.

Sicherung gegen Netzwerkangriffe

Zurück zu den technischen Angriffen. Das erste Mittel gegen Netzwerkangriffe einfache Dinge:

  • Opensource-Software. Das ist eine Einstellungsfrage. Ich bin der Meinung, dass (vor allem von vielen eingesetzte) Opensource-Software per-se sicherer ist, als proprietäre, von der ich nur den Binärcode in der Hand halte.
  • Regelmäßige Updates aller Software . Hier ist es hilfreich, wenn das verwendete System Updates einfacht macht und im laufenden Betrieb zuläßt.
    Achtung: Nicht nur die Netzwerkdienste müssen regelmäßig upgedatet werden. Es gab auch schon über's Netzwerk ausnutzbare Fehler in der Kompressionsbibliothek zlib .

Sicherung gegen lokale Angriffe

Einen Computer kann man gegen lokale Angriffe nur bedingt absichern. Möglich ist (immer mit der Annahme, dass man eine Manipulation am Computer sofort bemerkt), einen Rechner mit Echtzeitverschlüsselung der Plattenpartitionen zu sichern. In diesem Fall muß man z.B. ein Passwort eingeben, um den Rechner nach dem Hochfahren vollstaendig zu aktivieren. Fährt er herrunter (z.B., wenn jemand den Rechner klaut), vergisst der Rechner das Passwort und der Dieb kann mit den Daten nichts anfangen.

Was will ich eigentlich verschlüsseln?

Verschlüsselung kostet Zeit und Arbeitsaufwand bei der Einrichtung. Man kann natürlich die gesammte Netzwerkkommunikation absichern (z.B. mit IPSEC oder einem VPN), jedoch ist das nicht immer gewollt - vor allem dann nicht, wenn man mit Rechnern ausserhalb des abgesicherten Bereiches über unsichere Netze kommunizieren will.

Man sichert also i.d.R. einzelne Dienste ab, doch welche Davon müssen wirklich verschlüsselt werden?

Nicht sehr sinnvoll ist Verschlüsselung z.B. bei einfachen Namensdiensten wie ldap . Was hat man davon, wenn der Angreifer weiss, welche UID zu welchem Benutzer gehört? Das Argument, man könnte dann einfach per NFS und Superuserrechten von einem fremnden Computer aus an die Daten herrankommen, zählt nicht - das ist ein Schwäche von NFS.

Das NFS abzusichern würde sich dagegen lohnen - ist jedoch deutlich schwieriger, da bei Filesystemzugriffen zumindest auf Client-Seite immer auch der Kernel betroffen ist.

-- FrankBurkhardt - 24 Jan 2005
[Zurück zum Start]


Aktuelle Wiki-Seite: Linux > TopSecret

[Zurück zum Start]