To main content

Grundlagen Kryptographie

Veröffentlicht von Benjamin Marwell am
Um ein bisschen Grundlagenwissen zu schaffen, will ich hier einmal die wichtigsten Begriffe der modernen Kryptographie erläutern. In der modernen Kryptographie, die heutzutage nur noch computergestützt abläuft, gibt es vier wichtige Technologien:
  • Hashes
  • gesalzene Hashes
  • Symmetrische Verschlüsselung
  • Asymmetrische Verschlüsselung
Vorweg der Grundsatz: Die Sicherheit eines Algorithmus darf NIE von der Geheimhaltung seiner Funktionsweise abhängen. Früher oder später wird dieser bekannt werden. Vielmehr sollte das Design des Algorithmus so gut sein, dass selbst mit der Kenntnis Experten keine Möglichkeit finden, diesen zu knacken. Wer Software schreibt, sollte daher auf unten aufgeführte Standards zurückgreifen. Sie sind offen, daher hundertfach getestet und oftmals in Standardbibliotheken mit Assembler oder gar in Hardware implementiert.

Hashes

Normale Hashes

Definition

Hashes sind sogenannte "Falltür"-Algorithmen. Man kann eine Zeichenkette (genannt "String" im Comptuerjargon) nur in eine Richtung umwandeln und kriegt eine Ausgabe von Zeichen, die möglichst zufällig aussehen soll. Bei nur kleinsten Änderungen an der Eingabe soll sich möglichst viel an der Ausgabe ändern, das Ziel liegt bei > 50%. Aber selbst wenn man den Algorithmus kennt, mit der sie umgewandelt wurde, kann man nicht auf die ursprüngliche Eingabe schließen.

Anwendung

Überall da, wo (fremde)Passwörter gespeichert werden sollen. Man stelle sich vor, wir melden uns bei z.B. Youtube an. Würde unser Passwort direkt in der Datenbank liegen, so hätten wir ein Problem: Kommt jemand an die Datenbank, so sind neben unseren Daten auch unsere Passwörter sichtbar. Jagt man aber das Passwort erst durch eine Hashfunktion, liegt dor nur eine kryptische Zeichenkette. Auch wenn der Algorithmus dabei steht (und das tut er), so kann der Angreifer nicht auf das ursprüngliche Passwort schließen. Wir aber können uns mit Passwort anmelden: Das Passwort, welches wir eingeben, wird auch nochmal gehasht und dann mit dem vorhandenen gehashten in der Datenbank verglichen. Einfach und wirksam.

Schwächen

Bei Passwörtern mit bis zu acht Zeichen Eingabelänge gibt es sogenannte "Rainbow-Tabellen". Diese Datenbanken sind locker mehrere Terrabyte (TiB) groß. Ungesalzene Hashes sind daher mit einfachen vergleichen umkehrbar, indem man einfach in eine Datenbank guckt.

Beispiele

HashnameVon wannBitzahlNullbyte als Hash
MD5 (unsicher)1991128d41d8cd98f00b204e9800998ecf8427e
SHA-1 (unsicher)1994160da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA-224 (zu kurz)2002224d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
SHA-256 (noch kurz)2002256e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
SHA-384 (noch kurz)200238438b060a751ac96384cd9327eb1b1e36a21fdb71114be0743 4c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
SHA-512 (i.O.)2002512cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce 47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
Whirlpool-T (sicher)200351219fa61d75522a4669b44e39c1d2e1726c530232130d407f89afee0964997f7a7 3e83be698b288febcf88e3e03c4f0757ea8964e59b63d93708b138cc42a66eb3

Gesalzene Hashes

Definition

Ein gesalzenes Hash (engl. salted hash) ist ein gehashter Wert, bei dem dem Eingabewert vor dem Hashen Bytes (das Salt) angehängt werden oder diese anderweitig miteinander verknüpft werden (z.B. mit Bitverschiebung). Dadurch steigt der Aufwand, auf ein ursprüngliches  Passwort zu schließen um ein Vielfaches, selbst wenn das Hash und das Salt sowie die Algorithmen bekannt sind.

Verschlüsselung

Symmetrische Verschlüsselung

Definition

Bei der Verschlüsselung handelt es sich um ein umkehrbares Unkenntlichmachen von Texten, Bildern etc. Dabei wird oftmals ein Passwort als Schlüssel verwendet, moderne Kryptographie am Computer lässt aber auch eine Datei zu. Ziel ist auch hier, eine möglichst zufällig aussehende Ausgabe zu erzeugen. Sie sollte keinesfalls Rückschlüsse auf den verwendeten Algorithmus oder gar auf die Eingabe zulassen.

Anwendung

Überall dort, wo sicherer Datentransport herrschen soll, und auf beiden Seiten mit dem selben Kennwort ver- und entschlüsselt werden soll.

Schwächen

Die große Schwäche ist der Transport des Schlüssels. Sinn der Verschlüsselung ist ja, dass ein Chiffretext in die Hände eines Spiones fallen kann, der diesen aber nicht knacken kann. Aber auch der Schlüssel, bzw. das Passwort muss zur Gegenseite gelangen. Und hier ist die Abfanggefahr riesig, so dass niemand mehr für die Vertraulichkeit der Daten gewährleisten kann.

Beispiele

Die bekanntesten Algorithmen sind:AES ist der von der amerikanischen Regierung herausgegebene Standard. Viele sprechen vom AES-Algorithmus, was nicht ganz richtig ist. AES selbst steht nämlich für "Advanced Encryption Standard" und stellt selbst keinen Algorithmus dar. Rijndael ist nicht ganz so sicher wie Twofish oder Serpent, hat aber dennoch die Ausschreibung gewonnen, da es besser in Hardware zu implementieren ist.

Assymmetrische Verschlüsselung

Definition

Bei Asymmetrischer Verschlüsselung handelt es sich um eine geniale Technik: Mit hilfe von Primzahlen bzw. Primfaktorzerlegung wird ein geheimer Schlüssel und ein öffentlicher Schlüssel erstellt. Man kann sich das gut so vorstellen:
  • Privater Schlüssel = Sicherheitsschlüssel für ein Schloss
  • Öffentlicher Schlüssel = Schnappschloss
Damit ist das oben genannte Problem der Schlüsselübertragung gelöst. Außerdem ermöglicht es, Nachrichten digital zu signieren. Nun kann man seinen öffentlichen Schlüssel überall Publik machen. Möchte Bob an Alice eine verschlüsselte Nachricht schicken, so braucht er ihren öffentlichen Schlüssel. Niemand außer Alice kann dann mehr das Chiffrat lesen. Alice kann wiederum mit ihrem geheimen Schlüssel das "Schnappschloss" und damit die verschlüsselte Nachricht lesbar machen.

Anwendung

An sich überall: E-Mails, Dateiverschlüsselung, Ausweise etc. Durch die Tatsache, dass private Schlüssel nicht mehr ausgetauscht werden müssen, wird es überall da eingesetzt, wo nicht zwingend noch symmetrische Verschlüsselung notwendig ist. Die Signaturfunktion wird zum Beispiel zum Upload von Debian-Paketen auf launchpad benötigt.

Schwächen

Schwächen gibt es höchstens im Algorithmus oder in zu kurzer Schlüssellänge. Das Problem bei asymmetrischen Algorithmen ist, dass sie viel mehr Bits brauchen: 4096 sind hier normal, gegenüber 256 bis 512 bei symmetrischen Verfahren. Das geht natürlich auf die Rechenzeit.

Beispiele

Das bekannteste Beispiel ist GnuPG zur Verschlüsselung und Signierung von E-Mails. Weitere Infos gibt es auf deren Homepage www.gnupg.org. Mit Dem Plugin Enigmail für Thunderbird kann man dann äußerst einfach E-Mails an Freunde verschlüsseln oder sie signieren.

Addendum

Sichere Passwörter

Natürlich müssen die Passwörter, die zusammen mit diesen Algorithmen verwendet werden, weiterhin sicher sein. Wie man gute Passwörter erstellt habe ich bereits im vorigen Artikel erwähnt. Wer sich zusätzlich noch ein Essay von Bruce Schneier durchlesen möchte, kann das hier tun: Schneier on Security: Choosing secure passwords.

Weiterführende Links: