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
Hashname | Von wann | Bitzahl | Nullbyte als Hash |
---|
MD5 (unsicher) | 1991 | 128 | d41d8cd98f00b204e9800998ecf8427e |
SHA-1 (unsicher) | 1994 | 160 | da39a3ee5e6b4b0d3255bfef95601890afd80709 |
SHA-224 (zu kurz) | 2002 | 224 | d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f |
SHA-256 (noch kurz) | 2002 | 256 | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
SHA-384 (noch kurz) | 2002 | 384 | 38b060a751ac96384cd9327eb1b1e36a21fdb71114be0743 4c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b |
SHA-512 (i.O.) | 2002 | 512 | cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce 47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e |
Whirlpool-T (sicher) | 2003 | 512 | 19fa61d75522a4669b44e39c1d2e1726c530232130d407f89afee0964997f7a7 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: