Mac nix basteln:Krypto Grundlagen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche

Verschlüsselungsmethoden

Hash & salt

Ein hash ist eine Funktion ähnlich einer Prüfsumme, welche unabhängig der Eingabe einen Wert mit konstanter Zeichenzahl liefert und zusätzlich die Eigenschaft besitzt nicht umkehrbar zu sein (Bild 1). Sprich, es ist nicht möglich aus dem Ergebnis der hash-Funktion den Eingabewert zurückzurechnen. Es ist extrem unwahrscheinlich, dass zwei unterschiedliche Eingaben zum gleichen hash führen. Außerdem, führt schon das Ändern eines einzelnen Zeichens der Quelle zu einem drastisch anderem hash.

hash
Bild 1: Diagramm hash-Funktion

Beispiel: Es spielt keine Rolle, ob dieser Text ge-hash-t wird, oder eine ganze DVD. Das Ergebnis wird immer eine Zeichenkette einer definierten Länge sein. Aus diesem Ergebnis lässt sich dann weder der Inhalt der DVD rekonstruieren noch dieser Text.

Beispiele für hash-Funktion sind:

Salt

Salt: Um die Sicherheit bei hashes zu weiter zu erhöhen, werden Zufallszahlen vor den zu-hash-enden Wert gehängt. Denn Sinn kann man nicht besser zusammenfassen als Wikipedia: Hashfunktionen, wie z. B. MD5 oder SHA bilden einen bestimmten Klartext auf einen bestimmten Hash-Wert ab. So ist sofort erkennbar, welche Benutzer dasselbe Kennwort gewählt haben, da die Hashwerte identisch sind. Zudem muss bei Wörterbuch- und Brute-Force-Angriffen jedes zu prüfende mögliche Passwort nur ein einziges Mal berechnet (gehasht) werden, und dieser Wert muss anschließend nur mit einer Liste von vorliegenden Passwort-Hashes verglichen werden.


Symmetrische Verschlüsselung

Bei der symmetrischen Verschlüsselung werden die Daten (oder der Text) mit Hilfe eines einzigen, gemeinsamen Schlüssels verschlüsselt und entschlüsselt (Bild 2). Das Verfahren funktioniert also mit dem selben Schlüssel in beide Richtungen. Ist dieser aufgeflogen, liegt die gesamte Kommunikation offen. Vorteil ist allerdings der relativ geringe Rechenaufwand (es ist schnell) und dass diese Verfahren sogar von i5 & i7 CPUs in hardware unterstützt werden (noch schneller). Die Sicherheit hängt zudem auch von der Schlüssellänge ab. 256b gelten z.Z. als sicher.

Symmetrische Verschlüsselung
Bild 2: Diagramm symmetrischer Verschlüsselung

Beispiele für symmetrische Verschlüsselungsverfahren sind:


Diffie-Hellman

Diffie-Hellman ist genaugenommen weder eine Verschlüsselungsmethode, noch deren Anwendung. Es steht dazwischen: Um bei einer symmetrische Verschlüsselung nicht gezwungen zu sein den gemeinsamen Schlüssel irgendwie austauschen zu müssen, lässt man es einfach. Stattdessen hat man eine Methode gefunden, wie dieser Schlüssel von beiden Seiten durch Kommunikation bestimmt werden kann ohne, dass er jemals übertragen wird. Ist er bestimmt worden, kann die symmetrische Verschlüsselung erfolgen.


Asymmetrische Verschlüsselung

Bei der asymmetrischen Verschlüsselung werden Schlüssel immer in Paaren aus privatem und öffentlichem Schlüssel erstellt. Daten werden mit Hilfe des öffentlichen Schlüssels des Empfängers verschlüsselt, können aber nur mit dem zugehörigen privaten Schlüssel wieder entschlüsselt werden (Bild 3).

Asymmetrische Verschlüsselung
Bild 3: Diagramm asymmetrischer Verschlüsselung

Hier muss also nur der private Schlüssel geheim gehalten werden, während der öffentlich beliebig verteilt werden kann (und soll). Vorteil des Verfahrens ist: vor Beginn der Kommunikation muss kein geheimer (privater) Schlüssel ausgetauscht werden (wie beim symmetrischen Verfahren). Allerdings ist das Verfahren auch rechenintensiver und nutzt größere Schlüssel. 2048b gelten z.Z. als sicher.

Beispiele für asymmetrische Verschlüsselungsverfahren sind:



Anwendungen der Methoden

Abspeichern von Kennwörtern

Vernünftige Programme speichern Kennwörter nie im Klartext sondern nur deren hashes, damit bei unbefungtem Zugriff die Kennwörter nicht bekannt werden. Zusätzlich sollten sie noch gesalzen sein.


Kennwort geschützte Dateien...

...sind ein Beispiel für symmetrische Verschlüsselung.


Digitale Untschrift

Eine digitale Untschrift ist eine Kombination aus hash & asymmetrischer Verschlüsselung. Über die zu unterschreibenden Daten wird zunächst ein hash gebildet, der dann mit dem privaten Schlüssel des Absenders verschlüsselt wird und nur mit dem zugehörigen öffentlichen Schlüssel des Absenders (der mitgeschickt wird) wieder entschlüsselt werden kann (Bild 4). Die asymmetrische Verschlüsselung läuft also genau entgegengesetzt wie oben beschrieben. Somit wird sichergestellt:

  1. Dass die Quelle, die des beiligendem öffentlichen Schlüssels ist (nur der private Schlüssel hat den hash so verschlüsseln können, dass der öffentliche Schlüssel den hash entschlüsselt. Sonst wäre ein anderer hash rausgekommen, der nicht zur unterschriebenen Nachricht passt)
  2. Die Nachricht wurde unterwegs nicht verändert. Wäre sie verändert worden, würde ein hash über die Nachricht nicht dem entschlüsselten hash-Wert entsprechen

Digitale Unterschrift
Bild 4: Diagramm digitaler Unterschrift

Man hätte die Sache mit dem hash auch weg lassen können und die komplette Nachricht asymmetrisch verschlüsseln. Dies würde allerdings zur Folge haben, dass die Nachricht nicht nur Unterschrieben, sondern auch komplett verschlüsselt ist (statt nur den hash zu verschlüsseln) - was wiederum zu Folge hat, dass jemand ohne Krypto (dem auch die Unterschrift egal ist), die Nachricht nicht lesen kann. Des Weiteren würde es bei größeren Daten sehr rechenintensiv werden (lange dauern). Es ist viel schneller einen hash zu berechnen (konstante, vergleichen mit den eigentlichen Daten idR. kurze Länge) und diesen dann zu verschlüsseln.


Strompostverschlüsselung

Hier wird symmetrische & asymmetrischer Verschlüsselung kombiniert. Der Inhalt der Nachricht wird aus Geschwindigkeitgründen mit einem für diese Nachricht speziell erzeugten Schlüssel (Sitzungsschlüssel) symmetrisch Verschlüsselt. Anschliessend wird dieser Schlüssel (welcher idR deutlich kürzer als die eigentlich Nachricht/Nutzlast sein wird) asymmetrisch verschlüsselt und mit der symmetrisch verschlüsselten Nachricht versandt.
Man kann den Sitzungsschlüssel auch gegen mehrere öffentliche Schlüssel verschlüsseln (z.B. S/MIME), anhängen und dann mit den zugehörigen privaten Schlüsseln wieder entschlüsseln. Dies erlaubt dann beispielsweise, dass man Nachrichten, die man verschickt hat auch selbt noch einmal wieder lesen kann (denn man hat ja nur seinen eigenen privaten Schlüssel, nicht aber den des Empfängers), oder dass man für mehrere Empfänger verschlüsseln kann.


ssh

ssh ist ein Beispiel für eine Kombination aus hash, asymmetrischer und symmetrischer Verschlüsselung. Beim ersten Verbindungsaufbau bekommt man den hash des öffentlichen Schlüssels des kontaktierten Rechners gezeigt, um zu fragen, ob man diesem Vertraut. Man bekommt den hash gezeigt, da die vergleichsweise kurze Zeichenfolge für einen Menschen leichter zu vergleichen ist, als der eigentliche lange öffentliche Schlüssel. Dann erfolgt der asymmetrische Verbindungsaufbau. Für die Dauer dieser einen Verbindung wird darüber ein Schlüssel für eine symmetrische Verschlüsselung erzeugt. Und über diese symmetrische Verschlüsselung läuft dann für diese Sitzung der eigentliche Datentransfer. Der Vorteil besteht wieder in der Geschwindigkeit.


X.509 Zertifikate

Diese Zertifikate sind vergleichbar mit einem Ausweis. Sie enthalten Daten wie:

  • Name (bei email-Zertifikaten die Adresse(n), bei server-Zertifikaten die Domäne(n))
  • Aussteller
  • Seriennummer
  • Gültigkeitsbeginn & -ende
  • Inhabername & Adresse
  • Verwendungszweck des Zertifikats
  • ...

Der gesamte Zertifikatstext ist dann unterschrieben mit dem privaten Schlüssel des Ausstellers, der sog. Certification Authority (CA).

Anwendungsbeispiele für solche Zertifikate sind:

Klare Nachteile sind:

  • Man muss den CAs trauen und die Vertrauenswürdigkeit vieler in den Browsern & email-Programmen voreingestellten CAs sind zumindest fragwürdig
  • Man muss die öffentlichen Schlüssel der CAs haben
  • Mit ausreichend Geld kann man eine sub-CA einer CA werden. Diese kann dann wieder beliebig Schlüssel ausstellen, die nie jemand geprüft haben muss


OpenVPN

Je nach Konfiguration kann man sich mit OpenSSL für seine OpenVPN-Verbindung X.509 Zertifikate selbst erzeugen. So kann man sich eine Verbindung aufbauen indem man sich selbst ein Wurzelzertifikat macht (eine CA), Zertifikate für server und Klient mit zugehörigen privaten Schlüsseln sowie ein Diffie-Hellmann.

Diese Seite wurde zuletzt am 16. Oktober 2012 um 11:15 Uhr geändert. Diese Seite wurde bisher 10.530 mal abgerufen.